PB format nombre de l'userform vers feuille en valeur texte
Bonjour,
En désespoir de cause je poste un sujet qui revient régulièrement dans les différents forums mais dont toutes les solutions données malheureusement n'ont pas fonctionnées de mon coté.
J'ai un userform avec une listbox, du texte et des nombres. Ces informations permettent une meilleure ergonomie pour enregistrer les données et à la fois permettre des tableaux de synthèses. Coté formulaire, j'ai bien réussi à mettre mes textbox en format numérique avec CDbl et VAL, mais lors du transfert dans la feuille de calcul j'ai systématiquement une erreur de valeur texte.
Ma colonne dans la feuille n'a pas de mise en forme d'alignement, j'ai tenté de convertir ma colonne en nombre, monétaire etc... Cela marche mais alors dans mon formulaire je me trouve avec des nombres qui ne sont pas avec le séparateur de milliers, ni décimales (surtout dans la listbox), dés que je prends le bon formatage de mon formulaire, le nombre s'importe bien dans la feuille de calcul mais je me retrouve avec encore un petit carré vert...
Mon formulaire et tous le codage est pris sur la base de "boisgontier", avec un tableau dynamique. Mes valeurs sont importées dans la feuille de calcul à l'aide du bouton validation avec ce code ci:
Private Sub B_valid_Click()
Enreg = Me.Enreg
For c = 1 To NbCol
If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
tmp = Me("textbox" & c)
If Not IsNull(tmp) Then
If IsNumeric(Replace(tmp, ".", ",")) And InStr(tmp, " ") = 0 Then
tmp = Replace(tmp, ".", ",")
tmp = Format(tmp, "#,##0.00")
Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
Else
If IsDate(tmp) Then
Range(NomTableau).Item(Enreg, c) = CDate(tmp)
Else
Range(NomTableau).Item(Enreg, c) = tmp
End If
End If
End If
Else
Range(NomTableau).Item(Enreg - 1, c).Copy
Range(NomTableau).Item(Enreg, c).PasteSpecial Paste:=xlPasteFormats
End If
Next c
UserForm_Initialize
raz
Unload Me ' Vide et ferme l'Userform (formulaire)
UserFormPP.Show 'Affiche le formulaire
Application.ScreenUpdating = True
End Sub
Pour le format nombre j'ai fais ainsi:
'Private Sub TextBox18_AfterUpdate()
'TextBox18.Value = Format(Val(Replace(TextBox18.Value, ".", ",")), "#,##0.00")
'End Sub
Mais là impossible d'insérer des décimales, il les prends à la saisie mais ne me les reportent pas dans la feuille excel ni la listbox, alors j'ai tenté ainsi:
Private Sub TextBox18_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789.,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
If InStr(TextBox1, ",") > 0 And KeyAscii = Asc(",") Then KeyAscii = 0
If Len(Split(TextBox1 & ",0", ",")(1)) > 1 Then KeyAscii = 0
End Sub
Private Sub TextBox18_Change()
Application.EnableEvents = False
If InStr(TextBox18.Value, ",") = 0 Then
entier = Replace(TextBox18.Value, " ", "")
x = ""
For I = Len(entier) To 1 Step -1
x = Mid(entier, I, 1) & x
If ((Len(entier) - I + 1) Mod 3 = 0) Then x = " " & x
Next
On Error Resume Next ' effacement
TextBox18.Value = IIf(Left(x, 1) = " ", Mid(x, 2, Len(x) - 1), x)
End If
Application.EnableEvents = True
End Sub
J'ai bien compris que c'est sans doute un problème de formatage, mais quelle serait la solution?
Si quelqu'un de compréhensible peux m'aider? J'ai tenté de rentrer en contact avec "Boisgontier", mais malgré un site très bien conçu pour l'apprentissage des formulaires, impossible de pouvoir envoyer un message;, c'est dommage, car je suis certaine que ce ne doit pas être bien grand chose pour résoudre ma problématique.
Si jamais il passait par là...
D'avance merci en tous cas.
Bonjour Mistinguette
Avec un fichier anonymisé d'échantillon, ce serait mieux pour vos répondre
A+
Oui je comprends tout à fait je vais essayer de vous préparer cela, car mon fichier comporte plus de 50 colonnes... Alors cela va me prendre du temps... Si il n'y a pas d'autres solutions, je passerai par un envoi.