Rechercher : dans
Par :

[Excel] Définir plage à partir de variables

Dernière réponse le 29 mar 2007 à 10:12:45 xjl, le 27 mar 2007 à 17:03:44 
 Signaler ce message aux modérateurs

Bonjour,

je cherche à définir une plage à partir de variable, c'est à dire faire qqchose du genre:

Range("Cells(a,b):Cells(c,d)")

Bien évidemment, cette syntaxe ne fonctionne pas...

Est-ce que quelqu'un saurait comment je peux faire svp ?

Merci d'avance

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [Excel] Définir plage à partir de variables » dans :
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...

1

xjl, le 28 mar 2007 à 10:23:22

Je précise un peu ma question:

y1 = 500 + m
y2 = 500 + m
x1 = 2
x2 = 2 + n


For i = 0 To m
If v = Cells(ligne + i, 1).Value Then

With Cells(l, c + 1).Validation
.Add xlValidateList, xlValidAlertStop, xlBetween, Cells(y1, x1), Cells(y2, x2)
.InCellDropdown = True
End With

End If
Next i

J'ai essayé ça aussi, ça ne fonctionne pas...
Comment pourrais-je faire svp ?

Répondre à xjl

2

likum, le 28 mar 2007 à 14:05:04

Salut!

Pour accéder à des cellules il y a deux façon, soit
celle que tu connais, soit celle que t'as essayé en te trompant
un petit peu:

Pour une plage c'est simple:
Range(cells(row1,col1),cells(row2,col2)).select

Tu peux alors sélectionner un morceau colonne, un morceau de ligne ou
même un tableau

VOilà.

Répondre à likum

3

xjl, le 28 mar 2007 à 14:19:29

Merci Likum, mais ça ne fonctionne toujours pas, la ligne soulignée pose problème:

With Cells(l, c + 1).Validation
.Add xlValidateList, xlValidAlertStop, xlEqual, "=Range(Cells(y1, x1), Cells(y2, x2))"
.InCellDropdown = True
End With

Faut-il xlEqual ou xlBetween, et surtout, comment faire référence correctement à la plage voulue dans ce cas précis ?

Je désespère là... ;-)

Répondre à xjl

4

xjl, le 28 mar 2007 à 15:12:53

Ca non plus, ça ne marche pas:

If v = Cells(ligne + i, 1).Value Then
vaList = VBA.Array(Cells(y1, x1), Cells(y2, x2))
With Cells(l, c + 1).Validation
.Delete
.Add xlValidateList, xlValidAlertStop, xlBetween, Formula1:=vaList
.InCellDropdown = True
End With
End If

Répondre à xjl

5

xjl, le 29 mar 2007 à 08:55:24

Bonjour,

pour ceux qui auraient encore un peu de mal à cerner le problème, voici un petit fichier pour mieux comprendre le but de la macro:

http://cjoint.com/?dDi1e4CMjm

Merci à tous pour vos efforts...

Répondre à xjl

6

gbinforme, le 29 mar 2007 à 09:55:56

Bonjour

si tu remplaces ton instruction :

.Add xlValidateList, xlValidAlertStop, xlBetween, Formula1:=Range(Cells(y1, x1), Cells(y2, x2))

par celle-ci, cela devrait fonctionner :

.Add xlValidateList, xlValidAlertStop, xlBetween, Formula1:="=" & Chr(x1 + 64) & y1 & ":" & Chr(x2 + 64) & y2


car "Formula1" attend une syntaxe du type "B25:D25"


toujours zen

Répondre à gbinforme

7

 xjl, le 29 mar 2007 à 10:12:45
  • +2

Merci beaucoup, ça marche impec ! :D

Répondre à xjl