[Excel] Définir plage à partir de variables [Résolu/Fermé]

Signaler
-
Messages postés
232
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
12 juin 2007
-
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

2 réponses

Messages postés
232
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
12 juin 2007
181
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 ?
Messages postés
14
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
6 mai 2008
3
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à.
Messages postés
232
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
12 juin 2007
181
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à... ;-)
Messages postés
232
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
12 juin 2007
181
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
Messages postés
232
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
12 juin 2007
181
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...
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 471
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"

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