Listbox sur VBA

Bonjour a tous ,

Voila je n'arrive pas a faire que quand on clic sur produits dans le Userform on choisi un article et que la description ce met dans listbox ( et soie modifiable si besoin) ainsi que le prix et l'unité de mesure .

Et en même temps lorsque que l'on décide d'ajouter un article que celui-ci ce mette dans la feuille Devis avec une ligne comme titre et la description dessous (+ le prix)

J'espère que quelqu'un pourrai m'aidé

Bonjour,

Une première étape > j'ai remplacé la 2e listbox par un textbox que j'ai renommé "TextBoxDescription" ...

Je lui ai changé la propriété "MultiLine" à "True" ...

Ainsi, en cliquant sur un item > la description de l'item s'affiche et le texte est modifiable ...

Est-ce que cette partie là est acceptable ?

ric

Désoler pour mon temps de réponse j'étais déplacement ^^

C'est exactement ca, par contre je n'arrive pas a finir

Quand j'ajoute un produit dans un devis le titre ce mes bien , mes ca bug pour la description et du coup idem pour la quantité , prix , si une Ames

charitable pouvais m'aidé

Bonjour

...waouh l'orthographe. Tout le monde en fait mais là...j'ai pas pu ... Quand j'ajoute un produit dans un devis le titre se met bien , mais ca bug pour la description et du coup idem pour la quantité , prix , si une Ame

En attendant le retour de Ric.
Par rapport à votre dernier post, modifiez déjà votre code Sub choixProduit() en le remplaçant par celui ci-dessous.

Sub choixProduit()
Dim qte As Integer
Dim derligne As Long

qte = F_Produit.TextBoxQte.Value

With Sheets("Devis")
    derligne = .Range("B" & .Rows.Count).End(xlUp).Row + 1
    If derligne < 18 Then derligne = 18

    If derligne > 40 Then
        MsgBox "Fini"
    ElseIf derligne > 17 Then
        .Range("B" & derligne).Value = F_Produit.ListBoxProduitNom.Value
        .Range("B" & derligne + 1).Value = F_Produit.TextBoxDescription.Value
        ' Sheets("Devis").Range("G" & derLigne).Value = leChoix(2)
        ' Sheets("Devis").Range("H" & derLigne).Value = qte
        ' Sheets("Devis").Range("I" & derLigne).Value = qte * leChoix(2)
    End If
End With
End Sub

Cordialement

Bonjour,

Super merci ça marche parfaitement

Et désoler pour l'orthographe ^^^^

Ok.

Bonne journée

Je comprends pas
En modifiant l'aspect cela fonction plus correctement
Quand j'ajoute un article celui-ci se met tout en bas du tableau
11automatise.xlsm (37.09 Ko)

Vous avec mis en forme selon les tableaux structurés je pense ?

J'ai effectivement changé la forme du tableau, mais j'ai beau essayer de modifier le code cela fonction Tjrs pas .

Remplacez le code par celui ci

Sub choixProduit()
Dim qte As Integer
Dim derligne As Long

With Sheets("Devis")
    derligne = WorksheetFunction.CountA(.Range("B18:B33")) + 18
    If derligne < 18 Then derligne = 18

    If derligne > 33 Then
        MsgBox "Fini"
    ElseIf derligne > 17 Then
        .Range("B" & derligne).Value = F_Produit.ListBoxProduitNom.Value
        .Range("B" & derligne + 1).Value = F_Produit.TextBoxDescription.Value
        .Range("C" & derligne + 1).Value = F_Produit.TextBoxQte.Value
   End If
End With
End Sub

Ça inscrit toujours sur les 2 dernières lignes ( 33)

je voudrais que cela commence à ligne 18 ^^.

sans titre

Pas possible cela j'ai testé le code avant de vous envoyer

Faites quand même ceci.
- sélectionnez B18 jusque B33
- Appuyer sur la touche Delete (ou Del) de votre clavier
- Relancez le code

En mettant ceci :

derligne = WorksheetFunction.CountA(.Range("B18:B33")) + 1

CA commence bien ligne 1 , mes ca reste ligne 1 ^^ , si j'ajoute 1 article cela remplace le précèdent ligne 1

14automatise2.xlsm (37.01 Ko)

Si vous n'avez pas de données Worksheetfunction renvoie 0. Donc 0 + 1 = 1.
A la ligne suivante, le IF dit que si dernligne est inférieur à 18, derligne = 18. D'où votre constat d'ajout sur la ligne 18 qui écrase la précédente donnée
Si vous laissé 18, lorsque worksheetfunction est égal à 0, derligne sera 18 via la condition IF

Avez-vous testé ce que je vous ai suggéré ?

Edit :
j
e viens de tester votre dernier fichier. Cela fonctionne très bien mais il ne faut pas que des lignes soient vides entre la ligne 18 et la dernière ligne. ce qui est le cas dans votre dernier fichier posté.
Dans le code il vous fait changer cette ligne aussi --> If derligne > 33 Then -_> Remplacez la par --> If derligne = 34 Then

Quand je fais une recherche d'article, je trouve bien les articles , mes la description n'est du coup plus la bonne ^^

Voici le code que j'utilise :

Sub filtrerListeProduit()
If F_Produit.TextBoxRechercheProduit <> "" Then
listeProduit F_Produit.TextBoxRechercheProduit.Text
Else
listeProduit "*"
End If

End Sub

Bonjour

Quand je fais une recherche d'article, je trouve bien les articles , mes la description n'est du coup plus la bonne ^^

Heu c'est plus le même sujet là ... mais je vais regarder

Sur base de mon dernier post et les modifications que je vous ai données, vous ne me dites pas si le devis se complète bien entre la ligne 18 et 33.

Bonjour à tous,

la description n'est du coup plus la bonne

Il faut ajouter 2 à listindex ...

1 pour la listindex qui commence à 0 et non à 1 ...

Puis un autre 1 > car la liste des produits commence à la ligne 2 dans la feuille ...

Ainsi > en ajoutant 2 à listindex > Lign va donner la bonne ligne de la description ...

Private Sub ListBoxProduitNom_Click()
Dim Lign As Integer

    Lign = Me.ListBoxProduitNom.ListIndex + 2   ' << modif
    Me.TextBoxDescription = Worksheets("Produits").Cells(Lign + 2, "C").Text
End Sub

ric

Bonjour

la description n'est du coup plus la bonne

@Ric : je ne pense pas que cela solutionne le souci de Philippe car le code renvoie toujours la description deux lignes plus bas. EXemple si on clique sur article 3, il renvoie la description 5. Idem si on fait une recherche.

Je proposerais plutôt de se baser sur l'ID qui est repris dans la désignation affichée dans l'USF. Le code pourrait être celui-ci :

Private Sub ListBoxProduitNom_Click()
Dim Lign As Integer
Dim ID

ID = Left(Me.ListBoxProduitNom, InStrRev(Me.ListBoxProduitNom, "-") - 1)
Lign = Worksheets("Produits").Cells.Find(ID, LookIn:=xlValues, lookat:=xlPart).Row
Me.TextBoxDescription = Worksheets("Produits").Cells(Lign, "C").Value

End Sub

@Philippe : Attention que ce code suppose qu'il y a toujours un trait d'union (sans espaces !) entre l'ID et la désignation.

Bonjour a tous ,

J'ai teste ce que m'a dit @Dan , mes j'ai toujours le souci

11devis-2.zip (329.02 Ko)
Rechercher des sujets similaires à "listbox vba"