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 :

Format nombre avec VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #41
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    J'ai un peu modifié ce code pour avoir l'option de 15 caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 1 Then
            If InStr(Target.Text, " ") = 0 Then
               Target.Value = Format(Left(Target.Text, 12), "@@ @@ @@ @@ @@ @@") & " " & Mid(Target.Text, 13)
            End If
        End If
     End Sub
    Toutefois il ne fonctionne pas dès lors qu'il n'y a que des nombres, je pense qu'il faut que j'y ajoute cette condition : si il n'y a pas de texte alors appliquer le format nombre suivant 00 00 00 00 00 000, qu'en pensez-vous ?
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  2. #42
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Oui mais en contrôlant le nombre de caractères !   Voir dans l'aide VBA   Len   et   IsNumeric   …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #43
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Est-ce que je peux utiliser cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not WorksheetFunction.IsText(Column(i,1).Value) Then...
    Il me faut trouver la suite pour avoir le bon format nombre 00 00 00 00 00 000
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  4. #44
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    met ton formatage dans une variable et modifie le au besoins
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    formatage="@@ @@ @@ @@ @@ @@@"
    if isnumeric(target.value) then formatage=replace(formatage,"@","#")
    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

  5. #45
    Invité
    Invité(e)
    Par défaut
    effectivement j'ai rien compris!

    Nom : TesRd2.gif
Affichages : 193
Taille : 83,3 Ko

  6. #46
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    J'ai modifié le code comme suit, mais le format nombre ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 1 Then
            If InStr(Target.Text, " ") = 0 Then
               Target.Value = Format(Left(Target.Text, 12), "@@ @@ @@ @@ @@ @@") & " " & Mid(Target.Text, 13)
            End If
            formatage = "@@ @@ @@ @@ @@ @@@"
    If IsNumeric(Target.Value) Then formatage = Replace(formatage, "@", "00 00 00 00 00 000")
        End If
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  7. #47
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    dysorthographie, votre code a l'air de fonctionner ???
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  8. #48
    Invité
    Invité(e)
    Par défaut
    c'est pourtant le premier que j'ai posté! je pensai être dans les spam!

  9. #49
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Comment le mettre dans ma feuille ? Je crois qu'il faut le mettre dans un module, n'est-ce pas ? et comment appeler cette fonction à partir de ma feuille ?
    Merci par avance
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  10. #50
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    robert et rené14
    en fait robert ton truc marche parce que tu travaille sur une chaine (numeric ou pas) dans une variable

    on a d'autre problème en fait
    le premier et non des moindre c'est que quand l'utilisateur tape une série de chiffre exel le met en abrégé quand il y a 15 caractères
    ok pas de soucis on prends le .value
    sauf que le ".value" supprime les zéro qui sont devant se qui fait que a l'application du formatage il maque des caractères
    et si on prend le .text on a la chaine en abrégé
    c'est balo hein !!!

    j'ai une idée sur une autre méthode mais c'est farfelu (utilisation d'un textbox qui lui ne subit pas le formatage automatique des cellules

    ps j'ai essayé avant tout de mettre la colonne au format text et on peut taper ce que l'on veut mais la macro ne marche plus

    le 2d problème c'est les variantes qui lui sont nécessaires

    ingérables dans le sens ou même si on arrive a replacer les zero devant le format est pris pour une autre variante (15 caractères ou 13)
    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

  11. #51
    Expert confirmé
    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
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,

    j'avais constaté ce problème et je tournais autour pour trouver une parade

    PS : Patrick tu ne m'as pas répondu au post #40

    il en est de même sil on mets moins de caractère style : 02-05 (sur format standard des cellules - he oui j'en ai essayé pleins)
    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 en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  12. #52
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Plus simplement la colonne peut-être mise au format texte (de toute façon c'est ce qu'elle est destinée à accueillir) et plus de problème.
    eric

  13. #53
    Invité
    Invité(e)
    Par défaut
    il faut formater la colonne en texte et la on peut taper 55641254698!

    les paramètres de ma fonction sont des variant!

  14. #54
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    eriic
    fait tes test tu verra que c'est pas aussi simple
    même en text quand dans la macro tu prends le.value ca supprime les zero devant quand c'est tout numeric
    d'autant plus que ceci simplement ne marche plus quand les cellules sont en text ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Column = 1 Then
            chaine = Target.Value
     
              If InStr(chaine, " ") = 0 Then
                 Target.Value = Format(chaine, "@@ @@ @@ @@ @@ @@@")
            End If
        End If
     End Sub
    c'est balo
    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

  15. #55
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Oui effectivement, j'ai également remarqué que les zéros étaient supprimés. Mon problème parais plus complexe que je ne le pensais à prime abord. J'essaie également de trouver des solutions mais comme je n'ai pas votre niveau en vba, je rame un peu, même beaucoup.

    Eriiic, la colonne ne reçoit pas que du texte, il y aussi des nombres, (CN 00 00 00 00 00 00 000, CN 00 00 00 00 00 000, O0 00 00 00 00 000, 00 00 00 00 00 000). J'ai essayé tous les formats de ma connaissance, mais aucun ne fonctionne.

    Je vous remercie vraiment pour le temps que vous passez à m'aider, je suis conscient de l'investissement que cela peut vous prendre et je vous en suis reconnaissant
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  16. #56
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut ryui
    ryu
    quel code??
    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

  17. #57
    Expert confirmé
    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
    Points : 4 174
    Points
    4 174
    Par défaut
    Post #22 Patrick
    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 en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  18. #58
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Coucou
    Pour revenir à des fondamentaux :
    que ferait ceci (avec une chaine de 13 chiffres commençant ou non par "0" en A1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Format(Range("A1").Value, "0" & String(12, "#"))
    tout le reste est vraiment trop simple (numérique ou pas ? ... ) et ma sieste a la priorité.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  19. #59
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    ceci fonctionne a condition que la colonne soit au format text avant de taper surtout pour le numeric

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim formatage$, chaine$
        'exemple suivant ta derniere reponse
        ' CN000000000000000  ' 17 caracteres dont 2 lettres
        'CN0000000000000  ' 15 caracteres dont 2 lettres
        'O000000000000   '13 caracteres dont 1 lettre
        '0000000000000   ' 13 caracteres tout numeric
        If Target.Column = 1 Then
            chaine = Target.Value
            Select Case Len(chaine)
            Case 17: formatage = "@@ @@ @@ @@ @@ @@ @@ @@@"
            Case 15: formatage = "@@ @@ @@ @@ @@ @@ @@@"
            Case 13: formatage = "@@ @@ @@ @@ @@ @@@"
            End Select
            If InStr(chaine, " ") = 0 Then
                Target.Value = Format(chaine, formatage)
            End If
        End If
    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

  20. #60
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    @jacques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test3()
    MsgBox Format(Range("A6").Value, "0" & String(12, "#"))
    End Sub
    reponse
    Nom : Capture.JPG
Affichages : 181
Taille : 74,3 Ko

    après ta sieste prioritaire tu pourrais nous expliquer ce que tu veux montrer

    EDIT:
    OK compris jacques bien vu
    on se sert de cela au lieu de target.value tout court pour la chaine a traiter et comme on injecte par la suite la chaine segmentée par les espaces donc string on a pas besoins d'avoir les cellules au format text ,on les laisse en standard
    je vais tester

    EDIT2:
    bon ben non si la colonne n'est pas en text ca supprime les zero devant dans la chaine segmentée donc inutile dans cet exercice
    étonnant tout de même

    edit3:
    juste une parenthèse jacques
    tu viens de me donner sans le vouloir une autre écriture pour ma contrib sur les nombres en lettre a fin d'avoir automatiquement des séries de 3 chiffres pour l'analyse et conversion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test3()
    chaine = "4525"
    MsgBox Trim(Format(Format(chaine, "0" & String(Len(chaine) + chaine Mod 3, "#")), Application.Rept("@@@ ", Len(chaine) + chaine Mod 3)))
    End Sub
    cé!!bo!!
    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

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

Discussions similaires

  1. [SP-2007] Colonne au format "nombre" avec des espaces ?
    Par Faro dans le forum SharePoint
    Réponses: 2
    Dernier message: 15/05/2009, 08h48
  2. [XL-2003] format conditionnel avec vba
    Par didinette56 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/05/2009, 15h37
  3. Requête : Format Nombre avec 14 décimales !
    Par PascaLem dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 28/03/2009, 12h06
  4. Problème avec un format nombre en VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/11/2008, 10h44
  5. [Format]nombres avec des 0
    Par zozolh2 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 01/06/2004, 08h43

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