Envoyer les chiffres au format nombre dans le TableauDevis
Bonsoir.
Comment faire pour que la quantité ( TextBoxQuantiteDevis ) et les prix ( TextBoxDPCTTC et TextBoxTTC€Adapable ) soient envoyés au format "nombre" dans le TableauDevis ?
C'est depuis le formulaire AjouterAuDevis.
Private Sub CB_Valider_Click()
'*********************
' bouton Valider
'*********************
Dim Arr, C
Arr = f_TextBoxDevisEnCours()
' If VarType(Arr(0)) = vbString Then MsgBox "erreur " & Arr(0): Exit Sub
'// cas du devis "plein" voir module2, ligne 38 papicx le 10/09/2025
If VarType(Arr(0)) = vbString Then MsgBox "erreur " & Arr(0) & " Veuillez créer un autre devis pour faire la suite. Merci": Exit Sub
If Val(Me.TextBoxQuantiteDevis.Text) = 0 Then MsgBox "Vous devez indiquer une quantité de pièce pour ce devis.", 64, "QUANTITÉ MANQUANTE": Exit Sub
If OptionButtonHonda = False Then
If OptionButtonAdaptable = True Then
End If
If OptionButtonAdaptable = False Then MsgBox "Vous devez choisir entre pièce Honda d'origine ou une pièce adaptable.", 64, "Pièce d’origine ou adaptable ?": Exit Sub
End If
Set C = Range("TableauDevis").Cells(Arr(0), Arr(1)) 'cellule de la référence à ajouter
C(1, 2).Value = Me.TextBoxDesignation ' ajouté cette ligne pour fixer la désignation correspondante à la référence papicx le 20/07/2026
C(1, 3).Value = "+"
C(1, 5).Value = Me.TextBoxQuantiteDevis
If OptionButtonHonda = True Then
C(1, 1).Value = Me.TextBoxNewRefHonda ' Référence d'origine Honda
C(1, 6).Value = Me.TextBoxDPCTTC ' prix unitaire pièce Honda d'origine
End If
If OptionButtonAdaptable = True Then
C(1, 1).Value = Me.TextBoxRefAdaptable ' Référence de pièce adaptable
C(1, 4).Value = "Adaptable"
C(1, 6).Value = Me.TextBoxTTC€Adapable ' prix unitaire pièce Honda d'origine
End If
' c(1, 5).Value = Me.TextBoxTotal1Ref
Unload Me 'vider et désactiver l'userform
Exit Sub
end subvoici la fonction f_TextBoxDevisEncours() est dans le Module2
Function f_TextBoxDevisEnCours(Optional sRef As String)
Dim s, s1, i, r1, r2, i1, i2, C
s = Sheets("honda").TextBoxDevisEnCours.Text
If Len(s) = 0 Then
f_TextBoxDevisEnCours = Array("Vide", "", s)
Else
r1 = Application.IfError(Application.Match(s, Range("TableauDevis[NoDevis]"), 0), 0)
If r1 = 0 Then
f_TextBoxDevisEnCours = Array("Inconnu")
Else
With Range("TableauDevis").Rows(r1) 'la plage de ce devis dans le TS
s1 = .Parent.Name & "!" & .Address(0, 0)
If sRef = "" Then
r2 = Evaluate(Replace("max(if(len(@1)>0,column(@1),0))", "@1", s1)) 'formule pour trouver la dernière cellule non-vide dans cette plage
If r2 = 0 Then
f_TextBoxDevisEnCours = Array("Impossible")
Else
i1 = 7: i2 = 6 'la colonne "Reference01" est la 7ème colonne du TS et on a 6 colonnes par référence
r2 = (((r2 - (.Column - 1) - 7) \ 6) + 1) * i2 + i1 'formule pour calculer la colonne du suivant "Reference"-vide
If r2 >= .Columns.Count Then
f_TextBoxDevisEnCours = Array("Plein") '// cas du devis plein papicx le 10/09/2025
Else
f_TextBoxDevisEnCours = Array(r1, r2)
End If
End If
Else
r2 = Application.IfError(Application.Match(sRef, .Offset(0), 0), 0)
If r2 = 0 Then
f_TextBoxDevisEnCours = Array("Référence du devis inconnue")
Else
f_TextBoxDevisEnCours = Array(r1, r2)
End If
End If
End With
End If
End If
End FunctionD'ailleurs, j'ai remarqué que lorsqu'on ajoute le premier article dans un devis, celui-ci se met dans la deuxième série de champs. À partir de Reference02 pour être clair
Les suivants se mettent bien dans les colonnes suivantes correctement.
J'ai bien essayé de bricoler ce code, mais je n'y arrive pas.
NB : vu mes connaissance en VBA, "bricoler" est bien le verbe juste me concernant.
Merci d'avance de votre aide.
Bonjour,
Allez dans le code Private Sub CB_valider_click et ajouter une ligne avec l'instruction "numberformat"
Exemple pour la ligne --> C(1, 5).Value = Me.TextBoxQuantiteDevis, ajoutez cette ligne juste en dessous :
C(1, 5).NumberFormat = "#,##0.00"Idem pour les autres cellules concernées par le format nombre
Crdlt
Bonjour,
Hello Dan
Vi, mais ça restera du texte, car issu d'un TextBox...
Perso, j'aurais converti la valeur en Double
C(1, 5).Value = CDbl(Me.TextBoxQuantiteDevis)Bonne journée
Merci cousinhub, ça marche ! :)
Le problème des chiffres en texte est donc résolu.
Aurais tu une idée pour ce souci ?
D'ailleurs, j'ai remarqué que lorsqu'on ajoute le premier article dans un devis, celui-ci se met dans la deuxième série de champs. À partir de Reference02 pour être clair
Les suivants se mettent bien dans les colonnes suivantes correctement.