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
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