Tri automatique Excel VBA

Antoine_SIG

XLDnaute Nouveau
Bonjour,
Je ne suis pas fort en VB (je débute à peine) et je n'ai pas saisi les quelques explications de sujets similaires. Je pose donc la question :
Dans mon tableau excel :
A2 = GEGE ; B2 = adresse GEGE
A3 = FIFI ; B3 = adresse FIFI
A4 = DEDE ; B4 = adresse DEDE
A5 = COCO ; A5 = adresse COCO
... Ax ; Bx...

Je peux classer ce tableau par ordre alphabétique sur la colonne A. J'obtiens alors :
A2 = COCO ; B2 = adresse COCO
A3 = DEDE ; B3 = adresse DEDE
A4 = FIFI ; B4 = adresse FIFI
A5 = GEGE ; B5 = adresse GEGE
Ax ; Bx

Mais je saisis régulièrement de nouvelles lignes. Par exemple, là, je voudrais ajouter :
A6 = BABA ; B6 = adresse BABA.

Dès que la saisie est effectuée sur la cellule A6, et sans le moindre clic supplémentaire de ma part, je voudrais que Excel réordonne l'ensemble de mes lignes par un tri automatique pour obtenir :
A2 = COCO ; B2 = adresse COCO
A3 = BABA ; B3 = adresse BABA
A4 = DEDE ; B4 = adresse DEDE
A5 = FIFI ; B5 = adresse FIFI
A6 =GEGE ; B6 = adresse GEGE
Ax ; Bx

... Comment qu'c'est-y qu'ça s'fait ?

Merci d'avance !... C'est assez urgent pour moi.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Tri automatique Excel VBA

Bonjour Antoine, bonjour le forum,

La macro événementielle ci-dessous est à placé dans le composant Worksheet de l'onglet où tu veux qu'elle agisse (Feuil1(Feuil1) par exemple).

Elle n'agira que losrque tu auras édité le nom et l'adresse.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub 'si le changement n'a pas lieu dans la colonne B, sort de la procédure
If Target.Offset(0, -1).Value = "" Then Exit Sub 'si la colonne A est vide sort de la procédure
'tri
Range("A1").CurrentRegion.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
 

Antoine_SIG

XLDnaute Nouveau
Re : Tri automatique Excel VBA

Bonjour,

Voir PJ

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 And Target.Count = 1 Then
    nom = Target
    [A2:C1000].Sort key1:=[A2]
    [A:A].Find(what:=nom).Select
  End If
End Sub

JB
Formation Excel VBA JB
Merci pour la réponse, c'est ce que je voulais. Toutefois, je vais avoir 52 feuilles. Pour ne pas copier ce code VB 52 fois, je voudrais l'intégrer dans un module et l'appeler à partir de chaque feuille. Je ne parviens pas à faire cette opération. Peux-tu m'aider ?
Merci d'avance
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Tri automatique Excel VBA

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Target.Column = 1 And Target.Count = 1 Then
    nom = Target
    [A2:C1000].Sort key1:=[A2]
    [A:A].Find(what:=nom).Select
  End If
End Sub


JB
 

Antoine_SIG

XLDnaute Nouveau
Re : Tri automatique Excel VBA

Merci...
Euh, bon, encore quelques questions :
1 - Je vais avoir 52 feuilles qui appelleront le tri automatique. Si je veux écrire ce code une seule fois et l'appeler depuis chacune de ces feuilles, où dois-je écrire ce code et comment ? Dois-je l'écrire dans un module que je crée ? Dans ce cas, que dois-je écrire dans chaque feuille pour appeler le script ?

2 - le script du fichier TriDyn fonctionne parfaitement. Mais je me rends compte qu'il se met à buguer si je protège et verrouille les cellules de la colonne B. Que dois-je faire pour régler le problème et m'autoriser la protection de certaines plages de cellules ?

3 - le tri automatique s'effectue sur la colonne A comportant des codes à 6 caractères de type 140012. Mais je voudrais pouvoir saisir des codes de type 001254 en gardant les 2 premiers zéros. J'imagine que je dois donc me mettre en format texte mais le script ne fonctionne plus... Comment adapter ce script pour garder les zéros qui apparaissent en tant que premiers caractères ?

Merci.

P.S. : j'envoie le fichier pour aider vos réponses. Merci encore. Et désolé pour ma nullité mais je me soigne et potasse les bouquins (mais depuis seulement 2 jours !).
 

Pièces jointes

  • Fichier_SIG75.xls
    35 KB · Affichages: 322

Discussions similaires

Réponses
0
Affichages
1 K

Statistiques des forums

Discussions
312 506
Messages
2 089 119
Membres
104 037
dernier inscrit
damsau