Bonjour à tous,
J’ai un problème de mise à jour de liaisons excel dans powerpoint. Le souci c’est que mon code fonctionne quand je fais tourner des petits bouts… mais ne fonctionne plus quand je tourne l’intégralité du programme. C’est la raison pour laquelle je me dis qu’il doit y avoir un problème qui aurait un rapport avec des événements qui se lanceraient en même temps ou un truc du genre. J’ai mis des sleep dans mon code mais ça ne change rien.
J’ai un fichier powerpoint, un fichier excel contenant des tableaux, des fichiers images. Dans mon fichier powerpoint :
- J’ai lié les fichiers images : le code fonctionne tout le temps
- J’ai lié les tableaux du fichier excel : le code fonctionne parfois.
Quand le code ne fonctionne pas, un debug m’a permis de voir que c’est dès qu’ on arrive au 1er tableau excel à mettre à jour que le message d’erreur apparait (voir pièce jointe).
Avez-vous une idée ?
Merci de votre aide.
[EDIT] Comme je pense que le souci vient de l'enchainement des actions, je vous mets les étapes précédentes aussi.
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 Public Function LaunchPowerPoint() As Boolean On Error GoTo erreur Dim ppt As PowerPoint.Application Set ppt = CreateObject("PowerPoint.Application") ppt.Visible = True Dim Pres As PowerPoint.Presentation Set Pres = ppt.Presentations.Open(Filename:=PathPPT) Dim Forme As PowerPoint.Shape Dim Diapo As PowerPoint.Slide For Each Diapo In Pres.Slides For Each Forme In Diapo.Shapes If Forme.Type = msoLinkedOLEObject Then Forme.LinkFormat.Update ' MESSAGE D ERREUR Sleep 1000 End If Next Next Pres.Save ppt.Quit Set ppt = Nothing LaunchPowerPoint = True Exit Function erreur: MsgBox "Erreur: " & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbInformation LaunchPowerPoint = False End Functionet la sub qui déclenche tout dans laquelle j'actualise mes fichiers excel puis j'actualise mon ppt à partir des données excel:
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 Public Function RunMacroExcel(MyPath As String, MyFile As String) As Boolean On Error GoTo erreur Dim wdApp As Excel.Application Set wdApp = CreateObject("Excel.Application") With wdApp .Workbooks.Open MyPath '.Visible = True .Run (MyFile & "!MAJ") .ActiveWorkbook.Close SaveChanges:=True End With wdApp.Application.Quit Set wdApp = Nothing RunMacroExcel = True Exit Function erreur: MsgBox "Erreur: " & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbInformation RunMacroExcel = False End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 '... p1_Execution = RunMacroExcel(Pathp1, Filep1) Sleep 10000 p2_Execution = RunMacroExcel(Pathp2, Filep2) Sleep 10000 p3_Execution = RunMacroExcel(Pathp3, Filep3) Sleep 10000 p4_Execution = RunMacroExcel(Pathp4, Filep4) Sleep 10000 p5_Execution = RunMacroExcel(Pathp5, Filep5) Sleep 10000 PPT_Execution = LaunchPowerPoint()
Partager