XL 2016 Gros basard dans la recuperation de mes données listbox

RoyalP

XLDnaute Occasionnel
Hello , je suis en train de réaliser un petit classeur pour une asso (une gestion de facture etc) j'ai bien avancé mais je bloque sur un truc tout bête qui me rend fou depuis 4 heures !!!!

j'ai un recap de devis dans le devis il me recupére bien les infos suivantes:
N° du devis, Date du devis, Ref Produit, description produit, quantité,le taux tva mais apres pour les autres infos genre Code Client etc il me les fout dans un B***** sans nom
je vous joint le fichier pour ceux qui arriverons a m'aider , je les remercie d'avance.
 

Fichiers joints

Robert

XLDnaute Barbatruc
Bonsoir RoyalP, bonsoir le forum,

J'ai modifié ton code. Remplace UserForm_Activate et TextBox1_Change par :

VB:
Private OD As Worksheet
Private TV As Variant
Private NL As Integer

Private Sub UserForm_Initialize()
Me.lblfch = Date
With ListBox1
    .ColumnCount = 10
    .ColumnWidths = "60 pt;60 pt;40 pt;185 pt;30 pt;40 pt ;50 pt ;50pt ;50pt ;50pt"
End With
Set OD = Worksheets("DEVIS")
TV = OD.Range("A1").CurrentRegion
NL = UBound(TV, 1)
End Sub

Private Sub TextBox1_Change()
Dim Total As Double

OD.Visible = True
OD.Activate
Me.ListBox1.Clear
If Me.TextBox1.Value = "" Then Exit Sub
For I = 2 To NL
    If InStr(1, OD.Cells(I, 2), Me.TextBox1.Value, vbTextCompare) > 0 Then
        With Me.ListBox1
            .AddItem
            For J = 1 To 10
                .Column(J - 1, .ListCount - 1) = OD.Cells(I, J)
                If J = 6 Then Total = Total + .Column(J - 1, .ListCount - 1)
            Next J
            
        End With
    End If
Next I
TextBox2.Value = Me.ListBox1.ListCount
Me.TextBox3 = Total
End Sub
 

RoyalP

XLDnaute Occasionnel
NICKEL ROBERT, merci pour ton aide, maintenant il faut que je trouve comment faire pour qu'il m'affiche tous les produits si un devis comporte plusieurs produits.
En tout cas merci.
 

Robert

XLDnaute Barbatruc
Re,

Il faut stocker le numéro de ligne dans la ListBox1 si tu veux pouvoir afficher plusieurs produits dans recap_devis_fact. Cela implique de supprimer une colonne de la ListBox1 dans consuldevis. Quelle serait la colonne qui pourrait être supprimée ?
 

RoyalP

XLDnaute Occasionnel
total ht, vu que je le calcul séparément
je joint mon fichier légèrement modifié
j'avais commencé mais j’étais dans le faux

merci de ton aide
 

Fichiers joints

Robert

XLDnaute Barbatruc
Re,

Je ne sais pas à quoi correspondent certains champs de la seconde UserForm, donc...
En pièce jointe la version 01...
 

Fichiers joints

RoyalP

XLDnaute Occasionnel
ALORS LA JE DIT BRAVO, merci infiniment , je vais pouvoir finir mon petit utilitaire.
Merci encore de ton aide super precieuse.
 

patricktoulon

XLDnaute Barbatruc
bonjour a tous Robert pourquoi supprimer une colonne ????
perso je les met toutes (les 12) sans problème
je règle même les columnwidth calqué sur la plage
ainsi que les labels d’Entêtes d'ailleurs
regardez la derniere colonne ;)
demo3.gif
 

Robert

XLDnaute Barbatruc
Re,

Oui ça marche si la ListBox est alimentée avec la propriété RowSource que je n'utilise jamais car elle m'a déjà fait galérer grave...
 

patricktoulon

XLDnaute Barbatruc
Perdu!!!! Robert ;)c'est pas propriété rowsource meme si en effet il y a la dedans une histore de range
je la donne l'astuce comme ca on en parle plus tout le monde saura
a ben ça alors ;)
VB:
Private Sub UserForm_Activate()

    With ListBox1
        .ColumnCount = 15
        '--------------------------------------------------
        ' !!!!!!C EST CA L ASTUCE!!!!!!!!!on la renplie avec une ligne de cellule(15 colonne) et on la clear
        .List = Range("A1").Resize(1, .ColumnCount).Value: .Clear
        '--------------------------------------------------

        'elle est maintenant dimentionné a 15 colonne et valide pour 15 colonnes  MEME!!!!!! si elle est vide !!!!!!!!!!!!

        'maintenant on (((peut)))!!! la remplir normalement avec 2 boucles ligne/colonnes )imbriquées

        For i = 0 To 10
            .AddItem ""
            For c = 0 To 14
                .List(i, c) = "Ligne" & i + 1 & " Col" & c + 1
            Next
        Next
    End With



End Sub
Wagadougou!!!
EN GROS C'EST ROWSOURCE SANS ROWSOURCE :p ET DONC SANS SES INCONVENANTS

demo3.gif
 
Dernière édition:

RoyalP

XLDnaute Occasionnel
merci robert, y'a juste un petit bug si tu sélectionne par exemple le devis 1002 et que tu sélectionne le deuxième article dans le devis il y a un décalage quand tu click sur consulter. La qts est déplacé en dessous de là ou elle devrait etre.
 

RoyalP

XLDnaute Occasionnel
Merci robert, juste une question peut on mettre une taille aux éléments de la listbox2 parcque je suis sur un 15 pouces et j'aimerais voir toutes les infos sur l’écran ?
Merci d'avance

c'est bon j'ai redimensionné la listbox2 pour ne pas voir divers3 et c'est nickel, maintenant il me reste plus que trouver le remplacement de la fonction recherche pour pouvoir mettre les infos CLI-1 , CLI-2.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Re,

Remplace le code d'initialisation et ça ce fera tout seul...

VB:
Private Sub UserForm_Initialize()
Set OD = Worksheets("DEVIS")
TV = OD.Range("A1").CurrentRegion
NL = UBound(TV, 1)
NC = UBound(TV, 2)
Me.lblfch = Date
With ListBox2
    .ColumnCount = NC - 1
    .List = OD.Range("A1").Resize(1, NC).Value
End With
With ListBox1
    .ColumnCount = NC
    .ColumnWidths = "0 pt"
    .List = OD.Range("A1").Resize(1, NC).Value
    .Clear
End With
Set OD = Worksheets("DEVIS")
TV = OD.Range("A1").CurrentRegion
NL = UBound(TV, 1)
End Sub
 

RoyalP

XLDnaute Occasionnel
par contre je galère pour récupérer les infos du client , j'ai crée l'userform de création d'un client, modification, nouveau avec N° de client automatisé mais pas moyen de récupérer les infos dans le récap du devis (mes compétences sont limitées!!!).Si je peux abuser de tes compétences, ce serait génial.
Merci d'avance.
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas