VBA Excel - String en Integer

Résolu
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. 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
    1. Contributeur
      Bonjour,
      Je ne pense pas que la solution de "le père"" fonctionnera.
      Sinon...
          Range("B5") = CDbl(Replace(Range("B5"), ".", ","))

      A+
      1. 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) ?
        1. 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"
          1. 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 ?
            1. 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 :/
              1. Contributeur
                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+