[Excel] Définir plage à partir de variables

Résolu/Fermé
xjl - 27 mars 2007 à 17:03
xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 - 29 mars 2007 à 10:12
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
A voir également:

2 réponses

xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
28 mars 2007 à 10:23
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 ?
0
likum Messages postés 14 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 6 mai 2008 3
28 mars 2007 à 14:05
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à.
0
xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
28 mars 2007 à 14:19
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à... ;-)
0
xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
28 mars 2007 à 15:12
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
0
xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
29 mars 2007 à 08:55
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:

https://www.cjoint.com/?dDi1e4CMjm

Merci à tous pour vos efforts...
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 718
29 mars 2007 à 09:55
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"

0
xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
29 mars 2007 à 10:12
Merci beaucoup, ça marche impec ! :D
0