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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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: 10
  • message de deboogage.JPG
    message de deboogage.JPG
    85.9 KB · Affichages: 13
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

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:
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.
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
Réponses
5
Affichages
2 K
GClaire
G
Retour