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

Messages postés
25
Date d'inscription
mardi 4 janvier 2005
Dernière intervention
9 janvier 2006
- 29 déc. 2005 à 10:34 - Dernière réponse :
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
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
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
215
Date d'inscription
mercredi 2 février 2005
Dernière intervention
9 avril 2010
29 déc. 2005 à 14:05
3
Merci
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

Merci cs_chapata 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Meilleure réponse
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Dernière intervention
30 décembre 2005
29 déc. 2005 à 14:09
3
Merci
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.

Merci cs_69chris 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Dernière intervention
30 décembre 2005
29 déc. 2005 à 11:14
0
Merci
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.
Messages postés
215
Date d'inscription
mercredi 2 février 2005
Dernière intervention
9 avril 2010
29 déc. 2005 à 11:17
0
Merci
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
Messages postés
25
Date d'inscription
mardi 4 janvier 2005
Dernière intervention
9 janvier 2006
29 déc. 2005 à 13:50
0
Merci
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.