Microsoft 365 Tri automatique alphabétique VBA

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

  • Test VBA tri alpa auto.xlsm
    9.6 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
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 ?
 

Roblochon

XLDnaute Barbatruc
Bonjour,

Dans le fichier joint, sur la feuille 'Feuil1', j'ai copié vos données puis ai transformé la plage de cellules en tableau structuré.

Pour le tri il s'effectue comme celui de sylvanu, par la colonne des noms sur changement d'une date de naissance.

Cordialement
 

Pièces jointes

  • Test VBA tri alpa auto.xlsm
    19.1 KB · Affichages: 11

Roblochon

XLDnaute Barbatruc
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:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je suis sous XL2007.

Erreur d’exécution 438. "Propriétés non gérés par cet objet."
1.jpg
 

AxelExcel

XLDnaute Nouveau
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 ?
 

job75

XLDnaute Barbatruc
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

  • Test VBA tri alpa auto(1).xlsm
    16.3 KB · Affichages: 1
Haut Bas