USF
Fermé
Utilisateur anonyme
-
13 mars 2022 à 20:31
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 14 mars 2022 à 11:09
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 14 mars 2022 à 11:09
3 réponses
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
14 mars 2022 à 10:56
14 mars 2022 à 10:56
Bonjour,
cela serait plus simple d'utiliser des ComboBox à la place des TextBox.
Avec des ComboBox il suffit de sélectionner l'item, tu n'auras pas de faute de frappe que tu peux avoir avec des TextBox.
En plus le code est plus simple, il suffit d'indiquer l'index sélectionné à tous les ComboBox
cela serait plus simple d'utiliser des ComboBox à la place des TextBox.
Avec des ComboBox il suffit de sélectionner l'item, tu n'auras pas de faute de frappe que tu peux avoir avec des TextBox.
En plus le code est plus simple, il suffit d'indiquer l'index sélectionné à tous les ComboBox
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié le 14 mars 2022 à 11:05
Modifié le 14 mars 2022 à 11:05
Bonjour Geoff, bonjour le forum,
Ton fichier modifié : https://www.cjoint.com/c/LCoj6aPGemT
J'ai remis les langues de l'UserForm dans le même ordre que celles du tableau (c'était couillon) ! J'ai rajouté un bouton pour remettre à zéro. Et le code ci-dessous :
Ton fichier modifié : https://www.cjoint.com/c/LCoj6aPGemT
J'ai remis les langues de l'UserForm dans le même ordre que celles du tableau (c'était couillon) ! J'ai rajouté un bouton pour remettre à zéro. Et le code ci-dessous :
Private Sub CommandButton1_Click() 'bouton "Traduction" Dim O As Worksheet 'déclare la variable O (Onglet) Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs) Dim I As Long 'déclare la variable I (Incrément) Dim J As Byte 'déclare la variable J (incrément) Dim COL As Byte 'déclare la variable COL (COLonne) Dim LI As Long 'déclare la variable LI (LIgne) Set O = Worksheets("Traduction") 'définit l'onglet O TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV For J = 1 To 5 'boucle sur les 5 TextBoxes 'si la textBox de la boucle n'est pas vide, définit la colonne COL, sort de la boucle If Me.Controls("TextBox" & J) <> "" Then COL = J: Exit For Next J 'prochaine TextBox de la boucle For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde) 'si la donnée ligne I colonne COL est égale à la valeur de la TextBox(COL), définit la ligne LI, sort de la boucle If TV(I, COL) = Me.Controls("TextBox" & COL).Value Then LI = I: Exit For Next I 'prochaine ligne de la boucle For J = 1 To 5 'boucle sur les 5 TextBoxes Me.Controls("TextBox" & J) = TV(LI, J) 'récupère dans la TextBox de la boucle la donnée ligne LI colonne J du tableau des valeurs TV Next J 'prochaine TextBox de la boucle End Sub Private Sub CommandButton2_Click() 'bouton "Quitter" Unload Me 'vide et ferme l'UserForm End Sub Private Sub CommandButton3_Click() 'Bouton "Vider" For J = 1 To 5 'boucle sur les 5 TextBoxes Me.Controls("TextBox" & J) = "" 'vide la TextBox de la boucle Next J 'prochaine TextBox de la boucle End Sub
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
14 mars 2022 à 11:09
14 mars 2022 à 11:09
Remplace le code dans le fichier par celui-ci. J'ai rajouté quelques lignes pour évité le bug si le texte tapé n'était pas trouvé:
Private Sub CommandButton1_Click() 'bouton "Traduction"
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim LI As Long 'déclare la variable LI (LIgne)
Set O = Worksheets("Traduction") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For J = 1 To 5 'boucle sur les 5 TextBoxes
'si la textBox de la boucle n'est pas vide, définit la colonne COL, sort de la boucle
If Me.Controls("TextBox" & J) <> "" Then COL = J: Exit For
Next J 'prochaine TextBox de la boucle
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
'si la donnée ligne I colonne COL est égale à la valeur de la TextBox(COL), définit la ligne LI, sort de la boucle
If TV(I, COL) = Me.Controls("TextBox" & COL).Value Then LI = I: Exit For
Next I 'prochaine ligne de la boucle
If LI = 0 Then 'si la Ligne LI n'est pas définie
MsgBox "Non trouvé !" 'message
With Me.Controls("TextBox" & COL) 'prend en compte la TextBox éditée
.SetFocus 'place le curseur
.SelStart = 0 'début de la sélection
.SelLength = Len(Me.Controls("TextBox" & COL).Value) 'longueur de la sélection
Exit Sub 'sort de la procédure
End With 'fin de la prise en compte de la TextBox éditée
End If 'fin de la condition
For J = 1 To 5 'boucle sur les 5 TextBoxes
Me.Controls("TextBox" & J) = TV(LI, J) 'récupère dans la TextBox de la boucle la donnée ligne LI colonne J du tableau des valeurs TV
Next J 'prochaine TextBox de la boucle
End Sub
Private Sub CommandButton2_Click() 'bouton "Quitter"
Unload Me 'vide et ferme l'UserForm
End Sub
Private Sub CommandButton3_Click() 'Bouton "Vider"
For J = 1 To 5 'boucle sur les 5 TextBoxes
Me.Controls("TextBox" & J) = "" 'vide la TextBox de la boucle
Next J 'prochaine TextBox de la boucle
End Sub