VBA Excel format de cellule

Moujik1 -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
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,

A voir également:

3 réponses

eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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
Moujik1
 
non ça ne fonctionne pas du tout au contraire au lieu de

Prénom Nom 25,12

ça donne
25,12 Nom
0
tomalex2010 Messages postés 31 Statut Membre 4
 
bonjour,
A déplacer dans le forum Programmation
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
bonjour,
Remarque pertinente, mais je crois qu'ici on a renoncé à déplacer ce type de sujet.
tu va tous les faire?
0