Je ne peux pas réparer mon fichier PowerPoint avec PowerPoint 2013 et 2016
Problème
PowerPoint ne parvient pas à réparer un fichier PowerPoint corrompu.
Explication
La réparation des fichiers PowerPoint échoue si vous réalisez une tâche de programmation sur les diapositives avant que PowerPoint ne les ait réparées. Toutefois, think-cell, et probablement d'autres modules, doivent accéder aux diapositives lorsque le fichier est ouvert, et il est impossible pour un module de savoir qu'un fichier est corrompu.
Nous avons déposé une requête auprès de Microsoft, mais aucune décision n'a encore été prise concernant la résolution de ce problème. Si votre société possède un contrat auprès de l'Assistance Microsoft Office, vous pouvez contacter Microsoft pour demander un correctif en leur mentionnant le numéro de dossier 115040112590053. L'erreur est reproductible sans think-cell.
Reproduction de l'erreur sans think-cell
L'erreur peut être reproduite sans think-cell si un code est appliqué aux diapositives corrompues avant que la réparation ne soit terminée. Dans la reproduction suivante, le gestionnaire d'événements PresentationOpen fait appel à un code accédant à toutes les diapositives lorsque le fichier s'ouvre, c'est-à-dire avant la réparation.
- Ouvrez PowerPoint 2013 ou 2016 avec un nouveau fichier vide.
- Dans PowerPoint, allez à Insert > think-cell > Tools > Deactivate think-cell.
- Appuyez sur Alt+F11 pour ouvrir la fenêtre Microsoft Visual Basic for Applications.
-
Ajoutez ce code en tant que Module de classe et nommez-le
cEventClass
:Public WithEvents PPTEvent As Application Private Sub Class_Initialize() MsgBox "EventHandler is now active." End Sub Private Sub PPTEvent_PresentationOpen(ByVal pres As Presentation) On Error GoTo errHandle: Debug.Print "open file: " & pres.Name Dim i As Integer For i = 1 To pres.Slides.Count Debug.Print "Slide " & pres.Slides.Item(i).SlideNumber; " / " _ & pres.Slides.Count Next i Exit Sub errHandle: Debug.Print ("VBA Error: " & Err.Number & " " & Err.Description) & vbCr End Sub
-
Ajoutez ce code en tant que Module :
Dim cPPTObject As New cEventClass Sub Initialize_Eventhandler() Set cPPTObject.PPTEvent = Application Debug.Print "**** EventHandler active ****" End Sub
- Dans la fenêtre de présentation de PowerPoint, appuyez sur Alt+F8 pour ouvrir la fenêtre Macro.
- Lancez la macro Initialize_Eventhandler.
- Ouvrez maintenant le fichier PowerPoint corrompu et essayez de le réparer.
Ce problème ne survient pas avec Microsoft Office 2010.
Solution
Tant que Microsoft n'aura pas réparé ce bogue, vous pouvez désactiver temporairement think-cell à titre de solution provisoire :
- Désactiver think-cell dans PowerPoint : Insert > think-cell > Tools > Deactivate think-cell
- Ouvrez votre fichier corrompu et réparez-le
- Réactiver think-cell dans PowerPoint : Insertion → think-cell → Activer