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

Yusufu ibn Anurahi

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.
 

Fichiers joints

Yusufu ibn Anurahi

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>
 

Fichiers joints

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:

fanfan38

XLDnaute Accro
Bonjour,
Bien vu chalet53... Pourquoi faire compliquer quand on peut faire simple...
Bien que ton derligne=lastnow....
Bonne journée
A+ François
 

CHALET53

XLDnaute Barbatruc
Exact
Modifier lastrow
lastrow = Range("B1048576").End(xlUp).Row + 1
Puisqu'on écrit plus rien dans la colonne A
 

Yusufu ibn Anurahi

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.
 

Yusufu ibn Anurahi

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+
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas