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

  1. #1
    Futur Membre du Club
    Renvoi de signets cassés suite à macro Excel VBA
    Bonjour à tous,

    Depuis un fichier Excel, je nomme des cellules et créé des signets dans des fichiers Word.

    (Je choisis même quel fichier Word sera alimenté puis enregistré sous un autre nom pour ne pas casser mon modèle !)

    Comme les signets sont utilisés à plusieurs endroits dans le fichier, j'utilise des renvois.

    Sauf que les signets sont effacés après utilisation et du coup pour les renvois j'ai le message : "Erreur ! Source du renvoi introuvable."

    J'ai essayé la solution décrite ici : https://www.developpez.net/forums/d1...n-existe-plus/

    Mais j'ai remplacé MERGEFORMAT par CHARFORMAT car il parait c'est meilleur concernant la longueur des caractères.

    Mais en faisant Alt + F9, cela fait disparaître le code que je joins ci-dessous. Est-ce un problème de ponctuation ?



    Merci d'avance pour votre réponse.

  2. #2
    Expert éminent sénior
    Citation Envoyé par Onion Voir le message

    Bonjour,

    C'est normal.
    Regardez la fonction RemplacerTexteSignet dans le tuto d'Olvier LEBEAU : https://heureuxoli.developpez.com/office/word/vba-word/#LVII
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Futur Membre du Club
    Merci Eric, je vais regarder ça.

    Ça soulève deux interrogations.

    1) Est-ce que ça fonctionne pour plusieurs signets ? J'imagine que oui, je dois répéter la fonction que je ne créé qu'une seule fois pour tous les signets.
    2) Puis-je utiliser plusieurs fois la fonction pour un seul signet ? (car j'ai des signets sans renvois, d'autres avec un seul renvoi, et d'autres avec plusieurs renvois.

  4. #4
    Expert éminent sénior
    Citation Envoyé par Onion Voir le message

    1) Est-ce que ça fonctionne pour plusieurs signets ? J'imagine que oui, je dois répéter la fonction que je ne créé qu'une seule fois pour tous les signets.
    Oui.

    2) Puis-je utiliser plusieurs fois la fonction pour un seul signet ? (car j'ai des signets sans renvois, d'autres avec un seul renvoi, et d'autres avec plusieurs renvois.
    Oui.

    Regardez l'utilisation de cette fonction dans cette discussion : macro-marche-bouton-cliquer-y-reference-bugue
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  5. #5
    Futur Membre du Club
    Si j'ai bien compris l'autre discussion, l'utilisateur renseigne une et une seule fois les champs dans l'userform et ça les renseigne en page 1 en tant que signets puis dans les renvois ?

    Dans ce cas-là il faudrait que je change de méthode puisque ma méthode actuelle consiste à alimenter les signets depuis Excel dans un modèle Word à choisir et à créer un fichier Word (où les signets disparaissent donc les renvois ne fonctionnent plus).

    Si j'utilise l'autre méthode, ça me fera saisir deux fois les signets, une fois dans le fichier Excel de création de devis et une deuxième fois dans l'userform Word.
    J'ai créé le fichier avec mon Userform que j'attache en pièce jointe mais est-ce qu'il est possible d'éviter de saisir une deuxième fois les signets dans Word ? (dans le fichier Word j'ai surligné en vert les renvois)

    Merci d'avance pour votre réponse.

  6. #6
    Expert éminent sénior
    Citation Envoyé par Onion Voir le message

    Bonjour,

    Pouvez-vous mettre votre fichier (ou vos fichiers) dans un .zip ?
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  7. #7
    Futur Membre du Club
    Oui bien sûr.

  8. #8
    Expert éminent sénior
    Citation Envoyé par Onion Voir le message

    Il faudrait que votre Userform et vos macros soient plutôt dans le fichier Excel. Votre fichier Word devrait être un modèle .dotx, et que le template soit appelé lors du transfert sur Word. Le remplacement des signets comme vous le faîte supprime le signet. Pour le reconstituer il vous appliquer la fonction dont je fais référence dans ma première réponse.
    Sinon, dans le principe, votre fichier Excel fait bien la correspondance entre les champs et les signets, il n'y a donc aucune double saisie. La seule adaptation que je verrais, serait de transformer votre tableau Excel en un tableau référencé où vous garderiez la trace de tous vos envois. Une ligne : 1 courrier contenant toutes les informations saisies dans votre Userform.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  9. #9
    Futur Membre du Club
    Je ne suis pas assez à l'aise dans les jonctions Word et Excel pour y arriver.

    Du coup j'avais pensé à une méthode du pauvre. Comme l'export Excel -> Word fonctionne bien.

    Il s'agirait de :
    - créer un tableau avec chaque signet en colonne A
    - et répéter le signet 9 fois (colonnes B à J) en renommant en NomClient1, NomClient2, NomClientX, etc.
    - dans mes modèles Word, allez chercher jusqu'à NomClient6 s'il apparait 6 fois dans un modèle.

    Ainsi ça ne nécessite plus d'utiliser les Renvois.

    Et c'est simple à mettre en place puisque les modèles ne sont créés qu'une seule fois et ne vont pas nécessiter de modifications (majeures) dans le futur.

    Qu'en pensez-vous ?

  10. #10
    Expert éminent sénior
    Citation Envoyé par Onion Voir le message

    OK, il vous suffit de faire la même chose mais en inversant colonnes et lignes et vous aurez un tableau structuré possible. Chaque titre de colonne correspondrait à un signet. Si un signet doit se répéter N fois dans Word, vous les baptisez de XXXX01, à XXXXN et les XXXX correspondant au nom du signet dans Excel et dans une boucle vous modifiez tous les signets dont le nom commence par XXXX.
    Nb : Avec la méthode par fichier modèle .dotx, vous n'avez pas besoin de reconstituer le nom du signet puisqu'il ne sert qu'une fois.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter