Problème de fermeture de powerpoint via VBA Excel

Résolu
cs_steed12 Messages postés 25 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 9 janvier 2006 - 29 déc. 2005 à 10:34
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 - 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

5 réponses

cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 5
29 déc. 2005 à 14:05
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
3
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
29 déc. 2005 à 14:09
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.
3
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
29 déc. 2005 à 11:14
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.
0
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 5
29 déc. 2005 à 11:17
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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