Récupérer tout le fichier excel et non le classeur ouvert
Enshuk
-
cs_Le Pivert Messages postés 8437 Statut Contributeur -
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,
Je travaille sur une macro, dont l'objectif est de récupérer dans un fichier Word tous les graphiques commençant par le même nom et ayant la même couleur d'onglet.
Si les graphiques sont sur le même onglet, ça fonctionne. Mais si ils sont sur un onglet différents, ils ne se copient pas sur le document Word.
J'ai essayé
Voici ma boucle :
Merci d'avance.
Je travaille sur une macro, dont l'objectif est de récupérer dans un fichier Word tous les graphiques commençant par le même nom et ayant la même couleur d'onglet.
Si les graphiques sont sur le même onglet, ça fonctionne. Mais si ils sont sur un onglet différents, ils ne se copient pas sur le document Word.
J'ai essayé
ActiveBookau lieu de
ActiveSheets, mais sans succès...
Voici ma boucle :
For Each Chart In ws.ChartObjects
'a = Left(Chart.Name, 1)
'MsgBox a
If Left(Chart.Name, 1) = "(" And ws.Tab.Color = RGB(128, 128, 128) Then
ActiveBooks.ChartObjects("(Test)").Chart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
wrdApp.Selection.Goto what:=wdGoToBookmark, Name:="Graphique2" ' on recherche le signet dans Word pour se positionner
wrdApp.Selection.MoveRight wdCharacter, 1
'wrdApp.Selection.MoveLeft wdCharacter, 1 ' optionnel : pour se placer AVANT le signet (move left)
wrdApp.Selection.PasteSpecial link:=False, DataType:=wdPasteMetafilePicture, Placement:=wdInLine, DisplayAsIcon:=False
Merci d'avance.
Configuration: Windows / Chrome 78.0.3904.97
A voir également:
- Récupérer tout le fichier excel et non le classeur ouvert
- Fichier bin - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Fichier epub - Guide
- Word et excel gratuit - Guide
- Fichier rar - Guide
4 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
classeur et fichier étant synonymes, ton titre est un peu bizarre.
tu ne nous montres qu'une partie de ton code.
je suppose que ws est déclaré comme worksheet, et que tu fais une boucle pour faire le tour de tous les onglets de ton classeur.
je me demande si tu ne t'embrouilles pas en ayant choisi d'utiliser "Chart" comme nom de variable: utilises plutôt "graphique". Sois certain, aussi, d'avoir bien
Je pense que tout s'éclaircira et que tu découvriras ton erreur.
classeur et fichier étant synonymes, ton titre est un peu bizarre.
tu ne nous montres qu'une partie de ton code.
je suppose que ws est déclaré comme worksheet, et que tu fais une boucle pour faire le tour de tous les onglets de ton classeur.
je me demande si tu ne t'embrouilles pas en ayant choisi d'utiliser "Chart" comme nom de variable: utilises plutôt "graphique". Sois certain, aussi, d'avoir bien
option expliciten haut de ton module.
Je pense que tout s'éclaircira et que tu découvriras ton erreur.
Bonjour,
comme le dit yg_be si justement, ton titre est équivoque. Il s'agit d'onglet et non de classeur!
Dans ton dernier post je t'ai indiqué ce lien. Il ne fait pas le job?
Essaie de mettre un MsgBox pour voir si il boucle sur tous les graphiques. Si oui, c'est ta macro qui ne fait pas le job!
https://vb.developpez.com/faqvba/?page=3.5#listgraphique
comme le dit yg_be si justement, ton titre est équivoque. Il s'agit d'onglet et non de classeur!
Dans ton dernier post je t'ai indiqué ce lien. Il ne fait pas le job?
Essaie de mettre un MsgBox pour voir si il boucle sur tous les graphiques. Si oui, c'est ta macro qui ne fait pas le job!
https://vb.developpez.com/faqvba/?page=3.5#listgraphique
Cela devrait t’intéresser en l'adaptant à ton environnement:
https://forum.excel-pratique.com/viewtopic.php?t=68158
@+ Le Pivert
https://forum.excel-pratique.com/viewtopic.php?t=68158
@+ Le Pivert
Bonjour et merci pour vos réponses,
Si, cela m'a aidé. Je vous remercie encore infiniment.
Mais je n'ai réussi à l'appliquer qu'à l'onglet actif, et non au classeur tout entier.. C'est pour cette raison que j'ai posté ce sujet.
Veuillez m'excuser, si je n'ai pas été assez explicite.
Voilà le reste du code.
Si, cela m'a aidé. Je vous remercie encore infiniment.
Mais je n'ai réussi à l'appliquer qu'à l'onglet actif, et non au classeur tout entier.. C'est pour cette raison que j'ai posté ce sujet.
Veuillez m'excuser, si je n'ai pas été assez explicite.
Voilà le reste du code.
Sub Export_Graphiques_Vers_Word()
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim ws As Worksheet
Dim sh As Worksheet, i As Long
Dim AnyString, a
Application.ScreenUpdating = False
Set ws = ThisWorkbook.Sheets(1) 'Onglet contenant les graphiques
Set wrdApp = GetObject(, "Word.Application")
Set wrdDoc = wrdApp.ActiveDocument
For Each Chart In ws.ChartObjects
If Left(Chart.Name, 1) = "(" And ws.Tab.Color = RGB(128, 128, 128) Then 'ws.Tab.Color = RGB(40, 150, 160) Then '("Sheet1") = RGB(40, 150, 160) Then
ActiveBooks.ChartObjects("(µ) Fv_SL_MECH").Chart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
wrdApp.Selection.Goto what:=wdGoToBookmark, Name:="Graphique2" ' on recherche le signet dans Word pour se positionner
wrdApp.Selection.MoveRight wdCharacter, 1
'wrdApp.Selection.MoveLeft wdCharacter, 1 ' optionnel : pour se placer AVANT le signet (move left)
wrdApp.Selection.PasteSpecial link:=False, DataType:=wdPasteMetafilePicture, Placement:=wdInLine, DisplayAsIcon:=False
End If
Next Chart
' -- Terminer
wrdDoc.Save
Set wrdDoc = Nothing: Set wrdApap = Nothing
Application.ScreenUpdating = True
'Else: MsgBox "Erreur"
End Sub
Option Explicit
Sub Export_Graphiques_Vers_Word()
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim onglet As Worksheet
Dim graphique As Chart
Application.ScreenUpdating = False
Set wrdApp = GetObject(, "Word.Application")
Set wrdDoc = wrdApp.ActiveDocument
For Each onglet In ThisWorkbook.Sheets
If onglet.Tab.Color = RGB(128, 128, 128) Then
For Each graphique In onglet.ChartObjects
If Left(graphique.Name, 1) = "(" Then 'ws.Tab.Color = RGB(40, 150, 160) Then '("Sheet1") = RGB(40, 150, 160) Then
graphique.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
wrdApp.Selection.Goto what:=wdGoToBookmark, Name:="Graphique2" ' on recherche le signet dans Word pour se positionner
wrdApp.Selection.MoveRight wdCharacter, 1
'wrdApp.Selection.MoveLeft wdCharacter, 1 ' optionnel : pour se placer AVANT le signet (move left)
wrdApp.Selection.PasteSpecial link:=False, DataType:=wdPasteMetafilePicture, Placement:=wdInLine, DisplayAsIcon:=False
End If
Next graphique
End If
Next onglet
' -- Terminer
wrdDoc.Save
Set wrdDoc = Nothing: Set wrdApp = Nothing
Application.ScreenUpdating = True
End Sub