Re bonjour le Forum,
Re bonjour @+Thierry,
Merci pour la réponse précédente ca fonctionne.
en mettant le fichier en teste je me suis rendu compte qu'il me manquait une Combobox.
Cette combobox ne doit pas comporté de menu déroulant,alor dans le userform j'ai créé une Zone texte nommée "Cbxlibelle"
pour l'integrée j'ai changé certaine partie des codes :
'A partir de là procédure Commune... (Le L est intialisé en fonction..)
With .Range("A" & L)
.Value = TheDate
.NumberFormat = "d mmmm yyyy"
End With
.Range("B" & L) = Me.CbxDevis '==> Changement de Val(Me.CbxDevis) pour "2004-000001"
.Range("C" & L) = Me.CbxCommanditaire
.Range("D" & L) = Me.CbxRespCommande
.Range("E" & L) = Val(Me.TxtNumberPrevA)
.Range("F" & L) = Val(Me.TxtNumberPrevB)
.Range("G" & L) = Val(Me.TxtNumberReelA)
.Range("H" & L) = Val(Me.TxtNumberReelB)
.Range("I" & L) = TheCoef
.Range("J" & L) = CoefIncerti
.Range("K" & L) = TxTotalReel
.Range("L" & L) = TxEcartTotl
.Range("M" & L) = Me.Cbxlibelle (j'ai ajouté cette ligne)
ca c'est pour la sauvegarder le libelle du devis
ensuite j'ai changer cette ligne:
Devis = WsData.Range("A2:I" & WsData.Range("A65536").End(xlUp).Row) 'augmentation !! (de A jusqu'à I)
Par
Devis = WsData.Range("A2:M" & WsData.Range("A65536").End(xlUp).Row) 'augmentation !! (de A jusqu'à M)
jai aussi changé
Private Sub TheLocker(MyBoolean As Boolean)
Dim CTRL As Variant
For Each CTRL In Array("CbxCommanditaire", "CbxRespCommande", "TxtNumberPrevA", _
"TxtTotalPrevA", "TxtNumberPrevB", "TxtTotalPrevB", "TxbGrandTotalPrev")
par
Private Sub TheLocker(MyBoolean As Boolean)
Dim CTRL As Variant
For Each CTRL In Array("CbxCommanditaire", "CbxRespCommande", " Cbxlibelle", "TxtNumberPrevA", _
"TxtTotalPrevA", "TxtNumberPrevB", "TxtTotalPrevB", "TxbGrandTotalPrev")
pour bloquer l'écriture en modification
et pour finir j'ais ajouter une ligne a cette portion de code
'Scanning du Tableau Devis si le numéro exite
For i = 1 To UBound(Devis)
If UCase(CStr(.CbxDevis.Value)) = UCase(CStr(Devis(i, 2))) Then
'si ou on remplit les CombobBox et TextBox s'y afférant
TheDate = Devis(i, 1) '<<<<<<<<< RECUPERATION DATE EN VARIABLE DATE
.TxbDate = Format(TheDate, "DD/MM/YYYY") 'Mise en format Date FR (attention c'est du Text)
.CbxCommanditaire.Value = Devis(i, 3)
.CbxRespCommande.Value = Devis(i, 4)
.TxtNumberPrevA.Value = Devis(i, 5)
.TxtNumberPrevB.Value = Devis(i, 6)
.TxtNumberReelA.Value = Devis(i, 7)
.TxtNumberReelB.Value = Devis(i, 8)
TheCoef = Devis(i, 9) '<<<<<<<<<<<<<<<<<<<<<AJOUT Coefficient d'incertitude
.Cbxlibelle.Value = Devis(i, 13) <<<<<<moi j'ai ajouter cette ligne
quand je lance le UserForm il me fait bien les sauvegardes, il renseigne bien mon formulaire et me remonte bien toutes les infos en modification de plus j'arrive bien a ne pas changer le libelle en modif.
le seul soucis c'est que si ce champ n'ai pas rempli il ne déclenche pas cette partie de code :
For Each CTRL In Controls
If CTRL.Tag = "Mandatory" Then
If CTRL.Value = "" Then Bad = Bad + 1
End If
Next
If Bad > 0 Then
MsgBox "Des Champs Obligatoire Sont Vides", vbCritical, T
Else
DevisBuilding 'Appel d'un autre macro
peux tu me dire ce que j'ai oublié de corriger
Merci d'avance,
Bon appétit,
A+
Jocelyn
PS encore une fois j'en ai coller un kilometre de long dans ce post mais maintenant tu doit avoir l'habitude 🙂 !!!!!!