Actualiser des champs textbox d'un userform depuis une listbox

Résolu
kellyp13 Messages postés 24 Statut Membre -  
kellyp13 Messages postés 24 Statut Membre -
Bonjour,
Actuellement sur un projet VBA je bloque sur une partie du code j'ai créer un userform dans lequel j'ai une listbox qui est renseigner depuis un tableau excel et j'aimerais qu'une fois que je selectionne un produit dans la listbox mes champs vide concernant ce produit dans le userform ce remplissent automatique je ne vois pas comment faire pourriez m'éclairer?

Merci

5 réponses

  1. VlkPr3s Messages postés 251 Statut Membre 130
     
    la propriété checkedlistbox ? pour récupérer les valeurs sélectionnées non ? sinon si tu peux changer de langage fait ça en C#, c'est beaucoup plus fun et viable :)
    0
  2. Doudounetto Messages postés 94 Statut Membre 30
     
    Bonjour,

    Dans un premier temps, ton code doit se situer la dedans:

    Private Sub ListBox_Click()
         'Lorsque tu clique sur ta listBox...
         'remplir les champs vides
    End Sub


    Les données de chaque produit sont elles aussi dans une feuille excel?
    0
    1. kellyp13 Messages postés 24 Statut Membre
       
      Bonjour,
      Oui elles sont dans ma feuille de calcul excel sous forme de tableau
      0
      1. kellyp13 Messages postés 24 Statut Membre > kellyp13 Messages postés 24 Statut Membre
         
        J'essaie de vous mettre une photo pour que vous voyez
        0
    2. kellyp13 Messages postés 24 Statut Membre
       
      Par contre c'est exectement ce que je veux faire cliquer sur la listbox sur un produit et que ca remplisse le reste
      0
  3. Doudounetto Messages postés 94 Statut Membre 30
     
    Je ne vois pas de photo...

    Si les données produit sont dans une feuille excel du même classeur, il faut dire à ton programme d'activer ta feuille, pour pouvoir en lire les données:
    (Je part du principe que toutes les données sont dans une seule et même feuille de calcul, organisées et tout, et tout, et que le nom du produit y figure (en première colonne par exemple:)

    ThisWorkbook.Worksheets("Données produit").Activate
    '"Données produit" correspond
    'au nom qui a été donné à la feuille
    'contenant les données des produits
    


    Ensuite, une fois que le programme sait qu'il faut bosser sur cette feuille, il faut parcourir toutes les données de la feuille de calcul:

    'permet de parcourir toute la feuille jusqu'à la dernière cellule
    For i = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row 
           'Ensuite on regarde si le nom du produit sélectionné se trouve 
           'dans    la colonne "A" de la feuille:
           'Si la selection ListBox == une valeur dans le parcours de ma feuille Alors
            If (ListBox.List(ListBox.ListIndex,0) == Range("A" & i).Value ) Then
                     'ListBox.List(ListBox.ListIndex,0) est la valeur selectionée
                     'Range("A" & i).Value est la valeur de la celleule lue dans la
                     'colonne A de la feuille
    
                    'je vous conseille de débuger avec des
                    'MsgBox() pour vérifier le fonctionnement du If
    
                    'une fois que le If est Vrai:
                    TextBox.text = la valeur d'une autre colonne (référence par exemple)
                    'La valeur se récupère aussi avec un Range("B"&i).Value (qui correspond à une cellule)
            End If
    Next
    


    Je ne suis pas sur de la condition du If, il va falloir faire très certainement des tests pour arriver à quelque chose qui fonctionne. Je vous ai donné une piste à exploiter, à vous de la modifier pour la faire correspondre à la présentation de vos données sous excel... Si vous avez un problème, je reste dispo.
    0
    1. kellyp13 Messages postés 24 Statut Membre
       
      Impossible de mettre la photo elle ne charge pas
      Je vais essayer merci beaucoup
      0
    2. Doudounetto Messages postés 94 Statut Membre 30
       
      Idem pour le for. Le principe est de rechercher dans la feuille le nom du produit selectionné dans la listBox. Si le nom du produit n'est présenté que dans une seule colonne, il n'est pas necessaire de parcourir toute la feuille de calcul...
      0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Admettons que le contenu de votre listbox soit la colonne B de votre feuille "Donnees". (j'ai volontairement mélangé l'ordre des colonnes...)
    Private Sub ListBox1_Click()
    Dim Lign As Integer
    
    If ListBox1.ListIndex = -1 Then Exit Sub
    With Sheets("Donnees")
        Lign = .Columns(2).Cells.Find(ListBox1.List(ListBox1.ListIndex)).Row
        TextBox1 = .Range("A" & Lign)
        TextBox2 = .Range("C" & Lign)
        TextBox3 = .Range("D" & Lign)
        TextBox4 = .Range("F" & Lign)
        TextBox5 = .Range("H" & Lign)
        TextBox6 = .Range("K" & Lign)
        TextBox7 = .Range("I" & Lign)
        TextBox8 = .Range("J" & Lign)
    End With
    End Sub


    Pour placer un fichier sur le forum, il faut aller créer un lien vers ce fichier sur cjoint et coller ce lien dans une réponse. Comme ceci :
    https://www.cjoint.com/c/ECrlPpr0It3
    Il s'agit d'un exemple de listbox cliquable...
    0
    1. kellyp13 Messages postés 24 Statut Membre
       
      Super merci
      voici le lien vers mon document
      http://www.cjoint.com/data3/3CrmgcmDyea.htm
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > kellyp13 Messages postés 24 Statut Membre
       
      Oui... Pourquoi faire ton document?
      Mon code ne fonctionne pas?

      ps : je t'ai simplement indiqué comment faire, pour l'avenir...
      0
    3. kellyp13 Messages postés 24 Statut Membre
       
      C'etait juste pour tester ^^
      le code ca m'a l'air parfait je vais le tester de suite
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > kellyp13 Messages postés 24 Statut Membre
       
      et bien ... ça fonctionne!
      0
    5. kellyp13 Messages postés 24 Statut Membre
       
      MERCI BEAUCOUP CA MARCHE !!!!!
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kellyp13 Messages postés 24 Statut Membre
     
    Petite question supplémentaire
    J'aimerais multiplier un pourcentage que je choisi avec des option button soit (5.5% soit 20%) une fois selectionner j'aimerais qu'il multiplie ce pourcentage avec mon montant HT calculé avant dans un label?
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Dans le cas de ton fichier donné plus haut :
      Private Sub OptionButton1_Click()
      If Label11.Caption = "" Then Exit Sub
      Label13.Caption = Val(Label11.Caption) * 5.5 / 100
      Label12.Caption = Val(Label11.Caption) + Val(Label13.Caption)
      End Sub
      
      Private Sub OptionButton2_Click()
      If Label11.Caption = "" Then Exit Sub
      Label13.Caption = Val(Label11.Caption) * 20 / 100
      Label12.Caption = Val(Label11.Caption) + Val(Label13.Caption)
      End Sub
      0
    2. kellyp13 Messages postés 24 Statut Membre
       
      Je vais essayer merci beaucoup
      0
    3. kellyp13 Messages postés 24 Statut Membre
       
      C'est bisard alors c'est surement que j'ai fait une erreur mais pour 5.5% ca ne marche pas le resultat est bsiard

      https://www.cjoint.com/c/ECrpIwAumPS
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > kellyp13 Messages postés 24 Statut Membre
       
      Normal, rien à voir avec le code que je t'ai donné..........................

      Ton code :
      Private Sub CommandButton4_Click()
      Label11.Caption = CStr(CInt(TextBox1.Text) * CInt(Label17.Caption))
      Label11.Caption = Format(Label11.Caption, "#,####0.00€")
      
      If Label11.Caption = "" Then Exit Sub
      Label13.Caption = Val(Label11.Caption) * 5.5 / 100
      Label12.Caption = Val(Label11.Caption) + Val(Label13.Caption)
      
      If Label11.Caption = "" Then Exit Sub
      Label13.Caption = Val(Label11.Caption) * 20 / 100
      Label12.Caption = Val(Label11.Caption) + Val(Label13.Caption)
      
      End Sub


      Rien que la première ligne fausse déjà ton calcul...
      CInt transforme un nombre stocké sous forme de texte en valeur numérique......ENTIERE. Donc CInt("1234,45") = 1234

      Il convient donc d'utiliser CDbl() ou Val()

      Ensuite, tu ne testes pas quel est l'optionbutton cliqué... Donc, le clic sur un bouton réalise les 2 opérations à la suite...
      x 5.5% puis x20%...


      Donc, puisque tu utilises un bouton de commande et plus le clic sur l'optionbutton, essaye ceci :
      Private Sub CommandButton4_Click()
      Label11.Caption = CStr(Val(TextBox1.Text) * Val(Label17.Caption))
      Label11.Caption = Format(Label11.Caption, "#,####0.00€")
      If OptionButton1.Value = True Then
          Label13.Caption = Val(Label11.Caption) * 5.5 / 100
          Label12.Caption = Val(Label11.Caption) + Val(Label13.Caption)
      Else
          Label13.Caption = Val(Label11.Caption) * 20 / 100
          Label12.Caption = Val(Label11.Caption) + Val(Label13.Caption)
      End If
      End Sub
      0
    5. kellyp13 Messages postés 24 Statut Membre > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Desoler je suis pas très forte en VBA
      La j'ai mi exactement le code que tu m'as donner mais ca ne marche pas
      https://www.cjoint.com/c/ECrp05BGCHL
      0