IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Nombre stocké sous forme de texte [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 22
    Points : 27
    Points
    27
    Par défaut Nombre stocké sous forme de texte
    Bonjour à tous !

    Je fais face à un problème, et j'ai peur qu'il n'y ai pas de solution malgré tous les forum que j'ai pu lire...

    Voila : dans une macro excel, je sélectionne toute une feuille, et fait un "chercher - remplacer" pour remplacer les points par des virgules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Cells.Select
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    (et oui, merci le excel français pour avoir choisi les virgules au lieu des points dans les nombres)

    Hélas, lorsque la macro a fini de s'exécuter, tous les chiffres sont considérés comme des chaines de caractères (petit onglet vert : "nombre stocké sous forme de texte").

    Par contre, lorsque je fais cette opération à la main, pas de soucis, les nombre sont bien des nombres...

    Je souhaite faire une macro absolument étant donné que c'est une chose que je vais faire pour une multitude de fichiers (avec d'autres rechercher - remplacer dans la meme macro...)

    Alors voila, quelqu'un aurait-il une solution please ?

    Merci beaucoup !

  2. #2
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour

    Il n'est pas forcément utile de transformer les "." en "," ou inversement.
    Il existe deux fonctions de transformation numérique
    Val("125.26")
    Cdbl("125,26")

    ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selection.value = val(selection.value)

  3. #3
    Membre actif Avatar de L'Albatros
    Homme Profil pro
    Chercheur en économie - statistique
    Inscrit en
    Avril 2012
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en économie - statistique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 150
    Points : 239
    Points
    239
    Par défaut
    Bonjour,

    Ce bout de code vous va ? (cf bout de code ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Remplace_Point_Par_Virgule_Sans_Changer_Format()
    For Each cellule In Range("A1:A10")
        cellule.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
        cellule.Value = CDbl(cellule.Value)
        cellule.NumberFormat = "0.00"
    Next cellule
    End Sub
    '-----------------------------------------------------------------------
    Si j'ai pu vous aider, merci de me le dire avec 1 pouce

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    Merci à vous,

    @ L'albatros : ton code fonctionne, mais seulement pour les petits nombres il me semble, j'ai essayé avec genre 12345.678910 et ça me donne 12345678910,00 comme résultat... (problème avec le format ou je sais pas...)

    @ Wilfried : Merci, ça pourrait marcher. Cependant, dans le fichier sur lequel je travaille, certaines valeurs ont des virgules, d'autres des points (va savoir pourquoi !) et du coup la fonction "val" me coupe mes décimales pour mes chiffres avec virgule

    Du coup j'ai trouvé une autre solution (certes lourde) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    For Each c in ActiveSheet.Range("A4:K2000") 'spéciale dédicace à K2000
    c.Value = CDec(c)
    Et hop ! le tour est joué... (opération faite sur les "nombres qui ne sont pas affiché en tant que nombres malgré le fait qu'ils aient une virgule et non un point")

    Merci à vous deux en tout cas !!

  5. #5
    Membre actif Avatar de L'Albatros
    Homme Profil pro
    Chercheur en économie - statistique
    Inscrit en
    Avril 2012
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en économie - statistique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 150
    Points : 239
    Points
    239
    Par défaut
    Avec plaisir !
    Merci de pensez à nous voter tous les 2 du coup...
    Chapeau pour ton K2000 forever

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Une technique qui fonctionne quelle que soit la valeur dans la cellule
    consiste à changer d'abord la propriété NumberFormat de la cellule pour "General"
    puis d'y réécrire la valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each c In Selection
     c.NumberFormat = "General"
     c.Value = c.Value
    Next

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Nombre stocké sous forme de texte
    Par torvald dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/05/2011, 13h10
  2. Nombre stocké sous forme de texte .xls
    Par pfellmann dans le forum iReport
    Réponses: 0
    Dernier message: 05/08/2009, 11h11
  3. Nombre stocké sous forme de texte
    Par Archampi dans le forum Excel
    Réponses: 2
    Dernier message: 05/11/2008, 20h53
  4. Nombre stocké sous forme de texte
    Par krhyme dans le forum IHM
    Réponses: 5
    Dernier message: 31/10/2007, 00h12
  5. [VBA-E] Probleme avec Nombre stocké sous forme de texte
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2006, 01h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo