Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Powerpoint > VBA PowerPoint

Réponse
 
Outils de la discussion
Vieux 01/06/2008, 00h36   #1 (permalink)
Invité de passage
 
Date d'inscription: juin 2008
Localisation: Paris
Âge: 35
Messages: 6
Par défaut Fonction File Search avec PowerPoint 2007

Bonjour,

Je suis nouveau sur le forum , j'espère que je m'y prends correctement.

Voilà , je vous expose mon problème:

J'ai crée une petite macro sous powerpoint (version 2000) qui utilise la fonction "With Application.FileSearch".

Malheureusement , cette macro ne fonctionne plus sous la version 2007 de powerpoint.
La raison est que la fonction filesearch n'existe plus.
J'ai bien essayé de trouver une solution avec ClasseFileSearch qu'on utilise sous excel 2007 mais je n'arrive pas à la faire fonctionner correctement sous powerpoint (sans doute que cette fonction supplémentaire n'est pas disponible sous powerpoint 2007).

Cette macro a pour but d'importer toutes les images au format jpeg dans la présentation powerpoint contenant la macro.
Elle va chercher les images dans le dossier en cours grâce à une fonction que j'appelle "chemin_courant".


Je vous livre le code ci-dessous.

Quelqu'un peut-il m'aider ?

Cordialement
Yann
Code :
 
***************************************************
Sub import ()
 
'Cette macro a pour but d'importer toutes les images au format jpeg dans la présentation powerpoint contenant la macro.
Elle va chercher les images dans le dossier en cours grâce à une fonction que j'appelle "chemin_courant"
 
test = ActivePresentation.Slides.Count
 
If test = 0 Then ActiveWindow.View.GotoSlide Index:=ActivePresentation.Slides.Add(SlideIndex + 1, Layout:=ppLayoutBlank).SlideIndex
 
 
 
Dim fichier_courant As Presentation
Dim sheetact As Slides
Set fichier_courant = ActivePresentation
Set sheetact = ActivePresentation.Slides
 
 
 
With Application.FileSearch
        .NewSearch
        .LookIn = (chemin_courant)
        .SearchSubFolders = False
        .FileName = "*.jpg"
        .MatchTextExactly = True
        If .Execute() > 0 Then
 
   
 
For i = 1 To .FoundFiles.Count
 
 
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:=.FoundFiles(i), LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=72, Top:=54, Width:=576, Height:=432).Select
 
ActiveWindow.View.GotoSlide Index:=ActivePresentation.Slides.Add(SlideIndex + 1, Layout:=ppLayoutBlank).SlideIndex
 
 
Next
 
 
End If
End With
 
 
End Sub
 
****************************************************
Function chemin_courant() As String
 
'fonction pour chercher le dossier en cours
 
Dim fichier As Presentation
Set fichier = ActivePresentation
ChDir (fichier.Path)
chemin_courant = fichier.Path
 
 
End Function

Dernière modification par Philippe JOCHMANS ; 01/06/2008 à 04h42 Motif: Ajout des balises codes (Sélection du code + #), ce n'est pas facultatif
yann__92 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/06/2008, 04h46   #2 (permalink)
Responsable PowerPoint
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 40
Messages: 9 821
Envoyer un message via MSN à Philippe JOCHMANS
Par défaut

Bonjour

Citation:
Envoyé par yann__92 Voir le message
mais je n'arrive pas à la faire fonctionner correctement sous powerpoint (sans doute que cette fonction supplémentaire n'est pas disponible sous powerpoint 2007).
Un peu plus de détails, s'il te plait.

Le code ne fonctionne pas et pourquoi ?
Bug ?
Message d'erreur ?
Sur quelle ligne ?

Starec
__________________
En cas de questions techniques par MP ou message visiteur
Office : :Les Cours, Les FAQs
VB : Les Cours, Les FAQs
Mes articles : ici
Me connaitre
Philippe JOCHMANS est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 01/06/2008, 16h37   #3 (permalink)
Invité de passage
 
Date d'inscription: juin 2008
Localisation: Paris
Âge: 35
Messages: 6
Par défaut

Bonjour,

En fait comme je le disais dans mon post original , une boite de dialogue avec un message d'erreur apparaît quand j'execute ma macro avec la version 2007 de powerpoint.

La boite de dialogue avec le message d'erreur s'affiche une fois l'instruction suivante atteinte :

With Application.FileSearch

Ci-dessous une copie d'écran :




Voilà j'espère que c'est plus clair , et que quelqu'un peut m'aider.
Selon moi , c'est la fonction fonction filesearch qui n'existe plus sous powerpoint 2007.


J'ai bien essayé de trouver une solution avec ClasseFileSearch qu'on utilise sous excel 2007 mais je n'arrive pas à la faire fonctionner correctement sous powerpoint (sans doute que cette fonction supplémentaire n'est pas disponible sous powerpoint 2007) ??

Merci pour votre aide
yann__92 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/06/2008, 08h01   #4 (permalink)
Invité de passage
 
Date d'inscription: juin 2008
Localisation: Paris
Âge: 35
Messages: 6
Par défaut

heu personne ne peut m'aider avec ce complément d'information.
Starec si tu as besoin de plus de détail , dis le moi.

merci
yann__92 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/06/2008, 19h59   #5 (permalink)
Responsable Word
 
Avatar de Heureux-oli
 
Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 014
Par défaut

FileShearch ne fonctionne plus sur Office 2007.
Si tu vas dans l'explorateur d'objets, tu va le trouver dans les membres cachés, mais c'est tout.

Le problème a été remonté chez MS, mais calme plat, pas de réponse.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Ne posez pas de question par MP, c'est inutile.
Les rubriques Office recrutent.
Ma page d'accueil
Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint
Si vous pensez que certains sujets manquent dans la FAQ, aidez nous !
Des images
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 08/06/2008, 23h40   #6 (permalink)
Invité de passage
 
Date d'inscription: juin 2008
Localisation: Paris
Âge: 35
Messages: 6
Par défaut

merci pour ta réponse Heureux-oli.

Cependant, comme je le disais dans mon post , j'avais déjà lu sur le forum que la fonction "FileShearch" n'était plus disponible sous office 2007.

Ceci étant , connait tu quelqu'un sur le forum qui pourrait m'aider pour convertir mon petit programme afin de le faire fonctionner sous powerpoint 2007 ?

Est ce qu'une solution avec ClasseFileSearch qu'on utilise sous excel 2007 est possible ?


NB: Le fait de trouver cette fonction dans les membres cachés ne permet pas de l'utiliser à nouveau je suppose ?

merci pour ton aide.
yann__92 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/06/2008, 09h49   #7 (permalink)
Responsable Word
 
Avatar de Heureux-oli
 
Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 014
Par défaut

Si j'ai bien compris, tu veux pourvoir choisir dans le répertoire où se trouve la présentation une ou plusisuers images.

Le remplacement de la fonction FileSearch ne posera pas de problème.


Code :
Dim stPath As String
 
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
stPath = ActivePresentation.Path
 
 
With dlg
    .InitialFileName = stPath
    .Filters.Add "Images", "*.jpg; *.png", 1
    .InitialView = msoFileDialogViewThumbnail
    .AllowMultiSelect = False
    .Show
End With
 
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:=dlg.SelectedItems(1), LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=72, Top:=54, Width:=576, Height:=432).Select
OIErr:
Debug.Print Err.Number
 
 
End Sub
A toi de changer pour avoir ce que tu veux.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Ne posez pas de question par MP, c'est inutile.
Les rubriques Office recrutent.
Ma page d'accueil
Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint
Si vous pensez que certains sujets manquent dans la FAQ, aidez nous !
Des images
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 09/06/2008, 23h40   #8 (permalink)
Invité de passage
 
Date d'inscription: juin 2008
Localisation: Paris
Âge: 35
Messages: 6
Par défaut

Je te remercie pour cette réponse Heureux-oli

Néanmoins , je ne cherche pas à importer mes images une par une via une boite de dialogue.

Mon besoin est le suivant , je souhaite :

1) Compter toutes les images au format jpeg présentes dans le dossier où se trouve ma présentation powerpoint (avec mon code).

2) Créer une boucle pour importer les unes après les autres l'ensemble des images trouvées dans ma présentation powerpoint.

Pour voir le résultat attendu , il suffit de faire tourner mon code dans powerpoint version 2000 ou 2003 (avec le code présent dans mon post original).

Encore merci pour ton aide , et si tu arrives à adapter mon code initial pour le faire tourner sous powerpoint 2007 sans passer par une boite de dialogue ce serait super

Amicalement
Yann
yann__92 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/06/2008, 10h01   #9 (permalink)
Responsable Word
 
Avatar de Heureux-oli
 
Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 014
Par défaut

Essaie ceci :

Code :
Sub AjouterImages()
Dim oFSO As Object
Dim oFold As Object
Dim oFl As Object
Dim myS As Slide
 
Dim stPath As String
 
stPath = ActivePresentation.Path
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFold = oFSO.GetFolder(stPath)
For Each oFl In oFold.Files
    If UCase(Right(oFl.Name, 3)) = "JPG" Then
        
        ActivePresentation.Slides.Add ActivePresentation.Slides.Count + 1, ppLayoutBlank
        Set myS = ActivePresentation.Slides(ActivePresentation.Slides.Count)
        
        myS.Shapes.AddPicture FileName:=oFl.Name, _
            LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
            Left:=72, Top:=54, Width:=576, Height:=432
        
    End If
 
Next oFl
 
Set oFold = Nothing
Set oFSO = Nothing
Set myS = Nothing
 
End Sub
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Ne posez pas de question par MP, c'est inutile.
Les rubriques Office recrutent.
Ma page d'accueil
Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint
Si vous pensez que certains sujets manquent dans la FAQ, aidez nous !
Des images
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 10/06/2008, 23h26   #10 (permalink)
Invité de passage
 
Date d'inscription: juin 2008
Localisation: Paris
Âge: 35
Messages: 6
Par défaut

Merci beaucoup Heureux-oli

C'est exactement ce que je voulais reproduire en mieux et sous powerpoint 2007

Pour la petite histoire , j'avais modifié ton code précédent afin de pouvoir sélectionner plusieurs photos depuis la boite de dialogue en cliquant sur la touche contrôle puis sur la (ou les) photos à importer.

Si cela peut être utile à quelqu'un , je poste mon code (qui n'est pas optimisé mais qui fonctionne sous powerpoint 2007).

Le principal interêt est de pouvoir avoir le choix de la selection des photos à importer via la boite de dialogue:

Code :
 
Sub import2007()
 
Dim stPath As String
Dim vrtSelectedItem As Variant
 
 
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
stPath = ActivePresentation.Path
 
 
 
With dlg
    .InitialFileName = stPath
    .Filters.Add "Images", "*.jpg", 1
    .AllowMultiSelect = True
    If .Show = -1 Then
        
 
    lLastSlide = ActivePresentation.Slides.Count
    If lLastSlide = 0 Then ActivePresentation.Slides.Add lLastSlide + 1, ppLayoutBlank
            
    
    For i = 1 To .SelectedItems.Count
 
    ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:=dlg.SelectedItems(i), LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=72, Top:=54, Width:=576, Height:=432).Select
    ActiveWindow.View.GotoSlide Index:=ActivePresentation.Slides.Add(SlideIndex + 1, Layout:=ppLayoutBlank).SlideIndex
 
  
    Next
    
    Else
    End If
 
End With
 
lLastSlide = ActivePresentation.Slides.Count
If lLastSlide > 0 Then GoTo ian
 
 
Set dlg = Nothing
 
 
OIErr:
Debug.Print Err.Number
 
Exit Sub
ian:
ActivePresentation.Slides(1).Select
ActivePresentation.Slides(1).Delete
 
End Sub
 
yann__92 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/06/2008, 07h50   #11 (permalink)
Responsable Word
 
Avatar de Heureux-oli
 
Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 014
Par défaut

Un petit
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Ne posez pas de question par MP, c'est inutile.
Les rubriques Office recrutent.
Ma page d'accueil
Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint
Si vous pensez que certains sujets manquent dans la FAQ, aidez nous !
Des images
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Powerpoint > VBA PowerPoint

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide