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 :

Ajouter 0 devant un chiffre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 45
    Par défaut Ajouter 0 devant un chiffre
    Bonjour,

    J'ai besoin d'ajouter un zéro devant tous les chiffres seul dans la colonne B uniquement.
    Je souhaite le faire dans une Macro VBA plutôt que par le format de cellule, car lorsque la cellule est utilisée dans une fonction ça ne rajoute pas le zéro...

    En vous remerciant par avance de votre aide.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir
    applique un numberformat au cellule qui ont le round(.value,0)=au .value sur toutes les cellules utilisée de la colonne"B"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Sub test()
        For Each cel In Sheets(1).Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)
            If IsNumeric(cel.Value) Then
                If Round(cel.Value, 0) = cel.Value Then cel.NumberFormat = "00"
            End If
        Next
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 45
    Par défaut
    Bonjour et merci pour ta réponse patricktoulon !

    En effet c'est efficace, mais malheureusement j'ai le même problème que lorsque j'utilise le format de cellule personnalisé 0#
    Lorsque j'utilise une case B avec la fonction suivante :

    Et bien le chiffre ne s'affiche pas avec le 0 ...

    En fait, je suis obligé de forcer le format de cellule en mode texte. Mais si je fais cela, alors le code VBA ne fonctionne plus évidemment

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Il faut mettre la colonne B au format texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        Columns("B:B").NumberFormat = "@"
        For Each cel In Sheets(1).Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)
            If IsNumeric(cel.Value) Then cel.Value = "0" & cel.Value
        Next
    End Sub
    Cdlt

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 45
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,

    Il faut mettre la colonne B au format texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        Columns("B:B").NumberFormat = "@"
        For Each cel In Sheets(1).Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)
            If IsNumeric(cel.Value) Then cel.Value = "0" & cel.Value
        Next
    End Sub
    Cdlt
    Splendide ! Merci beaucoup à vous deux pour votre réactivité !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par patricktoulon Voir le message
    [...]
    applique un numberformat au cellule qui ont le round(.value,0)=au .value sur toutes les cellules utilisée de la colonne"B"[...]
    Je me méfierais grandement de cette solution qui, si elle "corrige" visuellement la valeur, ne la modifie pas. Ca peut amener à des casse-têtes par la suite.

    Nom : 2019-06-05_203654.png
Affichages : 5529
Taille : 35,9 Ko


    Nom : 2019-06-05_203850.png
Affichages : 5432
Taille : 25,4 Ko



    Normalement, dans un classeur bien construit, ne devraient être en numérique que les cellules contenant des valeurs sur lesquelles on peut réaliser des opérations arithmétiques. Je doute que l'on manipule arithmétiquement les cp ou les numéros de téléphone, sauf dans le cas assez rare où un lillois marierait une privadoise et qu'ils s'établiraient à Perpignan...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut Nombre vs chiffre
    Bonjour,

    Excel a une tendance naturelle (et compréhensible) à transformer les chiffres en nombres. Seul le format de cellule 'Texte' permet d'écrire dans une cellule des chiffres commençant par zéro sans qu'Excel ne le transforme en nombre. Le format numérique "00" ne fait que changer l'apparence d'un nombre sans réellement ajouter de zéro devant.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par spedy34 Voir le message
    Bonjour,

    J'ai besoin d'ajouter un zéro devant tous les chiffres seul dans la colonne B uniquement.
    Je souhaite le faire dans une Macro VBA plutôt que par le format de cellule, car lorsque la cellule est utilisée dans une fonction ça ne rajoute pas le zéro...

    En vous remerciant par avance de votre aide.
    on est bien d'accords qu'a partir du moment ou il y a vraiment un "0" devant elle n'est plus exploitable en tant que nombre t'en es bien conscient

    perso je ferais la modif dans ta fonction l'ors de la référence a ces cellules comme ca tu peux faire des opérations numériques ou concaténation avec d'autre cellules en formatant les valeurs (string avec format(cellule.value,"00"))
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    [...]
    perso je ferais la modif dans ta fonction l'ors de la référence a ces cellules comme ca tu peux faire des opérations numériques ou concaténation avec d'autre cellules en formatant les valeurs[...]
    Là on est d'accord
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Citation Envoyé par patricktoulon Voir le message
    on est bien d'accords qu'a partir du moment ou il y a vraiment un "0" devant elle n'est plus exploitable en tant que nombre
    Si tu as 012 en format texte en A1 ou même '012, rien n'empêche Excel de te résoudre la formule et tu obtiens bien tes 3 douzaines !

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par anasecu Voir le message
    Bonjour,


    Si tu as 012 en format texte en A1 ou même '012, rien n'empêche Excel de te résoudre la formule et tu obtiens bien tes 3 douzaines !
    Il n'y a pas que des cas comme celui-là. Il y des cas où ce n'est pas si simple. Les besoins de formatage de nombres en Excel sont variés.

    Nom : 2019-06-06_090803.png
Affichages : 5128
Taille : 6,1 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. Ajout de 0 à un chiffre
    Par roseline43 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/09/2008, 18h21
  2. Ajouter trois "0" deux chiffres aprés un point
    Par ilanb dans le forum Excel
    Réponses: 10
    Dernier message: 08/07/2008, 11h16
  3. comment ajouter mailto: devant un Email
    Par tomas dans le forum Access
    Réponses: 3
    Dernier message: 09/03/2007, 14h24
  4. [Tableaux] Ajouter 0 devant un chiffre
    Par dj-julio dans le forum Langage
    Réponses: 3
    Dernier message: 17/01/2006, 10h35
  5. [class] Ajouter class devant une fonction
    Par Pedro dans le forum Langage
    Réponses: 12
    Dernier message: 07/03/2005, 13h11

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