Bonjour à tous,
Je poste mon premier message ici après de nombreuses recherches qui restent sans réponses... D'habitude je trouve toujours ce dont j'ai besoin mais là non :/ Désolé (J'espère être au bon endroit pour ce post).
Je précise que je n'ai jamais fais de vba de ma vie donc ça peut vous paraître simple mais pour moi ça ne l'est pas, même si la logique est là je n'arrive pas à écrire le code (Et surtout savoir si je suis sur la bonne voie).
Donc le problème :
J'ai plusieurs documents Publisher, dans chaque document j'aimerai en pieds de page le nom du fichier, mais aussi que ce titre en bas de page change automatique si on change le nom du fichier. Tout simplement car ces fichiers sont modifiés au fil du temps, et nous changeons dans le nom la date et le numéro de révision, pour être certain que ce soit le bon fichier dans lequel nous travaillons il est idéal que le nom en pieds de page change automatiquement à chaque changement du nom de fichier.
Donc j'ai écris ceci :
Mais le problème, c'est qu'à chaque ouverture il n'écrase pas l'ancien nom mais créé un nouveau et superpose... Dans la logique, l'idéal serait de soit supprimer à chaque ouverture le Shape existant et créé le nouveau, soit comparer si le nom du fichier est le même que le nom en pieds de page, si oui ne rien faire, si non supprimer et remplacer. Chaque fois que j'essaie de supprimer, j'ai un problème, j'écris ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Document_Open() Dim shShape As Shape Dim strPubFile As String strPubFile = Application.ActiveDocument.Name Set shShape = ActiveDocument.Pages(1).Shapes.AddTextbox(1, 200, 820, 200, 20) shShape.TextFrame.TextRange.Text = strPubFile End Sub
ActiveDocument.Pages(1).Shapes.Delete
Mais ça ne semble pas être la bonne syntaxe (ou la bonne méthode). Je précise que j'ai plusieurs Shape sur la page, donc l'idéal serait de cibler seulement celui avec le nom (le nommer peut-être ?).
Merci d'avance à ceux qui se penchent sur mon problème ! Si ma méthode n'est pas la bonne à la base, n'hésitez pas à me corriger.
Bonne journée.
Partager