VBA Excel format de cellule

Fermé
Moujik1 - 5 août 2011 à 11:19
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 5 août 2011 à 12:04
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

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
Modifié par eriiic le 5/08/2011 à 12:05
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 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
5 août 2011 à 11:39
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
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 28 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 5 août 2011 4
5 août 2011 à 11:39
bonjour,
A déplacer dans le forum Programmation
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
5 août 2011 à 11:48
bonjour,
Remarque pertinente, mais je crois qu'ici on a renoncé à déplacer ce type de sujet.
tu va tous les faire?
0