Gérer les changements de page dans word depuis une macro Excel
Bonjour à tous,
Je suis nouveau sur le forum, et en programmation vba également!
Dans le cadre de mon travail je réalise une macro pour générer des étiquettes sous word, mises en forme grâce a des textboxes. Je souhaite faire un fichier qui soit intégralement automatisé ou personne n'a besoin de revenir paramétrer quelque chose.
L'objectif est donc: Excel génère les données a mettre sur étiquettes, puis copie chaque ligne avec mise en forme sur une page word, saute une page et copie la ligne suivante.
J'ai déjà réalisé la partie génération des données a copier sur les étiquettes dans Excel, puis l'ouverture de Word. Dans Word la mise en forme se déroule comme souhaité... Puis viens la partie changer de page pour copier la ligne suivante.
L'insertion de la nouvelle page word fonctionne. Mais je n'arrive pas à lui faire reprendre depuis cette nouvelle page. En gros soit il me copie toutes les lignes sur la 1ère page (en m'insérant des pages vides derrière), soit il s'arrête quand mes nombreux essais de code ne sont pas bons. Fait amusant, cela fonctionne parfaitement quand je retire mon code "qui tente de selectionner la page suivante" et que je place une Msgbox a cet endroit, et que je place le curseur sur la page suivante pendant la msgbox! C'est donc bien cette sélection de page suivante qui pose problème, mais je n'ai pas envie de devoir cliquer 30 000 fois sur la page suivante puis faire ok sur la msgbox...
Question donc: Comment, depuis ma macro excel placer ce curseur sur la page word suivante (qui accessoirement est aussi la dernière a chaque fois)?
C'est peut être tout bête mais je m'arrache les cheveux dessus lol!
Voici le code :
'Test de la ligne suivante pour continuer ou pas
With fichierexcel
test = ActiveCell
End With
If Len(test) < 5 Then
keeplooping = False
Else 'Sinon ajout d'une page, et c'est reparti.
Set myRange = fichierword.Paragraphs(1).Range
With myRange
.Collapse Direction:=wdCollapseEnd
.InsertBreak Type:=wdPageBreak
End With
MsgBox ("Hello once")
Selection.Goto What:=wdGoToPage, Which:=wdGoToLast
MsgBox ("Hello again")
'ActiveDocument.Range.Select
'Selection.Goto What:=wdGoToPage, Which:=wdGoToAbsolute, _
Count:=numpage
'numpage = numpage + 1
End If
'Fin de boucle
WendTout marche jusqu'à "Hello once".
Merci pour votre aide!
Bonjour,
Pour insérer un saut de page dans un doc depuis excel, c'est du genre :
Worddoc.Paragraphs(.Paragraphs.Count - 1).Range.InsertBreak Type:=wdPageBreak
(nb, si liaison tardive => wdPageBreak=7)
Pierre
Hello,
Merci pour la réponse.
Ce que tu proposes ressemble à ce que j'ai déjà non?
Set myRange = fichierword.Paragraphs(1).Range
With myRange
.Collapse Direction:=wdCollapseEnd
.InsertBreak Type:=wdPageBreak
End With
MsgBox ("Hello once")
Selection.Goto What:=wdGoToPage, Which:=wdGoToLast
MsgBox ("Hello again")Et cette partie là (copiée depuis docs.microsoft.com), fonctionne déjà en soi, l'insertion de la page a bien lieu, c'est sa sélection pour la mise en forme suivante qui pose problème.
J'ai quand même testé avec ta formulation, mais cela revient au même dans le sens ou le curseur reste sur la première page et l'insertion des données suivantes continue sur cette page (les cadres se superposent). Le but est de trouver comment sélectionner la page suivante. Quand je regarde à "Hello again" le curseur reste sur la 1ère.
Une idée?
Merci!