Problème de fermeture de powerpoint via VBA Excel [Résolu]

cs_steed12 25 Messages postés mardi 4 janvier 2005Date d'inscription 9 janvier 2006 Dernière intervention - 29 déc. 2005 à 10:34 - Dernière réponse : cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention
- 29 déc. 2005 à 14:09
Voilà, je crée un fichier powerpoint avec d'autre powerpoint depuis excel mais le problème est que lorsque tout est fini je lui demande deme fermer powerpoint et ensuite de m'afficher un texte box. Mais impossible car il m'affiche le texte box avant la fermeture ce qui fait qu'on ne le voie pas dirrectement il faut cliquer sur excel puis validé le texte box pour que powerpoint ce ferme. Si quelqu'un c'est pourquoi ?

merci d'avance, voici le code de ma macro :


Sub generateurppt()

'definition du chemin vers le repertoire des modules
Dim chemin As String
Dim cheminmodule As String
chemin = ActiveWorkbook.Path & "\suport_formation.ppt"
cheminmodule = ActiveWorkbook.Path & "\modules"
Dim passage As String
Dim ouvert As String

Dim temps(1 To 300, 1 To 2) As String
Dim nbmodule As Double
nbmodule = 0
For i = 1 To 3000
If UCase(Range("B" & i)) = "X" Then
nbmodulde = nbmodulde + 1
temps(nbmodulde, 1) = nbmodulde
temps(nbmodulde, 2) = Range("c" & i)
Else
End If

Next i

If nbmodulde = 0 Then

MsgBox ("Merci de selectionner au moins un module.")
Beep
Else

Dim ppt As Object
Dim Pres As Object
Set ppt = CreateObject("PowerPoint.Application")

ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de fichier (Erreur)
' On crée maintenant un objet Presentation

Set Pres = ppt.Presentations.Open(Filename:=cheminmodule & temps(1, 2) & ".ppt")


Dim fingeneral As Double
Dim curentfin As Double
For i = 2 To nbmodulde
With ppt.ActivePresentation
fingeneral = .Slides.Count
End With


Set bob = ppt.Presentations.Open(Filename:=cheminmodule & temps(i, 2) & ".ppt")
With ppt.ActivePresentation
curentfin = .Slides.Count
End With
bob.Close

ppt.ActivePresentation.Slides.InsertFromFile _
cheminmodule & temps(i, 2) & ".ppt", fingeneral, 1, curentfin

Next i
ppt.ActivePresentation.SaveAs Filename:=chemin
ppt.ActivePresentation.Close
ppt.Quit 'fermer powerpoint

MsgBox ("Votre fichier de formation est diponnible à cette adresse : " & chemin)
End If

End Sub
Afficher la suite 

5 réponses

cs_chapata 215 Messages postés mercredi 2 février 2005Date d'inscription 9 avril 2010 Dernière intervention - 29 déc. 2005 à 14:05
+3
Utile
Salut Steed12 ...

Attends ton programme est dans Excel ... je l'ai testé ... il ouvre et rend visible PPT suivant le choix du module (j'ai ouvert une présentation vierge pour ne pas que ça beug)
après tu fais ..

ppt.ActivePresentation.Close
ppt.Quit 'fermer powerpoint

MsgBox ("Votre fichier de formation est diponnible à cette adresse : " & chemin)

J'ai bien PPT qui se ferme et mon message Excel après ... pour moi pas de prob.
Fais un excel.application.visible=true avant ta fermeture de PPT ... peut-être que cela va marché. Mais comme je te l'ai dis chez moi ca suis bien l'ordre que tu as pré-défini.

ChaPaTa
Cette réponse vous a-t-elle aidé ?  
cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 29 déc. 2005 à 14:09
+3
Utile
Tout d'abord, désolé, j'avais pas testé et vu le Pb. Je pensais que PowerPoint affichais une fenêtre de dialogue et que c'est elle qui empéchais la fermeture.
Donc, après un petit essai, voici ma conclusion.
Transforme ta Sub en Function qui renvoi le "chemin". Et fais une sub qui appelle cette fonction.
Pour faire simple, comme ça.

Function generateurppt() As String

'definition du chemin vers le repertoire des modules
Dim chemin As String
Dim cheminmodule As String
chemin = ActiveWorkbook.Path & "\suport_formation.ppt"
cheminmodule = ActiveWorkbook.Path & "\modules"
Dim passage As String
Dim ouvert As String

Dim temps(1 To 300, 1 To 2) As String
Dim nbmodule As Double
nbmodule = 0
For i = 1 To 3000
If UCase(Range("B" & i)) = "X" Then
nbmodulde = nbmodulde + 1
temps(nbmodulde, 1) = nbmodulde
temps(nbmodulde, 2) = Range("c" & i)
Else
End If

Next i

If nbmodulde = 0 Then

MsgBox ("Merci de selectionner au moins un module.")
Beep
Else

Dim ppt As Object
Dim Pres As Object
Set ppt = CreateObject("PowerPoint.Application")

ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de fichier (Erreur)
' On crée maintenant un objet Presentation

Set Pres = ppt.Presentations.Open(Filename:=cheminmodule & temps(1, 2) & ".ppt")


Dim fingeneral As Double
Dim curentfin As Double
For i = 2 To nbmodulde
With ppt.ActivePresentation
fingeneral = .Slides.Count
End With


Set bob = ppt.Presentations.Open(Filename:=cheminmodule & temps(i, 2) & ".ppt")
With ppt.ActivePresentation
curentfin = .Slides.Count
End With
bob.Close

ppt.ActivePresentation.Slides.InsertFromFile _
cheminmodule & temps(i, 2) & ".ppt", fingeneral, 1, curentfin

Next i
ppt.ActivePresentation.SaveAs Filename:=chemin
ppt.ActivePresentation.Close
ppt.Quit 'fermer powerpoint

End If

End Function

Sub AppelGenerateur()

MsgBox ("Votre fichier de formation est diponnible à cette adresse : " & generateurppt())
End Sub

PowerPoint se ferme en premier.

Chris

N'oubliez pas de cloturer votre post.
Cette réponse vous a-t-elle aidé ?  
cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 29 déc. 2005 à 11:14
0
Utile
Salut,

Je suis pas un pro VBA mais je pense à
.DisplayAlerts = False
Enfin pour toi c'est
ppt.DispayAlerts = False
En plus, si tu a erreur à l'ouverture du fichier, y a pas de message donc pas besoin d'afficher PowerPoint. Faut juste vérifier que le fichier existe avant de l'ouvrir.

Chris

N'oubliez pas de cloturer votre post.
cs_chapata 215 Messages postés mercredi 2 février 2005Date d'inscription 9 avril 2010 Dernière intervention - 29 déc. 2005 à 11:17
0
Utile
Hi,
essai le ppt.visible true ou le ppt.activate true ...
je suis pas sur que cela fonctionne ... mais qui ne tente à rien n'a rien (lol)

ChaPaTa
cs_steed12 25 Messages postés mardi 4 janvier 2005Date d'inscription 9 janvier 2006 Dernière intervention - 29 déc. 2005 à 13:50
0
Utile
En fait je me suis peut etre mal exprimer, je veux fermer powerpoint puis lancer un message box.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.