VBA Excel format de cellule

Bonjour,

Je cherche à importer en dernière ligne vide de ma feuille excel une plage de trois valeurs précédemment appelées dans un combobox avec la commande rowsource. Ensuite j'attribue un format à la dernière cellule copiée pour qu'elle soit un chiffre et puisse être additionnées dans mes totaux.

Mon code est le suivant :
i = 1
Sheets("Archives").Select
While Not Range("A" & i).Value = ""
i = i + 1
Wend

ComboBox1.TextColumn = 1
Range("b" & i) = ComboBox1.Text
ComboBox1.TextColumn = 2
Range("c" & i) = ComboBox1.Text
ComboBox1.TextColumn = 3
Range("d" & i) = ComboBox1.Text
Sheets("Archives").cells(i, "d").NumberFormat = "0,00 €"

il fonctionne si la valeur à rentrer dans la colonne n'a pas de décimale elle est alors considérée comme un nombre. En revanche, si je rentre une valeur avec des décimales alors le format n'est pas pris en compte et elle est considérée comme du texte.

Merci d'avance,

3 réponses

  1. Modérateur
    Salut,
    Peut être est ce du au séparateur?
    VBA utilise le point comme séparateur, excel la virgule (en france).
    Par conséquent, lors de "l'export" des données de VBA vers Excel, ce dernier traite les points comme du texte...
    Ok?
    Alors pour remédier à cela, il faut remplacer les points par des virgules :
    Range("b" & i) = ComboBox1.Text

    devient donc
    Range("b" & i) = Replace(ComboBox1.Text, ".", ",") 

    Si c'est pas ça, dis le...
    0
    1. non ça ne fonctionne pas du tout au contraire au lieu de

      Prénom Nom 25,12

      ça donne
      25,12 Nom
      0
  2. Contributeur
    Bonjour,

    Tu peux mettre tous les formats numériques que tu veux, un texte restera un texte.
    Il faut convertir ton texte en numérique avant de l'inscrire dans la cellule.
    Ex:
    Range("d" & i) = cdbl(ComboBox1.Text)
    pour convertir en réel double précision.
    Le séparateur doit être correct également, comme l'a fait remarquer pijaku, pour qu'excel puisse convertir. Le replace() sera peut-être nécessaire en plus.

    eric
    1