VBA Excel - String en Integer

Résolu
Carotte77 Messages postés 579 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
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
--

Cochez "Problème résolu" au début de la discussion lorsque votre problème est résolu ! Merci ;)<code><gras>

8 réponses

  1. le père
     
    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
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Je ne pense pas que la solution de "le père"" fonctionnera.
    Sinon...
        Range("B5") = CDbl(Replace(Range("B5"), ".", ","))

    A+
    0
  3. Carotte77 Messages postés 579 Statut Membre 542
     
    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) ?
    0
  4. le père
     
    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"
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. le père
     
    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 ?
    0
  7. Carotte77 Messages postés 579 Statut Membre 542
     
    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 :/
    0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0