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