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

VBA Word Discussion :

Word - Séparateur de millier sur nombres aléatoires (en dehors d'un publipostage)


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Word - Séparateur de millier sur nombres aléatoires (en dehors d'un publipostage)
    Bonsoir à tous,

    J'ai un petit soucis que je n'arrive pas à régler en VBA (même si je me creuse la tête).

    J'ai un numéro de dossier de type "123456789" et une somme indiquée sous la forme "123456789 euros"

    Le numéro de dossier est issu d'un champ de fusion publipostage mais le séparateur de millier ne doit pas s'y appliquer.

    En revanche, la somme en euros n'a pas de champ de fusion propre, elle est incorporée dans un champ de fusion plus important au format texte et sa place dans le texte peut bouger en fonction des données de la base Excel. Le seul repère est qu'elle est suivie de "euros" ou toujours précédé par "montant de".

    J'essaye de bidouiller un macro avec la fonction Recherche-Remplacer (avec enregistreur de macro) mais rien n'y fait.

    Par exemple pour 1500 euros

    Je cherche :
    ([0-9])([0-9][0-9][0-9]) euros

    Je remplace:
    ([0-9]) ([0-9][0-9][0-9]) euros

    Le résultat est :
    ([0-9]) ([0-9][0-9][0-9]) euros

    Puisqu'il ne s'agit que de chiffres, une macro doit pouvoir s'appliquer (Format, Numeric,...). Je n'arrive pas à en faire fonctionner une seule so far.
    Si quelqu'un pouvait avoir l'amabilité de m'aider, merci d'avance.

    Cordialement,
    Julo.

    Ci-joint la macro enregistrée sans mes tentatives de modification :
    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
    20
    21
    Sub Macro2()
    '
    ' Macro2 Macro
    ' Macro recorded 11/09/2014 by Diarra
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "([0-9][0-9][0-9][0-9]) euros"
            .Replacement.Text = "([0-9] [0-9][0-9][0-9]) euros"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre réponse,

    J'ai précisément utilisé cette page pour commencer. C'est vrai que je l'ai relue avec plus d'attention pour comprendre l'utilisation des "\n vaut pour nième expression de recherche entre parenthèses" que j'avais omis.

    J'ai des nombres qui peuvent aller de centaine à plusieurs millions. Si j'ai bien compris le principe; pour séparer :

    1000000 => Recherche (<[0-9]{1})([0-9]{3})([0-9]{3}) => Remplacement : \1^s\2^s\3
    100000 => Recherche (<([0-9]{3})([0-9]{3}) => Remplacement : \1^s\2
    10000 => Recherche (<([0-9]{2})([0-9]{3}) => Remplacement : \1^s\2


    Avec cette méthode, je dois appliquer la fonction Recherche-Remplacement uniquement dans l'ordre décroissant.

    Je crois avoir réussi à faire ce que je voulais. Par exemple :

    Pour 100000 euros - Recherche : (<[0-9]{3})([0-9]{3}) ([euros]) => Trouver : 100000 e
    Recherche (<[0-9]{3})([0-9]{3}) ([e][u][r][o][s]) => Trouver : 100000 euros
    Recherche (<[0-9]{3})([0-9]{3}) (euros) => Trouver : 100000 euros

    Je ne comprend pas trop la logique ici mais ça fonctionne.

    Merci encore

  4. #4
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Elle est pas très jolie mais ça fonctionne sauf pour les milliers (1000 euros, 2000 euros) pour l'instant

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub Macro4()
    '
    ' Macro4 Macro
    ' Macro recorded 12/09/2014 by Diarra
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "(<[0-9]{1})([0-9]{3})([0-9]{3}) (euros)"
            .Replacement.Text = "\1^s\2^s\3^s\4"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        With Selection.Find
            .Text = "(<[0-9]{3})([0-9]{3}) (euros)"
            .Replacement.Text = "\1^s\2^s\3"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        With Selection.Find
            .Text = "(<[0-9]{2})([0-9]{3}) (euros)"
            .Replacement.Text = "\1^s\2^s\3"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
       End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Pour les milliers, j'ai essayé :

    Pour 1000 euros :
    .Text= ([0-9][0-9][0-9]) (euros)
    .Remplacement.Text : ^s\1^s\2 '=> Donne 1 000 euros
    'Mais il fonctionnera aussi pour 100 euros et ajoutera un espace sans intérêt qui nuit à la mise en forme du fichier.


    .Text = "(<[0-9]{1})([0-9]{3}) (euros)"
    .Replacement.Text = "\1^s\2^s\3" '=> Donne Aucune occurrence des milliers

    .Text = "(montant de) ([0-9]{1})([0-9]{3}) (euros)"
    .Replacement.Text = "\1^s\2^s\3^s\4" '=> Donne Aucune occurrence des milliers

    Text = "(montant de) (<[0-9]{1})([0-9]{3}) (euros)"
    .Replacement.Text = "\1^s\2^s\3^s\4" '=> Donne Aucune occurrence des milliers



    En l'état, je suis un peu bloqué. Any idea?

    Cordialement,
    Julo

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Si tu souhaites une réponse, pourquoi as-tu validé avec le bouton résolu ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bien vu

  8. #8
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Voici la solution pour les milliers. Soulagé de pouvoir cocher la case "résolu" à bon escient

    Merci pour le coup de main Heureux-Oli

    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
    20
    21
    22
    Sub RechercheRemplace()
    '
    ' Macro4 Macro
    ' Macro recorded 12/09/2014 by Diarra
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
            With Selection.Find
            .Text = "([0-9])([0-9]{3}) (euros)"
            .Replacement.Text = "^s\1^s\2^s\3"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        Selection.MoveUp Unit:=wdLine, Count:=2, Extend:=wdExtend
    End Sub

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

Discussions similaires

  1. Question sur nombre aléatoire
    Par Blinki47 dans le forum Langage
    Réponses: 21
    Dernier message: 28/02/2012, 15h15
  2. Réponses: 3
    Dernier message: 10/01/2012, 08h52
  3. Réponses: 3
    Dernier message: 05/09/2007, 14h00
  4. Format des nombres entiers, séparateurs de milliers
    Par zazaraignée dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2005, 01h25

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