web-dev-qa-db-fra.com

comment écrire une valeur dans une cellule avec du code vba sans conversion automatique de type?

Ce problème semble très simple, mais je ne trouve pas la solution (je suis déjà en train de perdre la raison :))

OK, je veux juste mettre une certaine valeur dans une cellule Excel, en utilisant le code vba, aussi simple que ceci:

Cells(1,1).Value2 = "123,456"

Le problème: il s’agit d’une chaîne (intentionnelle), mais Excel la convertit toujours en nombre et place ce nombre dans la cellule, au lieu de la chaîne souhaitée.

Comment puis-je forcer Excel à ne pas le convertir et à mettre dans la cellule exactement ce que je veux (la chaîne) ??

Merci,

4
Derényi István
Cells(1,1).Value2 = "'123,456"

notez l'apostrophe simple avant le numéro - cela indiquera à Excel que tout ce qui suit doit être interprété comme du texte.

8
SeanC

En effet, comme l'a souligné Tim Williams, le moyen de le faire fonctionner consiste à effectuer un pré-formatage au format texte. Ainsi, pour tout faire via VBA, procédez comme suit:

Cells(1, 1).NumberFormat = "@"
Cells(1, 1).Value = "1234,56"
7
Alexandre

C'est probablement trop tard, mais j'ai eu un problème similaire avec les dates que je voulais entrer dans les cellules d'une variable de texte. Inévitablement, il a converti ma valeur de texte variable en date. Ce que je devais finalement faire était concatenter un 'à la variable chaîne et ensuite le mettre dans la cellule comme ceci:

prvt_rng_WrkSht.Cells(prvt_rng_WrkSht.Rows.Count, cnst_int_Col_Start_Date).Formula = "'" & _ 
    param_cls_shift.Start_Date (string property of my class) 
0
im_Spartacus