VBA Excel - String en Integer

[Résolu/Fermé]
Signaler
Messages postés
543
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 juin 2011
-
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
-
Bonjour,

J'ai de nombreuses colonnes et beaucoup plus de lignes, contenant des nombres (créés par une station météo), mais qu'Excel ne perçoit pas comme tels, mais plutôt comme des chaînes de caractères.

Les nombres sont au format "256.400" (par exemple).

Je voudrais en fait transformer ces nombres en décimaux. J'ai essayé de transformer les points en virgule dans chaque cellule, mais cela me décale de 3 la virgule vers la droite (puisqu'en fait à partir du moment où je retire le point en VBA, Excel reconnait la chaîne comme un entier, et considère que la virgule se place à la fin du nombre).

Exemple de ma demande : à partir de "256.400", je désirerais obtenir "256,00".

Merci beaucoup à ceux qui pourront m'aider !
NB : je suis sous Excel 2007

8 réponses

Bonjour
Fix(Val(variablechaine))
Fix ou Round selon l'effet recherché (nombre tronqué ou arrondi)
Pour afficher le ",00" sans passer au type chaîne, il faut mettre le format de ta cellule en numérique avec 2 chiffres
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 171
Bonjour,
Je ne pense pas que la solution de "le père"" fonctionnera.
Sinon...
    Range("B5") = CDbl(Replace(Range("B5"), ".", ","))

A+
Messages postés
543
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 juin 2011
482
Merci pour vos réponses.
La réponse de lermitte222 me semble plus appropriée, mais comment faire pour parcourir toutes les cellules de la colonne B à BO (donc 66 colonnes en tout) ?
Je ne pense pas que la solution de "le père"" fonctionnera
grrr ! (forcément ;) )
J'avais testé avant de poster
Je suis sûr que celle de lermite222 ne fonctionnera pas. Carrotte77 a écrit qu'il désirait obtenir "256,00" à partir de "256.400" . Avec cette méthose, on va plutôt obtenir "256,4"
J'ai répondu un peu tard... donc ça n'était pas 256,00 que tu voulais obtenir ? pas un entier comme ton titre le disait ?
Messages postés
543
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 juin 2011
482
En effet, mon titre porte à confusion. Ce que je voulais dire, c'est plutôt obtenir un String en double.

Et en plus je me suis trompé dans ma question... A partir de "256.400", je voudrais obtenir "256,40".

Veuillez m'excuser :/
Pas de problème :)
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 171
Pour valider plusieur lignes et colonnes...
Sub EnDbl()
Dim Col As Integer
Dim Lig As Long, LigDep As Long, LigFin As Long
    LigDep = 3 'la ligne où commencer
    LigFin = 10 'la ligne où finir
    For Lig = LigDep To LigFin
        For Col = 2 To 68
           Cells(Lig, Col) = CDbl(Replace(Cells(Lig, Col), ".", ","))
        Next Col
    Next Lig
End Sub

A+
Bonjour "le père", j'ai dis 'je pense' ça n'est pas toujours le cas mais il arrive qu'avec des valeurs importées il n'est possible de les transformer qu'avec la méthode que j'ai suggérer.
A+