Je reviens vers vous car certaines incertitudes dues à mes modestes connaissances en VBA me chagrinent. Explication, ma base de données contient 25 colonnes du reste toutes ne sont pas forcément remplies et d’autres contiennent des formules après chaque insertion via un bouton sur l’Userform les données sont triées en ordre croissant pour ce faire j’ai utilisé l’enregistreur de Macro j’ai donc sélectionné la colonne des noms en l’occurrence la C et j’ai nommé le code qui en résulte Trier.
Ma réflexion est la suivante, compte tenu du nombre de colonnes avec en moyenne 400 abonnées.
Le code issu de l’enregistreur de macro ci dessous est – il suffisamment performant ?
En effet, existe – il un risque de sorte que les renseignements relatifs aux intéressés se concatènent sans cohérence après le tri ? Exemple :
Avant le tri
Nom Z Prénom Z Adresse Z Etc ……
Nom A Prénom A Adresse A Etc…..
Après le tri
Nom A Prénom Z Adresse A
Nom Z Prénom A Adresse Z
Merci à tous ceux qui m’accorderont quelques instants pour me répondre
Merci infiniment Lone Wolf d'avoir encore une fois consacré quelques instants afin d'améliorer le code pour trier mes données.
je me permets de te poser une question supplémentaire qui me vient à l'esprit si j'attribue une zone de nom à mon tableau que je nommerai "Usagers" par exemple via la formule suivante DECALER + NBVAL histoire de le rendre dynamique en effet pour le moment le trie s'effectue uniquement dans la zone "a2:v500"
alors est ce que le code ci dessous fonctionneraient aussi ?
Sub Trier()
With Sheets("BD")
.Range("Usagers").Sort .Range("c2"), xlAscending
End With
End Sub
Vu que la plage s'arrête à 500, pas besoin de mettre un nom; mais le code va fonctionner la même chose. Tu peux aussi créer une variable, exemple:
VB:
Option Explicit
Sub Trier()
Dim Usagers As Range
With Sheets("BD")
Set Usagers = .Range("a2:v500")
Usagers.Sort .Range("c2"), xlAscending
End With
End Sub
Vu que la plage s'arrête à 500, pas besoin de mettre un nom; mais le code va fonctionner la même chose. Tu peux aussi créer une variable, exemple:
VB:
Option Explicit
Sub Trier()
Dim Usagers As Range
With Sheets("BD")
Set Usagers = .Range("a2:v500")
Usagers.Sort .Range("c2"), xlAscending
End With
End Sub
D'accord donc si la plage ne dépasse pas 500 je reste avec le code que tu m'as conseillé avec variable ou pas en revanche dans le cas contraire je peux attribué un nom ma plage ou modifier le code comme ceci
.Range("a2:v1000").Sort .Range("c2"), xlAscending
Encore merci pour ta disponibilité et surtout tes conseilles avisés
Si la plage est dynamique(de 2 à 65536 lignes), tu écrit le code comme ceci.
VB:
Option Explicit
Sub Trier()
Dim Usagers As Range, derlig As Long
With Sheets("BD")
derlig = .Range("a" & Rows.Count).End(xlUp).Row
Set Usagers = .Range("a2:v" & derlig)
Usagers.Sort .Range("c2"), xlAscending
End With
End Sub