Format nombre formulaire

Bonjour à tous les membres,

J'ai une petite question. J'ai un classeur excel se remplissant avec un formulaire/userform créé avec VBA.

Lorsqu'un nombre est placé dans une cellule, via le formulaire, j'ai message d'erreur "Le nombre dans cette cellule est placé au format texte ou est précédé d'une apostrophe". Cela m'embête, car ces erreurs empêche les "totaux" de se calculer en bas de mon tableau.

Quelqu'un pourrait-il m'aider ?

Faut-il convertir les textbox en "nombre" ? Si oui comment s'y prendre ?

Ou autre solution, forcer le calcul malgré les erreurs de conversion ?

Merci à vous,

PS : je peux joindre mes lignes de code si nécessaire.

Steven

bonjour

Un petit fichier ?

bonjour,

Joindre directement une copie du classeur. avec la feuille ET le formulaire.

Il n'est pas nécessaire de laisser toutes les données : Une ligne suffira pour peu que le formulaire fonctionne.

[EDIT] Salut et

A+

Bonjour à vous deux, merci pour vos réponses.

Voici le fichier en pièce jointe.

Les colonnes concernées sont, les colonnes O, R, V, W correspondantes respectivement aux textbox 12,13,14,15 du formulaire.

Le formulaire s'affiche en cliquant sur le bouton "saisie rapide" sur la page d’accueil. Penser à sélectionner la discipline "ECO" dans le menu déroulant du formulaire.

En gros, les chiffres ajoutés avec le formulaire ne sont pas pris en compte dans les totaux.

Un grand merci,

Steven

PS : Désolé pour la présentation du classeur, j'ai du supprimer quelques feuilles et l'image de la page d’accueil pour joindre le fichier, car trop lourd à la base...

Bonsoir,

Les TextBox comme leur nom l'indique contiennent du Texte.

C'est à toi de formater le contenu de telle manière qu'il soit reconnu comme il faut par les cellules cibles ou formater les cellules au format souhaité :

Dans cet exemple la validation formate la cellule de la première colonne dans un format personnel

2 ème colonne reçoit du texte, la 3ème une date, et la 4ème une valeur

Ainsi toutes les saisies non-texte doivent être contrôlées converties ou/et formatées en fonction du résultat attendu.

 With WShC
   .Cells(iR, 1).Value = Textbox1
   .Cells(iR, 1).NumberFormat = "\C0000"
   .Cells(iR, 2) = TextBox2 & "." & CLng(CDate(txtDatC))
   .Cells(iR, 3) = CDate(TextBox3)
   .Cells(iR, 4) = Val(TextBox4)
End With

A+

Merci beaucoup pour ta réponse.

Donc si je reprends ton exemple, dans mon cas ça devrait donner :

Private Sub CommandButton1_Click()

Dim L As Integer

L = Sheets(ActiveSheet.Name).Range("A1").End(xlDown).Row + 1

        'Pour placer le contenu des différentes textbox dans les cellules

        Range("A" & L).Value = ComboBox1
        Range("B" & L).Value = TextBox1
        Range("C" & L).Value = TextBox2
        Range("D" & L).Value = TextBox4
        Range("E" & L).Value = TextBox5
        Range("F" & L).Value = TextBox3
        Range("G" & L).Value = TextBox6
        Range("H" & L).Value = TextBox7
        Range("I" & L).Value = TextBox8
        Range("J" & L).Value = TextBox9
        Range("K" & L).Value = TextBox10
        Range("N" & L).Value = TextBox11
        Range("O" & L).Value = TextBox12
        Range("T" & L).Value = TextBox13
        Range("V" & L).Value = TextBox14
        Range("W" & L).Value = TextBox15
        Range("AE" & L).Value = TextBox20

    End

 With WShC
   .Range("O" & L).NumberFormat = "0"
   .Range("T" & L).NumberFormat = "0"
   .Range("V" & L).NumberFormat = "0"
   .Range("W" & L).NumberFormat = "0"

End With

End Sub

Or, j'ai du louper une étape (j'ai un niveau débutant en VBA) car cela ne marche pas

Bonjour,

un textbox contient une chaine, il faut la convertir en numérique :

Range("A" & L).Value = cdbl(ComboBox1)

eric

bonjour,

[Edit] Salut Eriiic !

.Value n'est pas une fonction de conversion en nombre : C'est une propriété de la cellule ou du range.

Dans la plupart des cas il n'est pas nécessaire de spécifier .Value (car c'est souvent la propriété par défaut)

C'est le contenu du TextBox que tu dois convertir avant de le transférer dans ton range.

Si tu veux transférer du texte tu ne fais aucune conversion.

Si tu veux transférer une date tu vas écrire :

.Cells(iR, 3) = CDate(TextBox3)

Pour un nombre tu vas utiliser CInt, Int, Val ou des formats décimaux...

Le formatage c'est après : si la cellule n'est pas formaté... ça dépend de tes habitudes de travail. On formate souvent toute la colonne quand on crée un tableau. Dans ce cas inutile de formater ton entrée à chaque fois... Cependant pour quelques formats spéciaux et dans certains cas, c'est presque indispensable...

Ok ?

Le transfert du Userform vers la Base de Données n'est pas la partie la plus simple. C'est même la partie la plus sensible.

C'est elle qui va donner vie (valider, contrôler) à la saisie de l'utilisateur :

Voici un exemple réel de transfert vers une base de donnée :

Cells(i, 1) = Val(TbxNumLic)
Cells(i, 1).NumberFormat = "#"
Cells(i, 2) = CDate("19/08/1949")
Cells(i, 2) = LblSetInt
Cells(i, 3) = LblCiv
Cells(i, 4) = TbxNom
Cells(i, 5) = TbxPrenom
Cells(i, 6) = LblSexe
Cells(i, 7) = CDate(TbxDateN)
Cells(i, 8) = LblCat
Cells(i, 9) = Left(LblTypeVal, 1)
Cells(i, 10) = MFStr(TbxAdr1)
Cells(i, 11) = MFStr(TbxAdr2)
Cells(i, 12) = Format(TbxCodep, "00000")
Cells(i, 13) = ComboVille
If TbxTel <> "" Then Cells(i, 14) = CLng(TbxTel)
Cells(i, 14).NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
If TbxPor <> "" Then Cells(i, 15) = CLng(TbxPor)
Cells(i, 15).NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
On Error Resume Next
If Not IsDate(TbxCerMed) Then
Cells(i, 16) = IIf(TbxCerMed = "X", "X", "")
Else
Cells(i, 16) = CDate(TbxCerMed)
End If
Cells(i, 17) = TbxMail
Cells(i, 18) = IIf(CBxAss, "", "N")
Cells(i, 19) = IIf(LblNat = "FRA", "", LblNat)
Cells(i, 20) = TbxInfos

Dans ton fichier pour les TextBox utilisant des valeurs numérique tu pourra sans doute utiliser :

Cells(i, 1) = Val(TextBox1) 'à adapter

A+

se méfier de val() qui n'aime pas du tout les virgules, préférer cdbl() :

Val("10,3") => 10 !

Si le séparateur est le point ça va.

Aaaaah super j'ai réussi grâce à vous!

Pour le moment "val" à l'air de fonctionner, car les cellules contiennent uniquement des nombres entiers donc pas de virgule. On verra à l'utilisation.

Encore merci pour votre aide, et bonne soirée à vous

Amicalement Steven

Rechercher des sujets similaires à "format nombre formulaire"