USF
Utilisateur anonyme
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Pourriez-vous m'aidez?
J'aimerais avoir une USF où se trouve 5 cases (Français,Italien,Allemand,Espagnol,Anglais)
On saisi un mot dans l'une des cases en respectant la langue choisie
on clic sur TRADUCTION et les 4 mots correspondant à la saisie effectuée apparaissent.
ci-join-t fichier avec modèle USF
https://www.cjoint.com/c/LCntCeicLM7
merci
Pourriez-vous m'aidez?
J'aimerais avoir une USF où se trouve 5 cases (Français,Italien,Allemand,Espagnol,Anglais)
On saisi un mot dans l'une des cases en respectant la langue choisie
on clic sur TRADUCTION et les 4 mots correspondant à la saisie effectuée apparaissent.
ci-join-t fichier avec modèle USF
https://www.cjoint.com/c/LCntCeicLM7
merci
3 réponses
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
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
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