Actualiser des champs textbox d'un userform depuis une listbox

Résolu/Fermé
kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015 - Modifié par kellyp13 le 17/03/2015 à 09:19
kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015 - 17 mars 2015 à 16:00
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 vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
17 mars 2015 à 09:25
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 85 Date d'inscription lundi 10 novembre 2014 Statut Membre Dernière intervention 16 janvier 2017 30
17 mars 2015 à 09:35
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 mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 09:49
Bonjour,
Oui elles sont dans ma feuille de calcul excel sous forme de tableau
0
kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015 > kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 09:52
J'essaie de vous mettre une photo pour que vous voyez
0
kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 10:27
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 85 Date d'inscription lundi 10 novembre 2014 Statut Membre Dernière intervention 16 janvier 2017 30
17 mars 2015 à 10:53
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 mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 10:58
Impossible de mettre la photo elle ne charge pas
Je vais essayer merci beaucoup
0
Doudounetto Messages postés 85 Date d'inscription lundi 10 novembre 2014 Statut Membre Dernière intervention 16 janvier 2017 30
17 mars 2015 à 10:59
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
17 mars 2015 à 11:30
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 mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 11:54
Super merci
voici le lien vers mon document
http://www.cjoint.com/data3/3CrmgcmDyea.htm
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 11:57
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 mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 12:00
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 12:07
et bien ... ça fonctionne!
0
kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 12:11
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 mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 14:43
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
17 mars 2015 à 15:01
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 mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 15:04
Je vais essayer merci beaucoup
0
kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 15:22
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > kellyp13 Messages postés 22 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015
17 mars 2015 à 15:32
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 mardi 17 mars 2015 Statut Membre Dernière intervention 18 mars 2015 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
17 mars 2015 à 15:41
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