XL 2013 Saisie Alphabétique Automatisée à l'aide d'un Userform

Joseph Haroun

XLDnaute Junior
Bonjour/Bonsoir !
J’ai un fichier attaché en annexe où je saisir les données sur une feuille Excel à travers un formulaire.
Ma difficulté réside dans le faire que la colonne. ''B" qui reçoit les noms et prénoms est organisée par ordre alphabétique de manière automatique.
Lorsque le nom est envoyé en bon ordre, le reste des colonnes ne suit pas. Comment résoudre cette difficulté ? Merci d’avance pour votre aide.
 

Pièces jointes

  • Formulaire de saisie avec Tri alphabétique automatique des données-.xlsm
    41.7 KB · Affichages: 16

fanfan38

XLDnaute Barbatruc
Bonjour
J'espère avoir résolu ton problème...
En fait après l’enregistrement du nom et du prénom je fais une recherche de la ligne ou se trouve ce nom dans la colonne b...
A+ François
 

Pièces jointes

  • Formulaire de saisie avec Tri alphabétique automatique des données-.xlsm
    39.8 KB · Affichages: 11

Joseph Haroun

XLDnaute Junior
Bonjour
J'espère avoir résolu ton problème...
En fait après l’enregistrement du nom et du prénom je fais une recherche de la ligne ou se trouve ce nom dans la colonne b...
A+ François
Salut fanfan38,
Je reviens pour signaler que l'essai de ta solution génère des messages d'erreur d'exécution dont j'attache des images ici.
En effet, ce message de débogage apparaît lorsque l'on vide les données pour entrer des nouvelles.
Est-ce dû à une mauvaise manipulation de ma 6>
 

Pièces jointes

  • Message d'erreur d'exécution '91'.JPG
    Message d'erreur d'exécution '91'.JPG
    98.2 KB · Affichages: 8
  • message de deboogage.JPG
    message de deboogage.JPG
    85.9 KB · Affichages: 8

fanfan38

XLDnaute Barbatruc
J'ai corrigé le problème mais la 2ème ligne, (je ne sais pas pourquoi) la fonction "find" ne marche pas donc les 2 premier doivent se suivre...
A+ François
(je regarderai quand j'aurai un moment pour améliorer)
A+ François
 

Pièces jointes

  • Formulaire de saisie avec Tri alphabétique automatique des données-.xlsm
    38.7 KB · Affichages: 9

CHALET53

XLDnaute Barbatruc
Bonjour,
Pourquoi passer par une colonne intermédiaire (colonne A)
Ecrire directement en colonne B et procéder à un tri dans le programme de validation de la saisie. Supprimer toutes les formules de la colonne B

Private Sub cmdValider_Click()
Application.ScreenUpdating = False
'declaration de la variable
Dim lastrow As Integer, ctrl As Control, c As Range
'procedure sur les champs de remplissage
lastrow = Range("A1048576").End(xlUp).Row + 1
Cells(lastrow, 2).Value = Me.TextBox1.Value
'If lastrow > 2 Then
'Set c = Range("B1:B" & lastrow).Find(what:=TextBox1.Value, LookAt:=xlWhole)
'On Error Resume Next
'lastrow = c.Row
'End If
Cells(lastrow, 3).Value = Me.TextBox2.Value
Cells(lastrow, 4).Value = Me.TextBox3.Value
Cells(lastrow, 5).Value = Me.TextBox4.Value
Cells(lastrow, 6).Value = Me.TextBox5.Value
Cells(lastrow, 7).Value = Me.TextBox6.Value
Cells(lastrow, 8).Value = Me.TextBox7.Value
Cells(lastrow, 9).Value = Me.TextBox8.Value
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then
ctrl.Value = ""
End If
Next ctrl

derligne = Range("B65530").End(xlUp).Row
Range("B2:J" & derligne).Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal


Application.ScreenUpdating = True
'procedure pour que le curseur reste sur le premier champ de saisi
TextBox1.SetFocus
End Sub

a+
 
Dernière édition:

Joseph Haroun

XLDnaute Junior
Bonjour,
Pourquoi passer par une colonne intermédiaire (colonne A)
Ecrire directement en colonne B et procéder à un tri dans le programme de validation de la saisie. Supprimer toutes les formules de la colonne B

Private Sub cmdValider_Click()
Application.ScreenUpdating = False
'declaration de la variable
Dim lastrow As Integer, ctrl As Control, c As Range
'procedure sur les champs de remplissage
lastrow = Range("A1048576").End(xlUp).Row + 1
Cells(lastrow, 2).Value = Me.TextBox1.Value
'If lastrow > 2 Then
'Set c = Range("B1:B" & lastrow).Find(what:=TextBox1.Value, LookAt:=xlWhole)
'On Error Resume Next
'lastrow = c.Row
'End If
Cells(lastrow, 3).Value = Me.TextBox2.Value
Cells(lastrow, 4).Value = Me.TextBox3.Value
Cells(lastrow, 5).Value = Me.TextBox4.Value
Cells(lastrow, 6).Value = Me.TextBox5.Value
Cells(lastrow, 7).Value = Me.TextBox6.Value
Cells(lastrow, 8).Value = Me.TextBox7.Value
Cells(lastrow, 9).Value = Me.TextBox8.Value
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then
ctrl.Value = ""
End If
Next ctrl

derligne = Range("B65530").End(xlUp).Row
Range("B2:J" & derligne).Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal


Application.ScreenUpdating = True
'procedure pour que le curseur reste sur le premier champ de saisi
TextBox1.SetFocus
End Sub

a+
Salut CHALET53
Merci pour ta proposition. Je vais l'essayer et si ça convient à l'esprit de l'outil de travail, je l'adopterai volontier.
 

Joseph Haroun

XLDnaute Junior
Exact
Modifier lastrow
lastrow = Range("B1048576").End(xlUp).Row + 1
Puisqu'on écrit plus rien dans la colonne A
Bonsoir CHALET53
J'ai essayé ta solution ; elle me va correctement et m'épargne des contraintes de la formule matricielle.
Merci infiniment. Merci également à fanfan38 qui a commencé à trouver une solution sauvegardant la fonction matricielle.
A+
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390