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

Fabien1988 Messages postés 3 Statut Membre -  
Fabien1988 Messages postés 3 Statut Membre -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  3. Fabien1988 Messages postés 3 Statut Membre
     
    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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      c'est bien d'être transparent, ça dispense de répondre...
      eric
      0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Fabien1988 Messages postés 3 Statut Membre
     
    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