Supprimer signet dans word à partir d'excel
Résolu/Fermé
A voir également:
- Supprimer signet dans word à partir d'excel
- Supprimer une page word - Guide
- Word et excel gratuit - Guide
- Supprimer liste déroulante excel - Guide
- Espace insécable word - Guide
- Supprimer compte instagram - Guide
6 réponses
yg_be
Messages postés
23431
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2025
Ambassadeur
1 559
11 avril 2022 à 12:57
11 avril 2022 à 12:57
bonjour,
au lieu de
il est préférable de faire
cela te force à choisir un type, et t'aide à obtenir des messages d'erreurs plus précis.
par ailleurs, je ferais plutôt ainsi:
au lieu de
With Application.Documents(NomFichier)
il est préférable de faire
dim wdoc as ??? set wdoc= Application.Documents(NomFichier) With wdoc
cela te force à choisir un type, et t'aide à obtenir des messages d'erreurs plus précis.
par ailleurs, je ferais plutôt ainsi:
Dim wapp As Word.Application, wdox As Word.Documents, wdoc As Word.Document, nomfichier As String Set wapp = New Word.Application Set wdox = wapp.Documents nomfichier = ThisWorkbook.Path + "\undoc.docx" Set wdoc = wdox.Open(nomfichier) ' with wdoc ... wdoc.Close wapp.Quit
Bonjour,
Merci de votre réponse.
Merci aussi au modérateur qui a déplacé ma question que j'avais mise dans 'programmation'. Une fausse manip de ma part. Désolé.
J'ai réfléchi et regardé d'un peu plus près ma macro. De fait, je n'ouvre pas le document word lors de la création du courriel : je récupère simplement son contenu. En pas à pas, quand je survole "ts"", l'info bulle me donne "html". Donc, je ne peux pas associer les deux procédures. D'autant plus que la suppression du signet est définitive dans le document word, si j'ai bien compris.
Je cherche donc le code html me permettant soit de supprimer le signet, soit de le remplacer par un champs vide. Là, je coince aussi. Mais je pense que c'est la piste à suivre.
Merci de votre réponse.
Merci aussi au modérateur qui a déplacé ma question que j'avais mise dans 'programmation'. Une fausse manip de ma part. Désolé.
J'ai réfléchi et regardé d'un peu plus près ma macro. De fait, je n'ouvre pas le document word lors de la création du courriel : je récupère simplement son contenu. En pas à pas, quand je survole "ts"", l'info bulle me donne "html". Donc, je ne peux pas associer les deux procédures. D'autant plus que la suppression du signet est définitive dans le document word, si j'ai bien compris.
Je cherche donc le code html me permettant soit de supprimer le signet, soit de le remplacer par un champs vide. Là, je coince aussi. Mais je pense que c'est la piste à suivre.
yg_be
Messages postés
23431
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2025
1 559
11 avril 2022 à 17:27
11 avril 2022 à 17:27
As-tu encore l'erreur 91?
Ton dernier message est relativement incompréhensible.
Ton dernier message est relativement incompréhensible.
Pas toujours facile d'expliquer son problème quand on a le nez dedans !
Oui, j'ai toujours l'erreur 91. Mais c'est ce que je voulais expliquer dans mon dernier message. J'essayais de mélanger deux procédures distinctes : celle que j'utilise pour récupérer le texte dans mon fichier word, sans l'ouvrir :
et celle que j'avais trouvé pour supprimer les signets, pour laquelle vous m'avez donné une variante et que j'incluais dans la mienne. Donc, évidemment, cela ne peut marcher. C'est la raison pour laquelle j'ai essayé de trouver l'instruction html permettant de supprimer un signet, sans succès pour l'instant. Du coup, il faut que je repense ma procédure et fasse de nouveaux tests.
En espérant avoir été un peu plus clair...
Oui, j'ai toujours l'erreur 91. Mais c'est ce que je voulais expliquer dans mon dernier message. J'essayais de mélanger deux procédures distinctes : celle que j'utilise pour récupérer le texte dans mon fichier word, sans l'ouvrir :
'document modèle NomFichier = ThisWorkbook.Path & "\OUTILS\Modeles\mail client dossier.htm" Set fso = CreateObject("scripting.filesystemobject") Set ts = fso.OpenTextfile(NomFichier) ' With WordApp.Documents(NomFichier) ' Set SignetNom = .Bookmarks("Pass").Range ' .Range(SignetNom).Delete ' End With TexteMaitre = ts.readall ts.Close 'intégre dans la phrase d'appel TexteMaitre = Replace(TexteMaitre, "XXX_1", Replace(texte1, vbCr, "<br>")) 'intégre dans le texte les pièces manquantes du dossier locatif
et celle que j'avais trouvé pour supprimer les signets, pour laquelle vous m'avez donné une variante et que j'incluais dans la mienne. Donc, évidemment, cela ne peut marcher. C'est la raison pour laquelle j'ai essayé de trouver l'instruction html permettant de supprimer un signet, sans succès pour l'instant. Du coup, il faut que je repense ma procédure et fasse de nouveaux tests.
En espérant avoir été un peu plus clair...
Voilà, j'avance dans ma démarche. *en *html, je suis débutant, donc, je tatonne !
J'ai testé plusieurs codes html différents. Les deux plus logiques me semblent les deux lignes ci dessous. Lorsque j'active la première, il ne se passe rien. Si j'active la seconde, tout mon texte est effacé.
je suppose que la solution est entre les deux.
Des idées ?
D'avance merci
J'ai testé plusieurs codes html différents. Les deux plus logiques me semblent les deux lignes ci dessous. Lorsque j'active la première, il ne se passe rien. Si j'active la seconde, tout mon texte est effacé.
TexteMaitre = Replace(TexteMaitre, "<div><name=MobiliPass></div>", Replace("", vbCr, "<br>")) TexteMaitre = "<div class=noprint><name=MobiliPass></div>"
je suppose que la solution est entre les deux.
Des idées ?
D'avance merci
yg_be
Messages postés
23431
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2025
1 559
12 avril 2022 à 13:48
12 avril 2022 à 13:48
Il est totalement inutile de nous montrer des bouts de code incomplets.
As-tu renoncé à l'idée d'utiliser Word pour supprimer les paragraphes inutiles?
As-tu renoncé à l'idée d'utiliser Word pour supprimer les paragraphes inutiles?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Désolé pour le retard à répondre mais j'étais en déplacement.
Non, je n'ai pas renoncé mais je n'ai pas eu le temps de creuser. Il faut que je construise un fichier test : ce sera plus simple pour moi. J'espère pouvoir faire cela la semaine prochaine.
Bon week-end de Pâques.
Désolé pour le retard à répondre mais j'étais en déplacement.
Non, je n'ai pas renoncé mais je n'ai pas eu le temps de creuser. Il faut que je construise un fichier test : ce sera plus simple pour moi. J'espère pouvoir faire cela la semaine prochaine.
Bon week-end de Pâques.
J'ai finalement configuré la solution suivante pour obtenir le résultat souhaité, ie masquer certains onglets dans mon document word modèle selon conditions.
J'ai créé deux macros par signet : l'une pour afficher le texte, l'autre pour le masquer
Avec cette solution, le texte apparaît ou n'apparaît pas et n'est pas détruit.
Ensuite, dans Excel, j'ai ajouté le code suivant :
Voilà, problème résolu, en attendant de m'attaquant au suivant !
Bonne fête de Pâques à tous.
J'ai créé deux macros par signet : l'une pour afficher le texte, l'autre pour le masquer
Sub Afficher_Garant1() Selection.GoTo What:=wdGoToBookmark, Name:="Garant1" Selection.Font.Hidden = False End Sub Sub Masquer_Garant1() Selection.GoTo What:=wdGoToBookmark, Name:="Garant1" Selection.Font.Hidden = True End Sub
Avec cette solution, le texte apparaît ou n'apparaît pas et n'est pas détruit.
Ensuite, dans Excel, j'ai ajouté le code suivant :
Dim WordApp As Word.Application 'activer référence Word 'adapte le contenu du document aux différentes options Set WordApp = CreateObject("Word.Application") With WordApp .Visible = False .Documents.Open (ThisWorkbook.Path & "\OUTILS\Modeles\mail dossier.htm") .Run procedure1 'appel la macro Masquer_Garant1 ou Afficher_Garant1 selon le besoin .Run procedure2 'idem pour un autre signet,... .ActiveDocument.Save .Quit End With Set WordApp = Nothing
Voilà, problème résolu, en attendant de m'attaquant au suivant !
Bonne fête de Pâques à tous.