Recuperer contenu onglet visible excel dans word [Résolu]

Signaler
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013
-
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013
-
Bonjour à tous,

Je souhaite depuis un document word ouvrir un fichier excel (ce fichier serait choisi par l'utiisateur) dans un premier temps.

Dans un second temps je souhaiterais que la macro rapatrie dans word le contenu de chaque onglet actif (donc pas les onglets masqués) du classeur excel ouvert.

Je pensais passer par Application.FileDialog(msoFileDialogOpen) pour récuperer le nom du fichier choisi par l'utilisateur ... mais après je sèche !

Avez vous un début d'idée à me proposer ?

Davance merci !

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Le principe est toujours le même, avec ole automation, que tu pilotes Word depuis Excel ou l'inverse.
Il implique toutefois bien évidemment que tu maîtrises également le logiciel à piloter (Excel dans ton cas).
J'appelle à ce sujet ton attention sur ce que tu as écrit :
le contenu de chaque onglet actif (donc pas les onglets masqués) du classeur excel ouvert.

Ne pas confondre onglet avec feuille de calcul
Ne pas confondre "Actif" avec "caché"
Si j'ai bien deviné, tu voulais peut-être dire :
"récupérer les données des seule feuilles de calcul correspondant aux seuls onglets visibles"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
J'ai cherché pour toi sur ce forum de la lecture "fructifère"...
Je te conseille de commencer par CELLE-CI (petit tutoriel)
Elle devrait te permettre de comprendre le principe fondamental.

Quelle est la différence avec toi , pour piloter ton classeur ?
Elle est ici :

Set wbExcel = appExcel.Workbooks.Open("C:\MonFichierExcel.xls")


Toi, tu dois tout simplement remplacer "C:\MonFichierExcel.xls" par la chaine retournée par ton utilisation de la boîte de dialogue de choix d'un classeur. ===>>>
imaginons que tu aies ainsi obtenu une variable toto (contenant le chemin du classeur choisi) ===>>
Set wbExcel = appExcel.Workbooks.Open(toto)

Tout le reste demandera peu de connaissance en pilotage, mais (une autre fois) beaucoup de connaissances de VBA/EXCEL.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Bonjour,

As-ru recherché/lu les discussions et sources de ce forum traitant du pilotage d'autres applis office à l'aide de VBA ?
Commence par là, s'il te plait.
Reviens (avec ce que tu as tenté) si encore difficultés.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013

BOnsoir,

J'ai parcouru différents forum ... Il y a bcp de chose dans le sens Word vers Excel et depuis Excel, mais je n'ai pas trouvé d'automatisation d'Excel vers word depuis word.

Je comprends aisément que je ne suis pas sur ce forum pour que mon construise tout le code ... je demande simplement un début de piste ...

Davance merci à ceux qui veulent bien m'aider.

A+
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Tu dois donc :
1) offir à l'utilisateur une boite de dialogue pour qu'il y choisisse son fichier Excel
2) instancier Excel depuis VBA/Word pour piloter Excel
3) dans ton objet Excel (puisque ce sera un objet, ce que tu auras ainsi instancié)), tu extrais (exactement comme tu le ferais depuis VBA/Excel, puisque, étant dans ton objet, tu es dans Excel) les données de ton choix, donnes les instructions de ton choix, etc ...
C'est précisément cela, le "pilotage" !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Ne pas confondre "Actif" avec "caché" "visible"
Bien sur


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013

Bonsoir,

ucfoutu je te remercie d'avoir pris un peu (bcp !) de ton temps pour me répondre.

Pour ton premier message, j'avais bien vu à travers plusieurs forum qu'il fallait faire comme tu le décris.
Ensuite pour le pilotage lui même je crois avoir compris le principe ... et je suis d'accord avec toi, un peu (bcp !) de documentation me feront du bien pour bâtir mon code.

Enfin merci pour la doc fournie ... je vais aussi me rencarder auprès d'un programmeur que je connais.

Je ne manquerais pas de déposer mon code ... ça peut être intéressant ! et qui sait il pourra être optimiser par des pros comme toi !

Merci encore
Messages postés
47
Date d'inscription
mardi 3 juillet 2007
Statut
Membre
Dernière intervention
26 décembre 2013

Re Bonsoir !

En tâtonnant un peu et en se documentant voilà le début de mon code :

Option Explicit
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long

 

Private Sub Macro1()

' Objet de la macro : rapatrier les onglets non masqués dans un document word

Dim finput As FileDialog
Dim Chemin As String
Dim appExcel As Object
Dim wbExcel As Object
Dim wsExcel As Object
Set finput = Application.FileDialog(msoFileDialogOpen)
finput.Show
Chemin = finput.SelectedItems(1)

Set appExcel = CreateObject("Excel.application")
Set wbExcel = appExcel.Workbooks.Open(Chemin)
Set wsExcel = wbExcel.ActiveSheet
   
    If Sheets("Feuil1").Visible = True Then
        Sheets("Feuil1").Range("A3:F20").Copy
        Selection.GoTo What:=wdGoToBookmark, Name:="TEST"
        Selection.PasteSpecial , DataType:=wdPasteBitmap
        
        'vidage du presse papier
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
    End If
    
    If Sheets("Feuil2").Visible = True Then
    Sheets("Feuil2").Range("A1:E10").Copy
    Selection.GoTo What:=wdGoToBookmark, Name:="TEST1"
    Selection.PasteSpecial , DataType:=wdPasteBitmap
    
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard
    End If
 
 ' suite du code ...
 

'wbExcel.Save
wbExcel.Close
appExcel.Quit
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
End Sub


Surement à améliorer ... mais c'est un début qui fonctionne !
Peut me coucher satisfait tiens !
Un grand grand merci à ucfoutu qui m'a éclairé la voie ;-) !