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 :

Modifier un signet d'en-tête word avec une macro excel [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Avril 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 21
    Par défaut Modifier un signet d'en-tête word avec une macro excel
    Bonjour,

    je cherche à modifier un signet qui se trouve dans l'en-tête d'un Word, avec une macro sur Excel 2016.
    Le problème c'est que le signet disparaît après la modification et quand je cherche à le conserver il se met uniquement dans le corps de texte.

    Voici la partie du code qui sert à faire la modification actuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WordApp = CreateObject("word.application") 'ouvre session word
    Set WordDoc = WordApp.Documents.Open("G:\Wheelabrator\template " & Worksheets("CurrentForm").Range("D1").Value & " wheelabrator.docm") 'ouvre document Word
    WordApp.Visible = False 'word masqué pendant l'operation
     
    Debut = WordDoc.Bookmarks("Signet4").Range.Start
    WordDoc.Bookmarks("Signet4").Range.Text = Worksheets("CurrentForm").Range("K1").Value
    WordDoc.Bookmarks.Add Range:=WordDoc.Range(Debut, Debut + Len(Worksheets("CurrentForm").Range("K1").Value)), Name:="Signet4"
     
    WordApp.Visible = True 'affiche le document Word
    Pouvez-vous m'aider?

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    A priori, la ligne 6 suffit à modifier le signet.
    Je ne comprends pas ce que tu essayes de faire avec les lignes 5 et 7...

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Avril 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 21
    Par défaut
    Citation Envoyé par Menhir Voir le message
    A priori, la ligne 6 suffit à modifier le signet.
    La ligne 6 modifie et supprime le signet
    Citation Envoyé par Menhir Voir le message
    Je ne comprends pas ce que tu essayes de faire avec les lignes 5 et 7...
    la ligne 7 permet de recréer un signet et la ligne 5 de données le début du signet

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Bloodkry Voir le message
    La ligne 6 modifie et supprime le signet
    J'ai plusieurs fois utilisé des codes de ce type sans que ça supprime le Signet.
    Ca modifie juste le contenu.

    Par contre, essayer de créer un signet portant le même nom qu'un signet existant, c'est sûr que ça va mettre la grouille dans ton document.
    D'autant plus que Start (donc ta variable Debut) ne donne pas la position du signet de façon absolue dans le document mais la position en nombre de caractères dans son chapitre.
    Donc ton Add place le signet un peu n'importe où (en fonction du code qui précède), raison pour laquelle tu le retrouves dans le corps de texte.

    Sans compter qu'il est un peu étrange de créer un signet APRES l'avoir renseigné. C'est mettre la charrue avant les bœufs.

    Donc, selon moi, si ton signet est correctement définit avant de lancer la macro, la ligne 6 du code suffit et les lignes 5 et 7 sont inutiles.

    Citation Envoyé par Bloodkry
    Mais comme je travaille sur un document avec déjà un code VBA existant, j'aimerais éviter de rajouter plus que nécessaire.
    De ce fait, je cherche juste à rajouter la création du signet et comme je l'ai dit dans mon premier message, le problème vient de cette création qui ce fait dans le corps de texte.
    Il va falloir que tu sois plus clair : est-ce que le signet est placé avant de lancer la macro ou est-ce à la macro de le créer ?

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Avril 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 21
    Par défaut
    Citation Envoyé par Menhir Voir le message
    J'ai plusieurs fois utilisé des codes de ce type sans que ça supprime le Signet.
    Ca modifie juste le contenu.
    Citation Envoyé par Menhir Voir le message
    Donc, selon moi, si ton signet est correctement définit avant de lancer la macro, la ligne 6 du code suffit et les lignes 5 et 7 sont inutiles.
    Alors là c'est bizarre car à chaque fois que je lance cette macro, tous les signets ont disparu.

    Citation Envoyé par Menhir Voir le message
    D'autant plus que Start (donc ta variable Debut) ne donne pas la position du signet de façon absolue dans le document mais la position en nombre de caractères dans son chapitre.
    Donc ton Add place le signet un peu n'importe où (en fonction du code qui précède), raison pour laquelle tu le retrouves dans le corps de texte.
    C'est ce que cherche à résoudre

    Citation Envoyé par Menhir Voir le message
    Il va falloir que tu sois plus clair : est-ce que le signet est placé avant de lancer la macro ou est-ce à la macro de le créer ?
    Le signet existe avant le lancement de la macro mais plus après. Et cela le fait sur tous les ordinateurs où j'ai essayé.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Le signet existe avant le lancement de la macro mais plus après.
    Dans ce cas, il ne sert à rien de le recréer avec ta ligne 7.
    D'autant plus que créer le signer après l'avoir renseigné, c'est complètement illogique.

    Donc commence par supprimer tes lignes 5 et 7.

    Il y a autre chose qui dérange dans ton code, c'est que tu n'indiques pas à quel classeur (Workbook) appartient la Worksheet.
    Dans un cas classique de travail sur un seul fichier, ça peut être acceptable. Mais ton code change de fichier et même d'application par défaut. Il serait donc utile que tu mettes les références complètes.
    Au pire, en début de code tu places la référence de ta Worksheet dans une variable de type Worksheet pour ne pas la perdre.

    Citation Envoyé par Bloodkry Voir le message
    Alors là c'est bizarre car à chaque fois que je lance cette macro, tous les signets ont disparu.
    Je le répète : étant donné que ta macro essaye de recréer des signets avec les noms de signets existants, il est normal que ça crée des problèmes.

    Sans voir ce qui précède et ce qui suit dans ta macro, impossible de savoir si le problème vient bien des lignes de code que tu présentes.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    je cherche à modifier un signet qui se trouve dans l'en-tête d'un Word, avec une macro sur Excel 2016.
    Le problème c'est que le signet disparaît après la modification et quand je cherche à le conserver il se met uniquement dans le corps de texte.
    Un signet qu'il soit dans un corps de texte, en en-tête ou en pied de page se traite de la même manière.

    Voir une une procédure proposée dans cette discussion titrée copie tableau excel vers un document word
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Avril 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 21
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Un signet qu'il soit dans un corps de texte, en en-tête ou en pied de page se traite de la même manière.
    En ce qui concerne le traitement d'un signet, effectivement j'avais remarqué que, où qu'il soit, le signet est traité de la même façon. Mais comme je travaille sur un document avec déjà un code VBA existant, j'aimerais éviter de rajouter plus que nécessaire. De ce fait, je cherche juste à rajouter la création du signet et comme je l'ai dit dans mon premier message, le problème vient de cette création qui ce fait dans le corps de texte.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour;
    Peut-être avec la solution proposée dans la faq Pourquoi mon signet est il détruit lorsque je modifie son texte ?
    Je ne l'ai pas testée

    [EDIT]
    Je viens de tester la solution proposée dans la FAQ et cela fonctionne en En-tête
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2020, 05h42
  2. [XL-2007] Rechercher et remplacer du texte dans word avec une macro excel
    Par littlepower dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2015, 07h59
  3. Ouvrir un fichier word (.doc) avec une macro excel
    Par Lyadrielle dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/02/2014, 12h30
  4. Réponses: 1
    Dernier message: 27/07/2011, 21h30
  5. Ecrire dans un document Word avec une macro Word
    Par deruyter dans le forum VBA Word
    Réponses: 2
    Dernier message: 14/01/2010, 00h24

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