cs_steed12
Messages postés25Date d'inscriptionmardi 4 janvier 2005StatutMembreDernière intervention 9 janvier 2006
-
29 déc. 2005 à 10:34
cs_69chris
Messages postés318Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention30 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
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 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 ..
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.
cs_69chris
Messages postés318Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention30 décembre 20051 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
cs_69chris
Messages postés318Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention30 décembre 20051 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.