IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA PowerPoint Discussion :

Fonction File Search avec PowerPoint 2007


Sujet :

VBA PowerPoint

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    ***************************************************
    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

  2. #2
    Invité
    Invité(e)
    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

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    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

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    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.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    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.

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    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

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    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

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    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

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Un petit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Ouverture de fichier avec le complement File Search pour Excel 2007
    Par Tydher dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/03/2012, 10h00
  2. [PPT-2007] création de masques avec Powerpoint 2007
    Par maikess dans le forum Powerpoint
    Réponses: 1
    Dernier message: 05/01/2012, 23h46
  3. [Débutant] pptwrite avec PowerPoint 2007
    Par kryztof dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/08/2009, 03h18
  4. Ouvrir documents PowerPoint 2007 avec PowerPoint 2003
    Par melowargamer dans le forum Powerpoint
    Réponses: 3
    Dernier message: 18/01/2008, 20h21
  5. [uPLOAD] move_uploaded_file combiné avec la fonction file
    Par chico_du_33 dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2006, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo