Soleilburo
XLDnaute Nouveau
Bonjour à toutes et à tous, ceci est mon premier message ici
Je cherche à automatiser par un bouton le tri alphabétique d'une plage dynamique.
Comme je suis un simple utilisateur et que je ne connais ni pas les commandes ni le VBA, je laisse Excel enregistrer la macro tout seul comme un grand. Le code créé par excel donne ceci (où SERVICE est une plage de données dynamique avec la fonction DECALER)
Application.Goto Reference:="SERVICE"
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("C2:C11") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1: D11")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Le problème c'est que le range C2:C11 ou A1: D11 peut changer, il faudrait donc les remplacer par une valeur dynamique, à savoir une ligne de plus pour chaque nouvel enregistrement. Je pourrais mettre C2:C9000 et A1: D9000 mais je trouve cette solution peu élégante et je suis sûr qu'il y a moyen de faire autrement.
Mais, voilà, je ne sais pas comment faire et je n'ai pas trouvé de réponses à ce problème ...
D'avance merci pour votre aide sachant que je n'y connais rien en VBA et que je ne souhaite pas utiliser de commandes si possible
ci-joint le fichier car un xls vaut toujours mieux qu'un long discours
Je cherche à automatiser par un bouton le tri alphabétique d'une plage dynamique.
Comme je suis un simple utilisateur et que je ne connais ni pas les commandes ni le VBA, je laisse Excel enregistrer la macro tout seul comme un grand. Le code créé par excel donne ceci (où SERVICE est une plage de données dynamique avec la fonction DECALER)
Application.Goto Reference:="SERVICE"
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("C2:C11") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1: D11")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Le problème c'est que le range C2:C11 ou A1: D11 peut changer, il faudrait donc les remplacer par une valeur dynamique, à savoir une ligne de plus pour chaque nouvel enregistrement. Je pourrais mettre C2:C9000 et A1: D9000 mais je trouve cette solution peu élégante et je suis sûr qu'il y a moyen de faire autrement.
Mais, voilà, je ne sais pas comment faire et je n'ai pas trouvé de réponses à ce problème ...
D'avance merci pour votre aide sachant que je n'y connais rien en VBA et que je ne souhaite pas utiliser de commandes si possible
ci-joint le fichier car un xls vaut toujours mieux qu'un long discours