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 :

transformer le contenu du presse-papier en info-bulle


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Points : 8
    Points
    8
    Par défaut transformer le contenu du presse-papier en info-bulle
    Mon titre n'est peut-être pas très clair ou complet, j'espère que ma requête le sera.
    Soit, pour faire simple, 4 paragraphes.
    Je souhaite que la macro sélectionne le 2e paragraphe, le copie, et que le texte copié devienne une info-bulle quand on pointe la souris sur le 1er paragraphe.
    Même chose pour le 4e paragraphe, qui soit devenir info-bulle pour le 3e paragraphe.
    Bien sûr, j'aimerais boucler ce processus pour qu'il se répète jusqu'à épuisement du document.
    (A titre accessoire, je ne souhaite pas conserver les paragraphes pairs dans le document final : seuls les paragraphes impairs doivent rester, chacun étant doté de son info-bulle respective.)

    Merci par avance de vos solutions, si elles existent.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2023
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2023
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Créer une info bulle sur un texte... Personnellement je ne comprend pas bien l'intérêt de faire ça dans Word car ça donne des liens hypertextes qui, au final, sont plus gênant qu'autre chose et affiche un "Ctrl+Clic pour suivre le lien" alors qu'il n'y a pas vraiment de lien

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette réponse, je n'ai pas répondu plus vite parce que j'étais en déplacement avec une mauvaise connexion.
    En ce qui concerne "l'intérêt" de ma demande, le voici : il s'agit de pratiquer une langue étrangère en ayant sous les yeux le texte en version originale, avec la possibilité de faire apparaître la traduction en cas de doute dans une infobulle (qui est plus rapide qu'un lien hypertexte vers une note).
    Malheureusement, la fenêtre dans laquelle on écrit le texte de l'infobulle n'a pas de menu contextuel et ne permet pas de coller le contenu du presse-papier... Je ne vois donc pas comment on pourrait effectuer de cette façon la boucle que j'ai décrite...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Points : 8
    Points
    8
    Par défaut boucler
    Bonjour,
    Avec l'enregistreur de macros, j'ai obtenu un code qui effectue sur deux paragraphes ce que je cherche : le 2e paragraphe est effacé et devient une note de fin de document liée au 1er paragraphe (les notes sont visibles par info-bulle quand on passe la souris sur le lien correspondant).
    Il me reste la seconde partie du problème, où je sèche, pour traiter de la même manière tout le document. J'ai essayé la boucle "For Each para In ActiveDocument.Paragraphs", mais la macro tourne en rond ; cela semble normal, puisque mon code ne correspond pas vraiment au traitement d'un paragraphe.
    Si quelqu'un voulait m'aider, il s'agirait de m'indiquer une boucle qui s'arrêtera quand le curseur atteindra la fin du document.
    Merci par avance.

  5. #5
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    Si des paragraphes doivent être supprimés, le principe est de démarrer par la fin. A voir si c'est compatible avec ce que vous voulez faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Test()
     
    Dim I As Long
     
        With ActiveDocument
             For I = .Paragraphs.Count To 1 Step -1
               ' Suite du code
             Next I
        End With
     
    End Sub

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Merci de votre réponse.

    Non, cela n'a pas fonctionné. J'ai placé mes instructions comme vous l'indiquez, entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim I As Long
        With ActiveDocument
             For I = .Paragraphs.Count To 1 Step -1
    et

    ,

    avec pour résultat d'effacer tous les paragraphes (mon fichier test n'en contient que 4).

    Voici le code que j'avais obtenu avec l'enregistreur de macro pour effectuer ce que je souhaite avec les deux premiers paragraphes ; cela semblera sans doute maladroit pour un connaisseur, mais je n'ai pas trouvé mieux tout seul

    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
    ' curseur home
        'Selection.HomeKey Unit:=wdStory
    ' curseur au début du 2e paragraphe
        Selection.MoveDown Unit:=wdParagraph, Count:=1
    ' sélectionne le 2e paragraphe
        Selection.Paragraphs(1).Range.Select
    ' copie le paragraphe sélectionné
        Selection.Copy
    ' remplace le paragraphe sélectionné par @
        Selection.TypeText Text:="@"
    ' curseur au début du 1er paragraphe
        Selection.MoveUp Unit:=wdParagraph, Count:=2
    ' sélectionne le 1er paragraphe
        Selection.Paragraphs(1).Range.Select
    ' insère un lien vers une note de fin de document
        With Selection
            With .EndnoteOptions
                .Location = wdEndOfDocument
                .NumberingRule = wdRestartContinuous
                .StartingNumber = 1
                .NumberStyle = wdNoteNumberStyleArabic
            End With
            .Endnotes.Add Range:=Selection.Range, Reference:=""
        End With
    ' colle le 2e paragraphe comme note de fin de document
        Selection.Paste
    ' curseur home
        Selection.HomeKey Unit:=wdStory
    ' recherche et sélectionne @
        Selection.Find.ClearFormatting
            With Selection.Find
                .Text = "@"
                .Forward = True
            End With
        Selection.Find.Execute
    ' sélectionne le paragraphe arobase et le coupe
        Selection.Paragraphs(1).Range.Select
        Selection.Cut
    ' le curseur est ainsi placé au début du 3e paragraphe,
    ' et la 2e boucle peut commencer...
    Bonne soirée

  7. #7
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    La boucle ne sert à rien si vous sélectionnez vos paragraphes en mode absolu. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Selection.Paragraphs(1).Range.Select
    Pour travailler avec un paragraphe :

    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
     
    Sub Test()
     
    Dim I As Long
     
        With ActiveDocument
             For I = .Paragraphs.Count To 1 Step -1
                  With .Paragraphs(I)
     
                        ' Suite du code
                End With
             Next I
        End With
     
    End Sub

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    La boucle ne sert à rien si vous sélectionnez vos paragraphes en mode absolu


    J'aurai au moins appris cela...
    Malheureusement, comme je ne sais pas encore manier des paragraphes en mode relatif, je ne pourrai pas réaliser le code correspondant à mon besoin. C'est dommage, mon code absolu fonctionnait bien pour deux paragraphes, mais je ne vais pas m'amuser à le réitérer manuellement.

    Merci encore.

  9. #9
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    A tester :

    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
     
    Sub Test()
     
    Dim I As Long
    Dim MonRange As Range
    Dim MonTexte As String
     
        With ActiveDocument
     
             For I = .Paragraphs.Count To 1 Step -2
                 With .Paragraphs(I)
                      .Range.Select
                      With Selection
                           Set MonRange = .Range
                           MonTexte = MonRange.Text
                          .TypeText Text:="@"
                          .MoveUp Unit:=wdParagraph, Count:=1
                       End With
                 End With
                 .Paragraphs(I).Range.Select
                 With Selection
                      With .EndnoteOptions
                           .Location = wdEndOfDocument
                           .NumberingRule = wdRestartContinuous
                           .StartingNumber = 1
                           .NumberStyle = wdNoteNumberStyleArabic
                       End With
                       .Endnotes.Add Range:=Selection.Range, Reference:="", Text:=MonTexte
                 End With
                 Set MonRange = Nothing
             Next I
        End With
     
    End Sub

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Bonjour E KERGRESSE,

    Votre code n'aboutit pas au bon résultat, mais s'en approche beaucoup (la boucle fonctionne).

    Voici dans l'ordre :
    1) mon fichier test initial (réduit à quatre "paragraphes")
    2) le résultat que je souhaite obtenir
    3) le résultat produit par votre code

    1)
    paragraphe un
    paragraphe deux
    paragraphe trois
    paragraphe quatre

    2)
    paragraphe un 1 [le second chiffre (1) étant le lien créé vers la note 1 de fin de document]
    paragraphe trois 2 [2 étant le lien créé vers la note 2 de fin de document]

    __________ [ligne de séparation créée par Word entre le texte et les notes de fin de document]

    1 paragraphe deux [note 1 de fin de document]
    2 paragraphe quatre [note 2 de fin de document]

    3)
    paragraphe un
    @ 1 [lien créé vers la note 1 de fin de document]
    paragraphe trois
    @ 2 [lien créé vers la note 2 de fin de document]
    __________ [ligne de séparation créée par Word entre le texte et les notes de fin de document]
    1 paragraphe deux [note 1 de fin de document]
    2 paragraphe quatre [note 1 de fin de document]

    On voit donc que la partie "notes" est correcte, seul le texte final est erroné : il ajoute inutilement un paragraphe et une arobase après chaque paragraphe conservé...

    Merci et bonne journée à vous

Discussions similaires

  1. Recuperer le contenu du presse papier
    Par isoman dans le forum Linux
    Réponses: 6
    Dernier message: 09/02/2008, 18h50
  2. recuperer le contenu du presse papier
    Par hunter99 dans le forum C
    Réponses: 1
    Dernier message: 08/02/2008, 17h24
  3. [Free Pascal] Voir le contenu du presse-papier
    Par JoseF dans le forum Free Pascal
    Réponses: 1
    Dernier message: 07/12/2007, 21h01
  4. Réponses: 1
    Dernier message: 29/09/2007, 09h46
  5. Réponses: 12
    Dernier message: 10/06/2006, 19h07

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