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

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

5 réponses

  1. 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
    1. Contributeur
      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
      1. 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
        1. Contributeur
          c'est bien d'être transparent, ça dispense de répondre...
          eric
          0
      2. 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
        1. 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