Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
bonjour tout le monde
je suis débutant en programmation et j'aimerais avoir des infos, merci de me répondre
j'ai un classseur excel avec plusieurs feuille sur chaque feuille j'ai creer un bouton qui lorsque je clique dessus me renvoit vers un document word commun avec des informations écrites dans ce document.
l'objectif c'est que le bouton de chaque ouvre le document word à des pages précises par exemple:
le bouton de la feuille1 renvoit la page de 1 à 2 du doc word
le bouton de la feuille 2 renvoit la page 3 ainsi de suite
Pour un 1er post, et débutant en programmation, c'est pas mal 😀
Alors étant sur Excel, touches Alt+F11 pour aller dans VBA.
1) Menu Outils => Références et cocher la référence "Microsoft Word xx.x Object Library".
2) Menu Insertion => Module et collez-y cette macro :
Code:
[COLOR="Red"]'--------------------------------------------------------
'Cocher la référence "Microsoft Word xx.x Object Library"
'--------------------------------------------------------[/COLOR]
Sub AtteindrePageWord()
Dim WordApp As Word.Application
On Error Resume Next
Set WordApp = GetObject(, "Word.Application")
WordApp.Selection.GoTo wdGoToPage, ActiveSheet.Index
If Err Then MsgBox "Page " & ActiveSheet.Index & " introuvable dans Word !!": Exit Sub
AppActivate WordApp.ActiveDocument.Name & " - Microsoft Word"
End Sub
3) Si les boutons de chaque feuille sont créés avec la boîte "Formulaire", affectez cette macro à chacun des boutons.
Sinon s'ils sont créés avec la "Boîte à outils Contrôles", pour chaque bouton en mode création,
clic droit => Visualiser le code et compléter la macro :
Code:
Private Sub CommandButton1_Click()
[COLOR="red"]AtteindrePageWord[/COLOR]
End Sub
En cliquant sur un bouton, vous irez sur la page Word correspondant au numéro d'ordre de la page Excel active.
Edit : ça ne marche pas sur un document Word enregistré, je vais revoir la macro...
Bonjour, bonjour Job 🙂,
Une autre version utilisant le nom des boutons à renomer Page 1, Page 2 ...
Activer Word x.x au préalable
Code:
Sub OuvreDoc()
Dim Chemin As String, oWord As Word.Application, oDoc As Word.Document
nPage = Split(Application.Caller, Chr(32))
Chemin = "E:\blabla\blabla.doc" 'à adapter
On Error Resume Next
Set oWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set oWord = CreateObject("Word.Application")
End If
On Error GoTo 0
If Dir(Chemin) <> "" Then
Set oDoc = oWord.Documents.Open(Chemin)
With oDoc.ActiveWindow.Selection
.GoTo what:=wdGoToPage, Count:=CInt(nPage(1))
End With
End If
oWord.Visible = True
oWord.Activate
End Sub
Dans la macro précédente, j'avais mal positionné l'argument Count, donc :
Code:
'--------------------------------------------------------
'Cocher la référence "Microsoft Word xx.x Object Library"
'--------------------------------------------------------
Sub AtteindrePageWord()
On Error Resume Next
With GetObject(, "Word.Application")
If Err Then MsgBox "Ouvrez le fichier Word !!": Exit Sub
.Selection.Goto wdGoToPage, [COLOR="Red"]Count:=[/COLOR]ActiveSheet.Index
.Visible = True
.Activate
End With
End Sub
La macro est plus simple que celle de kjin car je ne cherche pas à ouvrir le fichier Word.
La macro précédente faisait correspondre les pages Word aux pages Excel.
Pour une correspondance quelconque, créer un tableau :
Code:
'--------------------------------------------------------
'Cocher la référence "Microsoft Word xx.x Object Library"
'--------------------------------------------------------
Sub AtteindrePageWord()
Dim tablo
[COLOR="Red"]tablo = Array(1, 3, 4, 6) 'pages Word à atteindre, à adapter[/COLOR]
On Error Resume Next
With GetObject(, "Word.Application")
If Err Then MsgBox "Ouvrez le fichier Word !!": Exit Sub
.Selection.Goto wdGoToPage, Count:=[COLOR="red"]tablo(ActiveSheet.Index - 1)[/COLOR]
If Err Then MsgBox "Pas de page Word correspondante...": Exit Sub
.Visible = True
.Activate
End With
End Sub
Si les boutons ont été créés avec la "Boîte à outils Contrôles" (ActiveX) on peut aussi paramétrer la macro.
En Feuil1 :
Code:
Private Sub CommandButton1_Click()
AtteindrePageWord [COLOR="Red"]1[/COLOR]
End Sub
En Feuil2 :
Code:
Private Sub CommandButton1_Click()
AtteindrePageWord [COLOR="red"]3[/COLOR]
End Sub
Etc... Et dans le Module :
Code:
'--------------------------------------------------------
'Cocher la référence "Microsoft Word xx.x Object Library"
'--------------------------------------------------------
Sub AtteindrePageWord([COLOR="red"]page As Integer[/COLOR])
On Error Resume Next
With GetObject(, "Word.Application")
If Err Then MsgBox "Ouvrez le fichier Word !!": Exit Sub
.Selection.Goto wdGoToPage, Count:=[COLOR="red"]page[/COLOR]
.Visible = True
.Activate
End With
End Sub
Ce n'est pas terrible, mais j'ai trouvé cette solution : mettre dans le ThisWorkbook du fichier Excel cette macro :
Code:
Private Sub Workbook_Open()
On Error Resume Next
With GetObject(, "Word.Application")
.Visible = False
.Documents.Open .ActiveDocument.Path & "\" & .ActiveDocument.Name
.Visible = True
End With
End Sub
Encore une solution avec FollowHyperlink, mais je pense que c'est la même chose que la méthode Open :
Code:
Sub AtteindrePageWord(page As Integer)
On Error Resume Next
With GetObject(, "Word.Application")
If Err Then MsgBox "Ouvrez le fichier Word !!": Exit Sub
.Selection.Goto wdGoToPage, Count:=page
.Visible = True
ThisWorkbook.FollowHyperlink .ActiveDocument.Path & "\" & .ActiveDocument.Name
End With
End Sub
bonjour,
veuillez m'escusez du temps de réponses et merci job75
j'ai testé la macro elle fonctionne à merveille
mais après réflexion je me suis dit pourquoi faire appel à deux logiciel autant rester sur excel.
j'ai creer un code:
Sub atteindrecellule(cell As Integer)
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open("L:\.........")
Set ws = wb.Worksheets("amol").Cells("A3:B30")
End Sub
c'est toujours le même principe je voudrais que lorsque je clique sur le bouton de ma feuille excel celui si me renvoit le groupe de mot contenu dans ma plage de "A3:B30" qui se trouve sur une autre feuille excel du même classeur
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.