USF

Utilisateur anonyme -  
ThauTheme Messages postés 1564 Statut Membre -
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

3 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    0
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    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 :

    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


    0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    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

    0