Microsoft 365 Tri automatique alphabétique VBA

  • Initiateur de la discussion Initiateur de la discussion AxelExcel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

AxelExcel

XLDnaute Nouveau
Bonjour à vous,

Je me présente brièvement, c'est la première fois que je viens sur ce forum. Je suis en activité dans une entreprise et habituellement nous utilisons très peu Excel or en ce moment nous sommes en confinement et je dois avouer que ce soit pour mes collègues ou moi-même nous avons perdu nos repère mais pour cela j'ai pensé à faire un tableau Excel afin de centraliser 90% de nos tâches qui peuvent être réalisé finalement dessus. Le confinement a du bon, je redécouvre Excel et l'immensité de possibilité qui s'offre à nous dès lors qu'on est patient et impliqué dans notre tâche.

C'était la brève présentation, maintenant le vif du sujet : je souhaite créer un tri alphabétique automatique (je pense que ça se fera via Visual Basic).

Je souhaiterais que, dès lors que la cellule de la colonne C soit "non vide" que cela effectue un tri par ordre alphabétique de la ligne entière par rapport à la cellule A

Je ne souhaite pas passer par le tri via les filtres, étant donné l'importance de la masse de notre saisie (nous serons plusieurs sur le fichier normalement, info à vérifier). Je ne souhaite pas non plus passer par un bouton ou raccourci pour déclencher le tri.

L'objectif étant que ce soit dynamique et actualisé en temps réel. J'espère que c'est possible.

A titre d'exemple, je vous joints un tableau test (les informations sont évidemment modifiées). J'ai gardé la même mis en forme avec le même nombre de colonne.

Je remercie déjà les personnes qui vont me lire et me répondre et je vous souhaite une bonne journée à tous.
AxelExcel
 

Pièces jointes

Bonjour Axel, et Bienvenu sur XLD.

Euh ....
Je souhaiterais que, dès lors que la cellule de la colonne C soit "non vide" que cela effectue un tri par ordre alphabétique de la ligne entière par rapport à la cellule A
Comment trier la ligne A par ordre alphabétique ?

Est ce que vous voulez trier votre tableau par rapport à la date de naissance dès l'instant où une date de naissance à changée ? Comme le montre l'exemple ?
 
Re Bonjour le fil,

Roblochon, si j'ajoute un nom et une date de naissance à la fin de la liste dans votre fichier, j'obtiens une erreur sur la ligne :
VB:
.Add2 Key:=rng, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 
Bonjour Sylvanu,

Je n'obtiens aucune erreur en faisant la même chose. Quel message d'erreur avez-vous, avec quelle version excel ?

[Edit]
Remplacer la méthode .Add2 (qui n'a pas de raison d'être effectivement) par la méthode .Add :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    ' Si target représente plus d'une cellule -> sortir
    If Target.CountLarge > 1 Then Exit Sub
    With ListObjects("Datas")
        ' Si aucune ligne de données n'est présente dans le tableau
        If .DataBodyRange Is Nothing Then Exit Sub
        ' Si target n'est pas en colonne 3 des données du tableau -> sortir
        If Intersect(Target, ListObjects("Datas").DataBodyRange.Columns(3)) Is Nothing Then Exit Sub
        ' si target n'est pas vide -> lancer le tri
        If Not IsEmpty(Target) Then
            ' Première cellule des données
            Set rng = .DataBodyRange.Cells(1, 1)
            With .Sort
                With .SortFields
                    .Clear
                    .Add Key:=rng, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                End With
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End If
    End With
End Sub

[Re - Edit] ai rajouté un contrôle sur la présence de données dans le tableau sinon boum !!!




Cordialement
 
Dernière édition:
Merci beaucoup à vous deux pour vos réponses !

Après test, cela fonctionne bien sur mon tableau d'origine. C'est parfait.

Cependant lorsque je saisie et que je fait "tab" ou "Entrée" je suis directement ramené tout en haut de mon tableau en cellule A1, est-ce normal ?
 
Bonjour AxelExcel, sylvanu, Roblochon,

Avec 2 tris successifs :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [A1].CurrentRegion
    .Sort .Columns(3), Header:=xlYes 'tri sur les dates pour placer les cellules vides en bas
    .Resize(Application.Count(.Columns(3)) + 1).Sort .Columns(1), xlAscending, Header:=xlYes 'tri sur les noms avec dates
End With
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
393
Retour