Listbox sur VBA

Bonjour à tous,

Deux types de soucis ...

Module M00_Produit > macro "choixProduit" > If derLigne > 34 Then > Dan avait demandé de changer pour If derLigne = 34 Then ...

Ensuite, dans la feuille "CLOTURE BOIS" > colonnes N et O > plusieurs cellules avaient de chiffre du type 37,75 > or dans ta feuille c'est le point qui est paramétré > il faut changer les virgules pour des points > ainsi le formulaire s'ouvre bien ...

ric

Merci

Mes sur le moteur de recherche dans l'onglet ARTICLE quand tu recherche par exemple ' cloture ' les titres des articles sont bien les bonnes mes pas leur description

Bonjour à tous,

Je crois que c'est corrigé > à vérifier ...

ric

Bonjour ,

Comment peu ton faire pour évité de recopier ceci X fois ? il y a t'il une solution pour simplifier ?

Sheets("TARIF GRILLAGE RIGIDE").Range("D4").Value = CDbl(TextRigide1)
Me.TarifGrillage = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("H13"), 0)
Me.LongeurCorriger = Sheets("TARIF GRILLAGE RIGIDE").Range("E4")
Me.TarifHt1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E5"), 0)
Me.TarifHt2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E6"), 0)
Me.TarifHt3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E7"), 0)
Me.TarifHt4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E8"), 0)
Me.TarifHt5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E10"), 0)
Me.TarifHt6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
Me.Marge1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F5"), 0)
Me.Marge2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F6"), 0)
Me.Marge3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F7"), 0)
Me.Marge4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F8"), 0)
Me.Marge5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F10"), 0)
Me.Marge6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
Me.TarifHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D13"), 0)
Me.MargeHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F13"), 0)
Me.HauteurFin = Sheets("TARIF GRILLAGE RIGIDE").Range("D9")
Me.Moa = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D12"), 0)

Bonjour,

Je ne comprends pas vraiment ta demande ...

Est-ce que tu aimerais simplifier ces 19 lignes ?
( Il n'y a pas vraiment de simplification à faire, car les numéros de ne suivent pas > il n’y a pas la ligne 9 )...

Ou est-ce que tu dois répéter plusieurs fois ces 19 lignes ?

ric

Bien en faite je répète plusieurs fois ce genre de code , et je voulais savoir si il y avait quelque chose de plus simple !

Private Sub TextRigide1_Change()
Sheets("TARIF GRILLAGE RIGIDE").Range("D4").Value = CDbl(TextRigide1)
Me.TarifGrillage = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("H13"), 0)
Me.LongeurCorriger = Sheets("TARIF GRILLAGE RIGIDE").Range("E4")
Me.TarifHt1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E5"), 0)
Me.TarifHt2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E6"), 0)
Me.TarifHt3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E7"), 0)
Me.TarifHt4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E8"), 0)
Me.TarifHt5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E10"), 0)
Me.TarifHt6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
Me.Marge1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F5"), 0)
Me.Marge2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F6"), 0)
Me.Marge3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F7"), 0)
Me.Marge4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F8"), 0)
Me.Marge5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F10"), 0)
Me.Marge6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
Me.TarifHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D13"), 0)
Me.MargeHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F13"), 0)
Me.HauteurFin = Sheets("TARIF GRILLAGE RIGIDE").Range("D9")
Me.Moa = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D12"), 0)
Me.TextCoeff = Round(ThisWorkbook.Worksheets("BASE").Range("G5"), 1)
Me.TextJour = Round(ThisWorkbook.Worksheets("BASE").Range("M14"), 0)
End Sub

Private Sub TextRigide2_Change()
Sheets("TARIF GRILLAGE RIGIDE").Range("D5").Value = CDbl(TextRigide2)
Me.TextRigide5 = Sheets("TARIF GRILLAGE RIGIDE").Range("D8")
Me.TarifGrillage = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("H13"), 0)
Me.TarifHt1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E5"), 0)
Me.TarifHt2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E6"), 0)
Me.TarifHt3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E7"), 0)
Me.TarifHt4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E8"), 0)
Me.TarifHt5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E10"), 0)
Me.TarifHt6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
Me.Marge1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F5"), 0)
Me.Marge2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F6"), 0)
Me.Marge3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F7"), 0)
Me.Marge4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F8"), 0)
Me.Marge5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F10"), 0)
Me.Marge6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
Me.TarifHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D13"), 0)
Me.MargeHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F13"), 0)
Me.HauteurFin = Sheets("TARIF GRILLAGE RIGIDE").Range("D9")
Me.Moa = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D12"), 0)
Me.TextCoeff = Round(ThisWorkbook.Worksheets("BASE").Range("G5"), 1)
Me.TextJour = Round(ThisWorkbook.Worksheets("BASE").Range("M14"), 0)

End Sub

Bonjour,

Porte attention pour mettre ton code sous balise > l'icône  </>  dont l'infobulle indique "Code" ...

Tu gardes dans chacun ce qui est différent > ce qui est identique > tu le places dans la macro Traitement_1 ...

Private Sub TextRigide1_Change()
    Sheets("TARIF GRILLAGE RIGIDE").Range("D4").Value = CDbl(TextRigide1)
    Me.TarifGrillage = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("H13"), 0)
    Me.LongeurCorriger = Sheets("TARIF GRILLAGE RIGIDE").Range("E4")
    Call Traitement_1
End Sub

Private Sub TextRigide2_Change()
    Sheets("TARIF GRILLAGE RIGIDE").Range("D5").Value = CDbl(TextRigide2)
    Me.TextRigide5 = Sheets("TARIF GRILLAGE RIGIDE").Range("D8")
    Call Traitement_1
End Sub

Sub Traitement_1()
    Me.TarifHt1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E5"), 0)
    Me.TarifHt2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E6"), 0)
    Me.TarifHt3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E7"), 0)
    Me.TarifHt4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E8"), 0)
    Me.TarifHt5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E10"), 0)
    Me.TarifHt6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
    Me.Marge1 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F5"), 0)
    Me.Marge2 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F6"), 0)
    Me.Marge3 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F7"), 0)
    Me.Marge4 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F8"), 0)
    Me.Marge5 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F10"), 0)
    Me.Marge6 = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("E11"), 0)
    Me.TarifHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D13"), 0)
    Me.MargeHtTotal = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("F13"), 0)
    Me.HauteurFin = Sheets("TARIF GRILLAGE RIGIDE").Range("D9")
    Me.Moa = Round(ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE").Range("D12"), 0)
    Me.TextCoeff = Round(ThisWorkbook.Worksheets("BASE").Range("G5"), 1)
    Me.TextJour = Round(ThisWorkbook.Worksheets("BASE").Range("M14"), 0)
End Sub

ric

Bonjour

Si vous placez la macro Sub Traitement_1 dans l'userform, vous pouvez essayez ceci

Sub Traitement_1()
Dim i As Byte

With ThisWorkbook.Worksheets("TARIF GRILLAGE RIGIDE")

    For i = 1 To 6
        Select Case i
            Case Is < 5
                Controls("TarifHt" & i) = Round(.Range("E" & i + 4), 0)
                Controls("Marge" & i) = Round(.Range("F" & i), 0)
            Case Is >= 5
                Controls("TarifHt" & i) = Round(.Range("E" & i + 5), 0)
                Controls("Marge" & i) = Round(.Range("F" & i + 5), 0)
        End Select
    Next i

    TarifHtTotal = Round(.Range("D13"), 0)
    MargeHtTotal = Round(.Range("F13"), 0)
    HauteurFin = .Range("D9")
    Moa = Round(.Range("D12"), 0)
End With
With ThisWorkbook.Worksheets("BASE")
    TextCoeff = Round(.Range("G5"), 1)
    TextJour = Round(.Range("M14"), 0)
End With
End Sub

Les deux Private Sub TextRigide1_Change() et Private Sub TextRigide2_Change() proposées par ric doivent bien entendu rester

Crdlt

Bonjour,

Quand j'efface un textbox pour mettre une autre valeur cela me mes une erreur , j'ai voulu faire que cela reste pas vide avec ce code , mes cela fonction pas totalement car reste a 0 après effacement

Private Sub MurPrix2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or MurPrix2.SelStart > 0 And Chr(KeyAscii) = "-" _
     Or InStr(MurPrix2.Value, ",") <> 0 And Chr(KeyAscii) = "," Then
      KeyAscii = 0: Beep
   End If
End Sub

Private Sub MurPrix2_Change()
Sheets("BASE").Range("C24").Value = MurPrix2
If Sheets("BASE").Range("C24") = "" Then
Sheets("BASE").Range("C24") = 1
End If
Call Traitement_1
End Sub

Bonjour à tous,

J'ai utilisé le fichier que je t'ai soumis le https://forum.excel-pratique.com/excel/listbox-sur-vba-148202/2#p916543

J'y ai créé un textbox au nom "MurPrix2 > j'y ai collé tes codes "MurPrix2_KeyPress" et "MurPrix2_Change" ...

Ici ça fonctionne à merveille > aucun zéro persistant à l'effacement ...

ric

Alors oui ca fonctionne , mes ma valeur et utilisé dans une autre formule et c'est la que du coup ca bug

En faite ce bug dans mon traitement()

Sub Traitement_2()
Me.MurPrix2 = Round(ThisWorkbook.Worksheets("MUR").Range("C24"), 2)
End Sub

Bonjour à tous,

Me.MurPrix2 = Round(ThisWorkbook.Worksheets("MUR").Range("C24"), 2)

Ce code n'a rien d'anormal ...

Est-ce que la feuille "MUR" existe bien ?

Et que contient la cellule C24 de cette feuille ?

ric

Oui bien sure voila le fichier

Bonjour,

Dans ton dernier fichier, il y a des chiffres dont la partie décimale est séparée par des points et d'autres pas des virgules ...

Ce qui pose problème > surtout avec les Round ...

Quel est le séparateur décimal de ta machine ?? > je vais adapter la mienne pour ton fichier ...

ric

Valeur décimal ? ( , )

Bonjour,

Après avoir corrigé les cellules afin que la valeur contenue retrouve son bon format ( F2 et Entrée ) > il ne semble plus y avoir de soucis ...

Si un chiffre entier ou décimal sort d'un textbox pour aller dans une feuille > ce chiffre sortira en texte ...

Il faut donc forcer ce texte à redevenir une valeur ...
Sinon, l'on risque des écritures de mauvais formats dans les feuilles et d'accumuler les soucis ...

Exemple :

Sheets("CLOTURE BOIS").Range("N40") = CDbl(F_Produit.LongeurBois) > CDbl si le chiffre à des décimales ...
ou
Sheets("CLOTURE BOIS").Range("N40") = CInt(F_Produit.LongeurBois) > Cint si le chiffre est un entier ...

Autres types ...
https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/type-conversion-functi...

ric

Bonjour a tous ,

Voila dans le USERFOM j'ai crée un nouvelle ONGLET " DEVIS'

Je voudrais pourvoir récupère tout les infos qui sont sur la feuille Devis et pouvoir les modifier directement dans le USERFOM , j'ai fait plusieurs teste les sans grand succès

8devis-test.zip (313.72 Ko)

UP

Bonjour

Je pense que Ric a omis de vous répondre sur la demande... Avec ce message, il va probablement revenir vers vous avec une solution

Cordialement

Rechercher des sujets similaires à "listbox vba"