Bonjour,
J'essaie de créer une liste à partir de données que j'ai en colonne sur une même feuille. Cette plage de cellules est variable, elle va augmenter au fur et à mesure qu'on va remplir le fichier.
Quand je fais un apprentissage, VBA me donne ça :
Ca me fait bien une liste en G5 des données contenues en C4:C9
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub liste() ' liste Macro Range("G5").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$C$4:$C$9" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub
Sauf que dans mon cas, la cellule C9 n'est pas figée.
Donc j'introduis une variable Ligne (on peut la considérer comme constante vu qu'elle déterminée par une boucle un peu plus haut)
Donc dans ma ligne 7, je veux non plus C9, mais la cellule (Ligne,C)
Les $ ne servent à rien, ça fonctionne toujours quand on les retire.
Je suis finalement arrivé à cette expression :
Quand on considère que Ligne = 4 (en retirant la boucle au dessus), ça fonctionne : j'ai bien le contenu de C4 dans G5, avec un menu déroulant. Quand on prend toute la boucle, le programme fonctionne jusqu'à "Range("G5").Select" et après il passe en mode débogage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Dim Ligne As Integer Sub lignes() Ligne = 4 Do While Cells(Ligne, 3) <> "" Ligne = Ligne + 1 Loop Ligne = Ligne - 1 MsgBox Ligne Range("G5").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=Range(Cells(4, 3), Cells(Ligne, 3)) .IgnoreBlank = True .InCellDropdown = True .InputTitle = "Date" .ErrorTitle = "Erreur" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub
Quelqu'un saurait m'aider?
Partager