Bonjour,
Le sujet a déjà été abordé partiellement dans différentes discussions.
Je vous propose une solution qui marche chez moi et à mon travail, c'est à dire sous PC et Mac (via Parallels), office 2003.
Les routines que je vous propose permettent de passer la main à Excel que celui-ci soit déjà ouvert ou non et que le fichier cible soit lui aussi ouvert ou fermé. Bref cela marche quelque soit l'état d'Excel.
Merci de me faire vos commentaires.
Et cerise sur le gâteau : un petit programme de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 Public xlApp As Excel.Application Public xlBook As Excel.Workbook Public xlsheet As Excel.Worksheet Sub Ouv_Excel(Bidon) '__________________ ' ' Routine qui vérifie qu'Excel est ouvert ' et déclenche l'ouverture si fermé On Error GoTo Trt_Erreur Set xlApp = GetObject(, "Excel.Application") 'MsgBox ("Nom xlApp :" & xlApp.Name) GoTo suite Trt_Erreur: 'MsgBox ("Erreur") Nom = "" Set xlApp = CreateObject("Excel.Application") Resume Next suite: On Error GoTo 0 End Sub Sub Ouv_Classeur(Chemin_nom, Nom_Fichier) '________________________________________ ' ' Routine d'ouverture d'un fichier Excel ' (si il n'est pas déjà ouvert) ' Vérification de l'ouverture d'Excel Call Ouv_Excel(Bidon) ' Vérification des classeurs déjà ouverts N_Wb = xlApp.Workbooks.Count Deja_Ouvert = False If N_Wb <> 0 Then For i_Wb = 1 To N_Wb Wb_Name = xlApp.Workbooks(i_Wb).Name 'MsgBox (xlApp.Workbooks(i_Wb).Name) If Nom_Fichier = Wb_Name Then xlApp.Workbooks(i_Wb).Activate xlApp.Visible = True Deja_Ouvert = True Exit Sub End If Next End If If Deja_Ouvert = False Then ' Ouverture du fichier Nom_Long_Fichier = Chemin_nom & "\" & Nom_Fichier Set xlBook = xlApp.Workbooks.Open(Nom_Long_Fichier) xlApp.Visible = True End If End Sub
Et pour finir, il ne faut pas oublier de cocher la référence à Excel (Microsoft Excel 11.0 Object Library) dans le menu Outils de Visual Basic.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Test() ' Où suis-je ? Chemin = ActivePresentation.Path ' Ouverture du fichier Excel si fermé Nom_FichierXLS = "aller_retour_Excel_PPT.xls" Call Ouv_Classeur(Chemin, Nom_FichierXLS) ' Lancement de la macro Excel ChaineRun = Nom_FichierXLS & "!O_Messages" xlApp.Run ChaineRun End Sub
A+
PPz
Partager