Actualiser des champs textbox d'un userform depuis une listbox

Résolu
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
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

VlkPr3s Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   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
Doudounetto Messages postés 87 Date d'inscription   Statut Membre Dernière intervention   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
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Oui elles sont dans ma feuille de calcul excel sous forme de tableau
0
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   > kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
J'essaie de vous mettre une photo pour que vous voyez
0
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Par contre c'est exectement ce que je veux faire cliquer sur la listbox sur un produit et que ca remplisse le reste
0
Doudounetto Messages postés 87 Date d'inscription   Statut Membre Dernière intervention   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
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Impossible de mettre la photo elle ne charge pas
Je vais essayer merci beaucoup
0
Doudounetto Messages postés 87 Date d'inscription   Statut Membre Dernière intervention   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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Super merci
voici le lien vers mon document
http://www.cjoint.com/data3/3CrmgcmDyea.htm
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Oui... Pourquoi faire ton document?
Mon code ne fonctionne pas?

ps : je t'ai simplement indiqué comment faire, pour l'avenir...
0
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
C'etait juste pour tester ^^
le code ca m'a l'air parfait je vais le tester de suite
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
et bien ... ça fonctionne!
0
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
MERCI BEAUCOUP CA MARCHE !!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Je vais essayer merci beaucoup
0
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
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
kellyp13 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   > pijaku Messages postés 12263 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