Mettre au format numérique une textbox issue d'un userform

Fermé
Fabien1988 Messages postés 3 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 9 juin 2013 - 8 juin 2013 à 12:43
Fabien1988 Messages postés 3 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 9 juin 2013 - 9 juin 2013 à 12:02
Bonjour à tous,

J'ai créé un formulaire avec un userform, quand je valide le formulaire les données sont incrémentée dans ma feuille "base".
Tout se passe correctement sauf que les nombres sont convertis en texte.
J'ai essayé de nombreuses solutions mais aucune conversion ne fonctionne.
Voici mon code:

Private Sub VALIDER_FORMULAIRE_Click()

Dim Ctrl As Control
Dim r As Integer
Dim t As Integer
Dim derligne As Integer

With Worksheets("BASE")
derligne = .Range("A65536").End(xlUp).Row + 1

For Each Ctrl In FORMULAIRE_CREER_UN_CHANTIER.Controls

r = Val(Ctrl.Tag)

If r > 0 Then
.Cells(derligne, r) = Ctrl

End If

Next

End With

TextBox1 = ""

End

End Sub

Auriez-vous une solution?

Merci d'avance
A voir également:

5 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
8 juin 2013 à 17:29
Bonjour,

les valeurs de textebox sont en chaine de caracteres.

essayez ceci:

Private Sub VALIDER_FORMULAIRE_Click()

    Dim Ctrl As Control
    Dim r As Integer
    Dim t As Integer
    Dim derligne As Integer

    With Worksheets("BASE")
        derligne = .Range("A65536").End(xlUp).Row + 1

        For Each Ctrl In FORMULAIRE_CREER_UN_CHANTIER.Controls
            r = Val(Ctrl.Tag)
            If r > 0 Then
                .Cells(derligne, r) = Val(Ctrl)
            End If
        Next
    End With
    TextBox1 = ""
End Sub
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
8 juin 2013 à 18:06
Bonjour,

tu peux aussi convertir selon le type de contenu connu :
cdbl() ou cdate()
Surtout si le séparateur décimal est la virgule, val("2,3") te retournera 2

eric
0
Fabien1988 Messages postés 3 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 9 juin 2013
8 juin 2013 à 19:04
Merci d'avoir répondu si vite.

Tu as résolu une partie de mon problème: Maintenant, avec = Val (Ctrl), les textbox où il y a des valeurs numériques sont au bon format par contre pour toutes celles où il y a du texte (et ou il n'y a rien) un 0 zéro s'affiche dans mon classeur...
Il faudrait pouvoir faire la différence entre les deux type de données.

Tu pense que c'est faisable?
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
8 juin 2013 à 23:44
c'est bien d'être transparent, ça dispense de répondre...
eric
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 9/06/2013 à 08:12
Bonjour,

Il faut convertir seulement les texteboxs qui ont des donnees "numeriques", pas celle qui ont du texte!!!!!!!

Il faut faire un test sur ce que vous avez mis dans Tag de chaque control, puisque vous utilisez ce mode de reconnaissance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fabien1988 Messages postés 3 Date d'inscription samedi 8 juin 2013 Statut Membre Dernière intervention 9 juin 2013
9 juin 2013 à 12:02
Un collègue a réussi à me dépanner:

For Each Ctrl In FORMULAIRE_CREER_UN_CHANTIER.Controls
r = Val(Ctrl.Tag)
If r > 0 Then
If r = 18 Or r = 12 Or r = 13 Then
.Cells(derligne, r) = Val(Ctrl)
Else
.Cells(derligne, r) = Ctrl
End If
End I
0