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 :

Enlever les 0 et convertir en valeurs numériques


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 32
    Par défaut Enlever les 0 et convertir en valeurs numériques
    Bonjour le forum,

    En colonne D j'ai des contenus du type ="0012345000" (signe = et " compris).

    Je souhaite obtenir 12345, soit convertir en valeur numérique et enlever les 0.
    Je n'arrive pas à convertir.
    Une fois converti je pense utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("D").Replace "0", ""
    Comment faire ?

    Merci !
    Wyrgle

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    avec cette formule que tu places en colonne E par exemple.
    =CNUM(SUBSTITUE(D1;0;""))

    Après, tu peux faire un copier /coller valeur et ensuite supprimer la colonne D.

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 684
    Par défaut
    Quid de "00123045600"?

    Je suis presque certains d'avoir déjà vu un sujet similaire sur ce forum, as tu fais une recherche?

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Avant toute autre chose : un à halaster08 pour son réflexe
    Ensuite : la relecture du message du demandeur montre bien qu'il s'agit de transformer in situ et non d'obtenir et afficher "ailleurs". VBA est alors nécessaire si l'on ne veut pas insérer, convertir, supprimer, etc ...
    Et cette transformation est simple à conduire en VBA (autre section de ce forum).

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bon
    Je n'aime pas trop les réponses VBA dans la section Excel, ni les réponses Excel dans la section VBA, mais bon ...
    voilà un petit jeu de marelle (je baptise ainsi ce mécanisme pour une raison que chacun comprendra vite) VBA

    Exemple sur la colonne C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    derlig = Range("C" & Rows.Count).End(xlUp).Row
    For Each c In Range("C1:C" & derlig).Cells
      toto = Val(c.Text)
      toto = Val(StrReverse(toto))
      toto = StrReverse(toto)
      If Left(c.Formula, 2) = "=""" Then toto = "=""" & toto & """"
      c.Formula = toto
    Next
    J'ai remis là tes "=, mais je ne vois pas ils pourraient continuer à te servir. Si tu ne les veux plus, il suffit de supprimer la ligne 6 de mon code.

  6. #6
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Avec 0012345000 en A1, la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CNUM(SUBSTITUE(SUPPRESPACE(SUBSTITUE(A1;"0";" "));" ";"0"))
    renvoie 12345.
    Avec 00123045000 en A1, la même formule renvoie 123045.
    Mais il faut une colonne supplémentaire pour obtenir les résultats.
    Cordialement
    Claude

  7. #7
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 32
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Quid de "00123045600"?

    Je suis presque certains d'avoir déjà vu un sujet similaire sur ce forum, as tu fais une recherche?
    Bonjour Halaster08,
    Oui j'ai effectué une recherche mais je ne trouve rien d'applicable à mon problème.

    Bonjour unparia,
    Ton code de marelle me rapproche de la solution, mais voila ce que j'obtiens :

    Nom : Capture.jpg
Affichages : 275
Taille : 17,1 Ko
    (colonne de gauche = les résultats des données recopiées en colonne de droite)

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    cela veut dire que certaines de tes cellules contiennent en réalité autre chose que ce que tu y vois.
    La preuve en est que l'on y voit (avant traitement) le =" qui disparaîtrait spontanément (toujours avant traitement), Excel considérerait automatiquement qu'il s'agirait là d'une formule dont il afficherait le seul résultat (et le =" ne serait donc pas affiché dans la cellule)
    Peux-tu mettre ici une capture d'écran montrant à la fois la barre de formule et la cellule sélectionnée en sélectionnant l'une de ces cellules qui continuent à poser problème ?
    J'aimerais également que, toujours alors que cette cellule est sélectionnée, tu me dises ce que renverrait l'exécution de ce petit code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MsgBox "valeur   " & Asc(Left(Selection.Value, 1)) & vbCrLf & _
    "valeur2   " & Asc(Left(Selection.Value2, 1)) & vbCrLf & _
    "texte    " & Asc(Left(Selection.Text, 1)) & vbCrLf & _
    "formule    " & Asc(Left(Selection.Formula, 1)) & vbCrLf & _
    "-" & Selection.Text & "-" & Selection.Value & "-" & Selection.Formula
    En outre : si les 3 premières lignes affichent toutes les 3 61, il va être nécessaire que tu me fasses parvenir un copié/collé de cette donnée, telle qu'elle est dans le fichier d'où tu l'importes.
    J'attends

    ATTENTION : place-toi bien sur la cellule concernée avant de lancer le code.

    Bon : je vois que tu n'es plus là. A demain, dans ce cas.

  9. #9
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Coucou Jacques ;-)
    intéressant comme test, ça me serait jamais venu à l'esprit (j'ai encore débrayé quelques neurones )
    Sans regarder tes codes au début j'étais parti sur CNUM et cherché à inversé avec une formule mais apparemment il n'en n’existe pas qui le fait directement => passage au VBA
    C'est qu'après avoir jeter un œil sur tes codes que je me suis rendu compte que je partais sur le même principe (je dirai même plus c'est la même chose ) mais en mode bourrin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i) = StrReverse(Val(StrReverse(Val(Range("A" & i)))))
    quoi qu'il soit je trouve sympa ce test et utile
    mais bon comme je n'ai pas les donnés du demandeur => pas de problème :

    '00000222555000 => 222555
    ="000558990000" => 55899
    ="9990001" => 9990001

    Amicalement

    Ryu

    Edit : curieux de voir ce qui peut provoquer ce résultat chez @Wyrgle
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

Discussions similaires

  1. Votre SGBD accepte-t-il les guillemets simples autour des valeurs numériques?
    Par dimalta5 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/03/2009, 15h45
  2. Convertir les noms de constantes Excel en valeurs numériques
    Par Martin_77 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/07/2008, 10h12
  3. Réponses: 3
    Dernier message: 15/08/2007, 15h52
  4. [TAG] Convertir une valeur numérique en hh:mm:ss
    Par Rafiki dans le forum Taglibs
    Réponses: 6
    Dernier message: 09/06/2006, 14h21

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