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 :

Sélectionner l'adresse courriel où le curseur se trouve


Sujet :

VBA Word

  1. #1
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut Sélectionner l'adresse courriel où le curseur se trouve
    Bonjour,

    De deux choses l'une :
    Est-ce qu'il existe déjà un code VBA "tout fait" pour transformer en hyperlien l'adresse courriel sur lequel se trouve actuellement le curseur?

    Sinon, j'en ai débuté un ci-dessous. Il fait le travail très bien, en autant qu'on ait pré-sélectionné l'adresse. J'aimerais ne pas avoir à sélectionner le courriel. Mais voilà, je ne sais pas comment m'y prendre car le courriel peut être sur une ligne seule, donc pas d'espace avant ou après, alors je ne peux pas utiliser cette méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Extend Character:=" "
    il peut contenir des points dans comme ceci mon.nom.tomate@compagnie.com, alors je ne peux pas utiliser cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.MoveRight Unit:=wdWord, count:=3, Extend:=wdExtend
    De plus, je veux pouvoir mettre le curseur n'importe où dans l'adresse, pas nécessairement au début.


    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
    Sub gCourrielHyperlien()
    'Transforme une adresse de courriel en hyperlien cliquable
     
    Selection.Copy
     
    Dim MaDonnees As DataObject
    Dim strClip As String
     
    Set MaDonnees = New DataObject
    MaDonnees.GetFromClipboard
    strClip = MaDonnees.GetText
     
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
    "mailto:" & strClip, SubAddress:="", ScreenTip:="", _
    TextToDisplay:=strClip
     
     
    End Sub
    Merci de votre aide!

    Souriane
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  2. #2
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut
    Toujours à la recherche d'une solution... si jamais... Merci!
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 224
    Points : 443
    Points
    443
    Par défaut
    Bonjour Souriane, le forum,

    Voici un bout de code qui permet d’étendre la sélection tant qu’il n’y a pas d’espaces.

    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
    Sub Test()
     
    Dim rngSelection As Word.Range
     
        'récupérer le premier mot sélectionné
        On Error Resume Next
         Set rngSelection = Selection.Range.Words(1)
        On Error GoTo 0
        If rngSelection Is Nothing Then Stop   'si arrêt ici, c'est que la sélection n'est pas sur un mot
     
        'étendre la sélection vers la gauche jusqu'à tomber sur un espace
        While (Not rngSelection Like " *") And (rngSelection.Start > rngSelection.Paragraphs(1).Range.Start)
            rngSelection.Start = rngSelection.Start - 1
        Wend
        If rngSelection Like " *" Then rngSelection.Start = rngSelection.Start + 1
        'étendre la sélection vers la droite jusqu'à tomber sur un espace
        While (Not rngSelection Like "* ") And (rngSelection.End < rngSelection.Paragraphs(1).Range.End)
            rngSelection.End = rngSelection.End + 1
        Wend
        If rngSelection Like "* " Then rngSelection.End = rngSelection.End - 1
     
        'sélectionner la zone résultat
        rngSelection.Select
     
    End Sub
    A+

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Responsable Informatique
    Inscrit en
    Août 2020
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2020
    Messages : 28
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    si vous définissez un signet à l'endroit où est l'adresse mail, il suffit alors de la sélectionner par code avec la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.GoTo what:=wdGoToBookmark, Name:="AdresseClient"
    AdresseClient étant le nom du signet

  5. #5
    Membre éclairé Avatar de Souriane
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2009
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2009
    Messages : 541
    Points : 758
    Points
    758
    Par défaut
    Citation Envoyé par mromain Voir le message
    Voici un bout de code qui permet d’étendre la sélection tant qu’il n’y a pas d’espaces.
    Je n'appellerais pas ça un "bout de code", j'appelle ça le code au complet!!! Gros merci. Votre code ajouté à mon code = résultat impécable!

    Mille merci! Je suis comblée!


    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
    Sub TransformerCourrielEnHyperlien()
     
    Dim rngSelection As Word.Range
     
        'récupérer le premier mot sélectionné
        On Error Resume Next
         Set rngSelection = Selection.Range.Words(1)
        On Error GoTo 0
        If rngSelection Is Nothing Then Stop   'si arrêt ici, c'est que la sélection n'est pas sur un mot
     
        'étendre la sélection vers la gauche jusqu'à tomber sur un espace
        While (Not rngSelection Like " *") And (rngSelection.Start > rngSelection.Paragraphs(1).Range.Start)
            rngSelection.Start = rngSelection.Start - 1
        Wend
        If rngSelection Like " *" Then rngSelection.Start = rngSelection.Start + 1
        'étendre la sélection vers la droite jusqu'à tomber sur un espace
        While (Not rngSelection Like "* ") And (rngSelection.End < rngSelection.Paragraphs(1).Range.End)
            rngSelection.End = rngSelection.End + 1
        Wend
        If rngSelection Like "* " Then rngSelection.End = rngSelection.End - 1
     
        'sélectionner la zone résultat
        rngSelection.Select
     
     
        Selection.Copy
     
    Dim MaDonnees As DataObject
    Dim strClip As String
     
    Set MaDonnees = New DataObject
    MaDonnees.GetFromClipboard
    strClip = MaDonnees.GetText
     
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
    "mailto:" & strClip, SubAddress:="", ScreenTip:="", _
    TextToDisplay:=strClip
     
     
    End Sub
    Souriane
    __________________________________
    Une question bien posée est à moitié résolue!

    Merci de ne pas oublier de mettre RÉSOLU quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 224
    Points : 443
    Points
    443
    Par défaut
    Bonjour Souriane, MauNic2, le forum,

    Citation Envoyé par Souriane Voir le message
    Mille merci! Je suis comblée!
    Avec plaisir !

    Ton code peut être simplifié ainsi :
    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
    Sub TransformerCourrielEnHyperlien()
    Dim rngSelection As Word.Range
     
        'récupérer le premier mot sélectionné
        On Error Resume Next
         Set rngSelection = Selection.Range.Words(1)
        On Error GoTo 0
        If rngSelection Is Nothing Then Stop   'si arrêt ici, c'est que la sélection n'est pas sur un mot
     
        'étendre la sélection vers la gauche jusqu'à tomber sur un espace
        While (Not rngSelection Like " *") And (rngSelection.Start > rngSelection.Paragraphs(1).Range.Start)
            rngSelection.Start = rngSelection.Start - 1
        Wend
        If rngSelection Like " *" Then rngSelection.Start = rngSelection.Start + 1
        'étendre la sélection vers la droite jusqu'à tomber sur un espace
        While (Not rngSelection Like "* ") And (rngSelection.End < rngSelection.Paragraphs(1).Range.End)
            rngSelection.End = rngSelection.End + 1
        Wend
        If rngSelection Like "* " Then rngSelection.End = rngSelection.End - 1
        If rngSelection Like "*." Then rngSelection.End = rngSelection.End - 1
     
        'si la valeur resemble à une adresse mail
        If rngSelection.Text Like "?*@*?.?*" Then
            'ajouter l'hyperlien "mailto"
            rngSelection.Document.Hyperlinks.Add rngSelection, "mailto:" & rngSelection.Text
        End If
     
    End Sub
    Cela évite la manipulation du presse-papier.

    A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/05/2011, 17h31
  2. Sélectionner une adresse IP
    Par CrazyDev dans le forum Boost
    Réponses: 3
    Dernier message: 16/10/2009, 11h34
  3. Réponses: 3
    Dernier message: 12/10/2008, 20h13

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