Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Item dans USERFORM

eric72

XLDnaute Accro
Bonjour à tous,
J'ai crée un Userform avec une listbox pour afficher mes devis, mais seul la date s'affiche dans la listbox et je ne comprends pas ou est l'erreur.
Cela concerne l'onglet "Prestations".
Y a t il mon sauveur parmi vous?
Merci pour votre aide
Eric
 

Pièces jointes

  • test.xlsm
    603.5 KB · Affichages: 34

patricktoulon

XLDnaute Barbatruc
Bonjour
il faudrait déjà mettre ta listbox a 7 colonnes pour que ça marche

de plus
ceci génère une erreur si txtQte est vide
Me.LstItem.List(NbItem, 6) = Me.TxtPrixVenteUnitaire * Me.TxtQte 'On charge le prix vente total dans la liste
perso je met TxtQte à 1 en dur tu le change si besoins comme ça pas de soucis

de plus
tu n'a pas prévu de changer d'avis et donc pouvoir supprimer une ligne dans la listbox

de plus
tu n'a pas prévu d'arranger le coloumnwidths de la listbox
une listbox de 3 kilomètre de large pour au final 6 donnée

de plus
si tu oubli de choisir le nom ça envoie quand même dans la liste box

bon tout ca vu ca donne ceci
 

Pièces jointes

  • test.xlsm
    570.5 KB · Affichages: 10
Dernière édition:

eric72

XLDnaute Accro
Sans vouloir abuser de votre gentillesse, comment je peux effacer les données des 4 derniers indicateurs après l'ajout de chaque nouvelle ligne, cela afin de repartir sur la saisie d'une nouvelle ligne
 

JM27

XLDnaute Barbatruc
bonsoir
on voudrait bien t'aider mais ta question est incompréhensible pour moi.
Dans quelle saisie ? , quel userform ?
Quelles sont les données à supprimer ? et ou ?
en fait rien n'est clair.
 

patricktoulon

XLDnaute Barbatruc
ah autant pour moi c'est les sources
reprendre mon exemple et
VB:
' Ajout des lignes au devis
Private Sub BtnAjouter_Click()
LstItem.ColumnWidths = "50;80;70;100;50;40;40"
If CbNomClient.Value = "" Then MsgBox "choisissez un client": Exit Sub
    'Déclaration des variables
    Dim NbControles As Integer
    Dim NbItem As Integer

    'Affectation des variables
    NbControles = 6
    Me.LstItem.AddItem TxtDate: TxtDate = ""       'Date du devis
    NbItem = Me.LstItem.ListCount - 1   'on compte le nombre d'items dans la liste
    ' On charge les items dans la liste
    Me.LstItem.List(NbItem, 1) = Me.LblNumDevis: LblNumDevis = ""               'On charge le numéro dans la liste
    Me.LstItem.List(NbItem, 2) = Me.CbNomClient: CbNomClient = ""           'On charge le nom dans la liste
    Me.LstItem.List(NbItem, 3) = Me.CbDesignation: CbDesignation = ""          'On charge la désignation dans la liste
    Me.LstItem.List(NbItem, 4) = Me.TxtQte: TxtQte = ""        'On charge la quantité dans la liste
    Me.LstItem.List(NbItem, 5) = Me.TxtPrixVenteUnitaire: TxtPrixVenteUnitaire = ""               'On charge le prix vente unitaire dans la liste
    Me.LstItem.List(NbItem, 6) = Val(Me.TxtPrixVenteUnitaire) * Val(Me.TxtQte)    'On charge le prix vente total dans la liste

End Sub
Private Sub CommandButton1_Click()
If LstItem.ListIndex > -1 Then With LstItem: .RemoveItem .ListIndex: End With
End Sub

cela dit si devis avec plusieurs lignes peut etre garder le nom client plutot que de le re choisir
ça implique un effacement post production de la liste
on dénote déjà là ergonomique ment parlant une coquille conceptuelle
 

patricktoulon

XLDnaute Barbatruc
re
on peut même corrigé les oublis en une seule fois en bloquant l' ajout de ligne si tout n'est pas rempli tout simplement
Code:
' Ajout des lignes au devis
Private Sub BtnAjouter_Click()
    Dim critere As Boolean
    critere = CbNomClient <> "" And CbDesignation <> "" And TxtPrixVenteUnitaire <> "" And TxtDate <> ""
    If Not critere Then MsgBox "toute les donnée ne sont pas dument remplies": Exit Sub
    LstItem.ColumnWidths = "50;80;70;100;50;40;40"
    If CbNomClient.Value = "" Then MsgBox "choisissez un client": Exit Sub
    'Déclaration des variables
    Dim NbControles As Integer
    Dim NbItem As Integer

    'Affectation des variables
    NbControles = 6
    Me.LstItem.AddItem TxtDate:    'Date du devis
    NbItem = Me.LstItem.ListCount - 1   'on compte le nombre d'items dans la liste
    ' On charge les items dans la liste
    Me.LstItem.List(NbItem, 1) = Me.LblNumDevis:    'On charge le numéro dans la liste
    Me.LstItem.List(NbItem, 2) = Me.CbNomClient:    'On charge le nom dans la liste
    Me.LstItem.List(NbItem, 3) = Me.CbDesignation:    'On charge la désignation dans la liste
    Me.LstItem.List(NbItem, 4) = Me.TxtQte:    'On charge la quantité dans la liste
    Me.LstItem.List(NbItem, 5) = Me.TxtPrixVenteUnitaire:    'On charge le prix vente unitaire dans la liste
    Me.LstItem.List(NbItem, 6) = Val(Me.TxtPrixVenteUnitaire) * Val(Me.TxtQte)    'On charge le prix vente total dans la liste

    'TxtDate = ""
    CbDesignation = ""
    'CbNomClient = ""
    'LblNumDevis = ""
    TxtQte = ""
    TxtPrixVenteUnitaire = ""
End Sub


Private Sub CommandButton1_Click()
    If LstItem.ListIndex > -1 Then With LstItem: .RemoveItem .ListIndex: End With
End Sub

Private Sub CbDesignation_Change()
'permet de faire la recherche verticale pour avoir le prix de vente unitaire de la désignation
    If CbDesignation <> "" Then Me.TxtPrixVenteUnitaire = Application.WorksheetFunction.VLookup(Me.CbDesignation, Feuil2.Range("a:j"), 10)
End Sub


' Ouverture du formulaire avec date du jour et numéro de devis automatique
Private Sub UserForm_Initialize()
    Me.TxtDate = Date
    Me.LblNumDevis = Feuil8.Range("n2")
End Sub
 

Discussions similaires

Réponses
16
Affichages
730
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…