tri automatique en VBA

snoopy07

XLDnaute Occasionnel
Bonjour

actuellement j' utilise la formule suivante:

ActiveWorkbook.Worksheets("Carnet").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Carnet").AutoFilter.Sort.SortFields.Add Key:=Range( _
"B2:B" & numLigneVide), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Carnet").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

pour mon tri par ordre alphabétique

celle ci me fait le tri sur les noms mais ne tient pas compte des prénoms
Exemples: Dupont Marcel
Dupont Henri
Dupont Sophie
Dupont André

quelle formules doit je rajouter pour avoir aussi les prénoms par ordre alphabétique

exemple: Dupont André
Dupont Henri
Dupont Marcel
Dupont Sophie
Les Nom se trouve surLa colonne B et les Prénoms sur la colonne C

Merci d 'avance pour votre aide

Cordialement
 

jpb388

XLDnaute Accro
Re : tri automatique en VBA

Bonjour a tous
Code:
Sub trier()
 With ActiveWorkbook.Worksheets("Carnet").AutoFilter.Sort
 .SortFields.Clear
 .SortFields.Add Key:=Range("B2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
 xlSortNormal
 .SortFields.Add Key:=Range("C2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
 xlSortNormal
 .SetRange ("B2:C" & numLigneVide)
 .Header = xlYes
 .MatchCase = False
 .Orientation = xlTopToBottom
 .SortMethod = xlPinYin
 .Apply
 End With
End Sub
 

snoopy07

XLDnaute Occasionnel
Re : tri automatique en VBA

bonjour

ca ne marche pas car j'ai oubli de dire que ma formule est dans un formulaire avec private sub voici ma formule complete

Private Sub cmdAjouter_Click()
Dim numLigneVide As Integer
'on active la feuille "Carnet"
Worksheets("Carnet").Activate
'on trouve la derniere ligne vide du tableau et on enregistre le numéro de ligne dans la variable numLigneVide
numLigneVide = ActiveSheet.Columns(2).Find("").Row
'on verifie que les champs obligatoire sont correctement remplis
If txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom de votre contact", vbCritical, "Champs manquant"
txtNom.SetFocus
ElseIf txtPrénom.Text = "" Then
MsgBox "Veuillez remplir le prénom de votre contact", vbCritical, "Champs manquant"
txtPrénom.SetFocus
Else
'on remplit les données dans notre tableau
ActiveSheet.Cells(numLigneVide, 1) = Civilite.Text
ActiveSheet.Cells(numLigneVide, 2) = UCase(txtNom.Text)
ActiveSheet.Cells(numLigneVide, 3) = Application.Proper(txtPrénom.Text)
ActiveSheet.Cells(numLigneVide, 4) = Application.Proper(txtSurnom.Text)
ActiveSheet.Cells(numLigneVide, 5) = txtPortable.Text
ActiveSheet.Cells(numLigneVide, 6) = txtFixe.Text
ActiveSheet.Cells(numLigneVide, 7) = txtBoulot.Text
ActiveSheet.Cells(numLigneVide, 8) = txtEmail1.Text
ActiveSheet.Cells(numLigneVide, 9) = txtEmail2.Text
ActiveSheet.Cells(numLigneVide, 10) = Application.Proper(txtAdresse.Text)
ActiveSheet.Cells(numLigneVide, 11) = txtCp.Text
ActiveSheet.Cells(numLigneVide, 12) = Application.Proper(txtVille.Text)
'on efface le formulaire et on replace le curseur sur le premier champs (Civilite)
Civilite.Text = ""
txtNom.Text = ""
txtPrénom.Text = ""
txtSurnom.Text = ""
txtPortable.Text = ""
txtFixe.Text = ""
txtBoulot.Text = ""
txtEmail1.Text = ""
txtEmail2.Text = ""
txtAdresse.Text = ""
txtCp.Text = ""
txtVille.Text = ""
Civilite.SetFocus
'on fait le tri par ordre alphabétique automatiquement sur la collonne Nom
ActiveWorkbook.Worksheets("Carnet").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Carnet").AutoFilter.Sort.SortFields.Add Key:=Range( _
"B2:B" & numLigneVide), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Carnet").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End Sub

cordialement
 

jpb388

XLDnaute Accro
Re : tri automatique en VBA

re
Code:
    ActiveWorkbook.Worksheets("Carnet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Carnet").Sort.SortFields.Add Key:=Range("B2:B" & numLigneVide), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Carnet").Sort.SortFields.Add Key:=Range("C2:C" & numLigneVide), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Carnet").Sort
        .SetRange Range("B2:C" & numLigneVide)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 

snoopy07

XLDnaute Occasionnel
Re : tri automatique en VBA

re

je te remercie pour ton aide mais j'ai encore deux petit problème
Le premier: j ai modifie ton code pour que ça tienne compte de mes autre colonne et ça marche sauf pour la colonne A que je n'arrive pas a programmer
le deuxième problème que j'ai c'est dans mon formulaire d'ajout d'un nouveau contact
je n'arrive pas a programmer ma combobox pour Ville
j ai fais une liste Nommer C.P. qui contient les code postaux et une deuxième liste nommer Villes qui contient les Villes
ce que je veux c'est quand je tape un code postale dans mon formulaire que dans ma combobox ville s affiche les ville correspondante
je sais programmer une liste déroulante avec la fonction décaler voir modèle en Feuil1 mai je n'arrive pas dans ma combobx

je joins mon fichier
http://cjoint.com/?0Ewtc0ooizp

merci d avance

cordialement
 

jpb388

XLDnaute Accro
Re : tri automatique en VBA

Bonsoir le forum
Regarde si cela te va
pour le tri le nom et le prénom devrait suffire pourquoi faire un tri sur chaque colonne?
 

Pièces jointes

  • 0Ewtc0ooizp_repertoire_telephonique_-_copie.xlsm
    45.6 KB · Affichages: 86
  • 0Ewtc0ooizp_repertoire_telephonique_-_copie.xlsm
    45.6 KB · Affichages: 91
  • 0Ewtc0ooizp_repertoire_telephonique_-_copie.xlsm
    45.6 KB · Affichages: 92

snoopy07

XLDnaute Occasionnel
Re : tri automatique en VBA

Bonjour

je te remercie de ton aide

pour le tri sur mon tableau quand j'ajoutais un nouveau contact ça me décaler tous alors j'ai programme le tri sur chaque colonne est ça marcher

pour la combobox c'est exactement ca que je voulais

une dernière question au sujet de la colonne civilité elle se décale a chaque fois quand je rentre un nouveau contact

exemple dans mon tableau il y a :

Mr Dupont Louis
Mr Dupont Marc

et que j'ajoute Mme Dupont Annie voici ce que ca donne

Mr Dupont annie
Mr Dupont louis
Mme Dupont Marc

et si j'ajoute Dupont Amandine sans mettre de civilite voici ce que ca donne

Mr Dupont Amandine
Mr Dupont Annie
Mme dupont Louis
dupont marc

comment résoudre ce petit problème

cordialement
 

jpb388

XLDnaute Accro
Re : tri automatique en VBA

Bonjour le forum
voila c'est fait, test et tiens moi au courant
 

Pièces jointes

  • 0Ewtc0ooizp_repertoire_telephonique_-_copie.xlsm
    47.2 KB · Affichages: 77
  • 0Ewtc0ooizp_repertoire_telephonique_-_copie.xlsm
    47.2 KB · Affichages: 77
  • 0Ewtc0ooizp_repertoire_telephonique_-_copie.xlsm
    47.2 KB · Affichages: 86

snoopy07

XLDnaute Occasionnel
Re : tri automatique en VBA

Re

excuse moi de te deranger encore une fois car je viens de decouvrir un petit probleme

j ai rentre de nouveau code postaux tant que je ne suis pas arriver aux code postal 10000 tout marcher bien

maintenant que je suis a 10000 ca marche mal

avant 10000 quand je tape 01000 dans la case cp du formulaire la combobox affiche bien les trois villes qui corresponde a ce code

apres 10000 quand je tape 01000 dans la case cp du formulaire la combobox affiche la ville qui correspond aux code 10000 qui est Toyes

comment ressoudre se petit probleme

cordialement
 

jpb388

XLDnaute Accro
Re : tri automatique en VBA

re
replace l'ancienne par celle ci
Code:
Private Sub txtCp_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Lg&, i%, Sh As Worksheet, Ctl As Range
Set Sh = Sheets("Code Postaux")
On Error GoTo Erreur
For Each Ctl In Sh.Range("A2:A" & Sh.Range("A" & Rows.Count).End(xlUp).Row)
    If Me.txtCp = Ctl.Text Then
        Lg = Ctl.Row
        Exit For
    End If
Next Ctl
i = 3
Me.txtVille.Clear
Do
    Me.txtVille.AddItem Sh.Cells(Lg, i)
    i = i + 1
Loop Until Sh.Cells(Lg, i) = ""
triList
Me.txtVille.SetFocus
Me.txtVille.DropDown
Exit Sub
Erreur:
MsgBox "Ce code postal n'est pas répertorié", vbInformation + vbOKOnly, "Donnée Manquante"
Me.txtCp.SetFocus
Me.txtCp.Text = ""
End Sub
 

snoopy07

XLDnaute Occasionnel
Re : tri automatique en VBA

bonjour

je reviens vers vous car dans mon formulaire de contact j'ai rajouter 3 cases que je n'arrive pas a programmer

j ai rajouter Département ,Régions et Pays

je voudrais que la case Département et la case Régions ce remplisse automatiquement par rapport au code postal c'est a dire :

quand je tape un code postal je veux que la case département et la case région se remplisse toute seule

les département se trouve en Ac dans la feuille Code Postaux

les régions se trouve en AD dans la feuille Code Postaux

et je n'arrive pas a programmer ma liste déroulante pour les Pays , j ai fait une liste que j'ai nomme Pays qui se trouve de AE2 jusqu a AE236 dans la feuille Code Postaux




en espérant que vous puisez m'aider

Amicalement

Snoopy
 

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG