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 Outlook Discussion :

Mise en forme sur une boucle [OL-2016]


Sujet :

VBA Outlook

  1. #1
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut Mise en forme sur une boucle
    Bonjour,

    je recherche à mettre en forme une partie du corps d'un mail et ce en boucle sur tous les mots qui sont entre les caractères : < et >
    exemple :<monadresse@mail.com>

    Mon code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim cpte As Object
    For Each cpte In Itm.HTMLBody
    ObjwdSelection.Find.Text = "<*>"
    ObjwdSelection.Find.Execute
    With ObjwdSelection.Font ' Format de police
        .Name = "Arial"
        .Size = 15
        .ColorIndex = 1
    End With
    Next
    Message d'erreur : Objet requis

    J'ai mis Dim cpte As Object et là j'ai en message d'erreur : Type défini par l'utilisateur non défini

    Merci

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    OMG !

    Tu pensais vraiment y arriver comme cela ? soit tu utilises le htmlbody avec les balises HTML soit le WordEditor mais pas un mix des 2

    tu devrais te servir des expressions régulières (regex) c'est très puissant mais pas simple

    https://cafeine.developpez.com/access/tutoriel/regexp/
    un exemple là
    https://www.developpez.net/forums/bl...nvoye-message/

  3. #3
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    J'avoue que je ne comprends pas... comment l'adapter

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    est ce que tu sais faire des macros WORD ?

  5. #5
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Le souci doit être sur les caractères génériques "*" dans l'adresse car j'ai essayé en indiquant une adresse bidon : <monadresse@bidon.com> et cela fonctionne bien avec le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ObjwdSelection.Find.ClearFormatting
    ObjwdSelection.Find.Replacement.ClearFormatting
        With ObjwdSelection.Find
            .Text = "<monadresse@bidon.com>"
            .Replacement.Text = ""
            .Replacement.Font.Bold = True
            .Replacement.Font.Italic = True
            .Forward = True
            .Wrap = wdFindContinue
            .MatchWholeWord = True
       End With
    ObjwdSelection.Find.Execute Replace:=wdReplaceAll
    Si je mets cela ne fonctionne pas

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    oui ca doit venir de là



    Référence du développeur Word
    Find.MatchWildcards, propriété
    Cette propriété a la valeur True si le texte à rechercher contient des caractères génériques. Type de données Boolean en lecture-écriture.
    Syntaxe

    expression.MatchWildcards

    expression Expression qui renvoie un objet Find.

    Remarques


    La propriété MatchWildcards correspond à la case à cocher Utiliser les caractères génériques de la boîte de dialogue Rechercher et remplacer (menu Edition ).

    Pour spécifier le texte à rechercher dans un document, utilisez la propriété Text de l’objet Find ou l’argument RechercherTexte avec la méthode Execute.


    Exemple


    Cet exemple montre comment rechercher et sélectionner le prochain mot de trois lettres commençant par « s » et finissant par « t ».

    Visual Basic pour Applications
    With Selection.Find
    .ClearFormatting
    .Text = "s?t"
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchFuzzy = False
    .MatchWildcards = True
    .Execute Format:=False, Forward:=True
    End With

  7. #7
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Cela fonctionne pour un nombre déterminé mais pas sur toutes les adresses :

    le code ci-dessous fonctionne pour une adresse "monadresse@bidon.com" mais pas pour "monadresse2@bidon.com" avec un caractère en plus...

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ObjwdSelection.Find.ClearFormatting
    ObjwdSelection.Find.Replacement.ClearFormatting
        With ObjwdSelection.Find
              .Text = "<????????????????.com>"
            .Replacement.Text = ""
            .Replacement.Font.Bold = True
            .Replacement.Font.Italic = True
            .Forward = True
            .Wrap = wdFindContinue
            .MatchWholeWord = True
            .MatchWildcards = True
       End With
    ObjwdSelection.Find.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Le ? Remplace 1 caractère
    Le * plusieurs

  9. #9
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Oui mais comment faire pour qu'il reconnaisse toutes les adresses car je ne connais pas à l'avance le nombre de caractères ?
    Merci,

    J'ai essayé ceci mais il me met tout le texte en gras et italique :
    Je voudrais qu'il sélectionne toutes les adresses quel que soit le nombre :
    monadresse@bidon.com
    monadresse2@bidon.com
    monadresse33@bidon.com

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Pour rechercher un caractère générique (< ou >) il faut mettre \ devant
    .text="\<*.com\>"

    voir ici https://sepia.developpez.com/office/...cherremplacer/

    le mieux serait les regex :http://lmgtfy.com/?q=regex+word+document+selection

  11. #11
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 504
    Points : 128
    Points
    128
    Par défaut
    Super Merci Oliv-

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ObjwdSelection.Find.ClearFormatting
    ObjwdSelection.Find.Replacement.ClearFormatting
        With ObjwdSelection.Find
             .Text = "\<*.com\>"
            .Replacement.Text = ""
            .Replacement.Font.Bold = True
            .Replacement.Font.Italic = True
            .Forward = True
            .Wrap = wdFindContinue
            .MatchWholeWord = True
            .MatchWildcards = True
       End With
    ObjwdSelection.Find.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue

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

Discussions similaires

  1. [XL-MAC 2011] Check-box qui active une mise en forme sur la ligne la contenant
    Par FlorentP dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/09/2014, 23h43
  2. [E-03] enregistrer une mise en forme sur TCD
    Par zaza45 dans le forum Excel
    Réponses: 5
    Dernier message: 01/04/2008, 08h14
  3. [VB.NET] Mise en forme d'une datagrid suivant une valeur
    Par Nesmontou dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/06/2005, 11h51
  4. Réponses: 4
    Dernier message: 26/08/2004, 08h01

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