VBA - Séparateur de milliers qui perturbe le format des nombres

Bonjour à tous !

Je me permets de vous demander un petit coup de main car je me trouve bloqué sur Excel VBA.

J'ai créé un formulaire avec Visual Basic afin de référencer des infos dans une base de données, notamment des montants en euros. Pour faciliter la lisibilité de ces montants dans le formulaire, chaque box est codée pour afficher les nombres avec un séparateur de milliers :

Private Sub TextBox1_Change()
    TextBox1.Value = Format(TextBox1.Value, "# ##0")
End Sub

Mon problème est le suivant : lorsque ces montants sont basculés dans la base de données (via un bouton de commande, code ci-dessous), ils apparaissent dans Excel avec un espace au niveau du séparateur de milliers, et ne sont donc pas reconnu comme "nombre" par le tableur. Cela m'empêche notamment d'en extraire des TCD (ma méthode de secours jusqu'à présent était de convertir chaque colonne une par une dans la base de données lors de chaque modification, ce qui était assez fastidieux)

Private Sub CommandButton1_Click()
    Dim ligne As Integer
    If MsgBox("Confirmez-vous l'ajout des données ?", vbYesNo, "Confirmation") = vbYes Then
    Worksheets("Base de données").Select
    ligne = Worksheets("Base de données").Range("A456541").End(xlUp).Row + 1

        Cells(ligne, 1) = TextBox1.Value
        Cells(ligne, 2) = TextBox2.Value
        Cells(ligne, 3) = TextBox3.Value
        ...

     Else
     End If         
End Sub

Y aurait-il un moyen de garder les séparateurs de milliers à l'affichage dans le formulaire, et de les supprimer automatiquement lors de la bascule des données dans la base ? Ci-joint le fichier Excel avec les nombres dans la base de données qui ne sont pas au bon format.

Merci par avance pour votre aide précieuse !

Tibo

Bonjour,

c'est le récurrent problème des nombres en texte après avoir transités par des Textbox ou Combobox.

Ce qui est issu de ces Text ou Combo Box, est du texte, il faut donc le convertir en numérique. Une des solutions consiste à utiliser une fonction de conversion adaptée au type de numérique. J'utilise souvent la fonction CDbl() (est-ce la meilleur solution ?)

Le code deviendrait alors =

.../...
        Cells(ligne, 1) = CDbl(TextBox1.Value)
        Cells(ligne, 2) = CDbl(TextBox2.Value)
.../...

Dans la feuille on aura alors un numérique dont le format sera ( devra être ) ajusté depuis Excel.

A+

Oh mais c'est génial, c'est exactement ce qu'il me fallait ! Je viens de faire le test, ça marche nickel

Merci beaucoup pour votre aide !

Bonjour AlgoPlus,

Je me permets de relancer le sujet car le code fonctionnait parfaitement la semaine dernière, jusqu'à hier où je me suis retrouvé avec une "Erreur 13 / incompatibilité de type".

J'ai essayé de creuser un peu mais je n'arrive pas à appliquer les différentes solutions que j'ai trouvées à mon tableau. J'ai notamment essayé de changer le format des cellules où arrivent les données, de déclarer autrement les variables ... sans résultat. Auriez-vous une idée du problème ?

Merci par avance pour votre aide précieuse

Tibo

Le souci est sur toutes les saisies ?

Seulement sur certaines ? lesquelles (nombres décimaux avec virgule ou point ...) ?

Montrer également le code en faute ...

A+

Merci beaucoup pour votre retour et votre aide. Oui pardon je n'ai pas été très précis ^^ Le problème a lieu uniquement sur les nouvelles lignes de code "CDbl()", de manière aléatoire selon les saisies. Tantôt une ligne, tantôt l'autre. Le tableau contient uniquement des nombres entiers allant jusqu'à 150 000.

Je vous joins le document mis à jour si jamais.

S'il n'y a que des entiers de saisis, vous pouvez essayer de remplacer la fonction CDbl par CLng (conversion en entier long), sans trop y croire. Je pencherais plus sur une mauvaise saisie (..?)

il vaudrait mieux relancer une nouvelle discussion en précisant exactement la saisie ayant provoqué l'erreur, le message d'erreur ainsi que la ligne en erreur, pour avoir des chances de pouvoir apporter une solution...

Bonne suite

Ca marche, merci beaucoup pour votre aide

Rechercher des sujets similaires à "vba separateur milliers qui perturbe format nombres"