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

Macros et VBA Excel Discussion :

Collecte de données dans Excel depuis Powerpoint


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut Collecte de données dans Excel depuis Powerpoint
    Bonjour,

    Tout d'abord, c'est la première fois que je poste dans ce forum qui m'a souvent aidé ! Merci de votre aide.
    Je cherche à créer un fichier qui irait extraire des données de tous les fichiers powerpoint contenus dans un dossier afin de les enregistrer dans une micro base de données MS Excel. Ces fichiers auront tous une forme plus ou moins equivalente. Mon but est de faire un template ppt qui sera complété, puis me sera renvoyé.
    Pour ceci, j'ai envisagé le plan suivant :
    - Prerequis / Déclarations / Librairies...
    - Ouvre Powerpoint via la BdD Excel
    - Possibilité 1 (la plus pratique selon moi) : J'ai utilisé une macro pour nommer identifier le shape et le renommer.
    - Identifier le tableau de la slide 2.
    - Trouver le texte jusqu'au changement de ligne derrière un bloc de texte avec un nom défini (ex: après "Numéro de série" on associe le texte, on le copie, on le colle dans la cellule excel associée puis changement de ligne, on passe à l'attribut suivant...)
    - Possibilité 2 (si cette identification est complexe) : Associer des shapes zone de texte à compléter avec un numéro précis au tableau pour remplir les réponses. Puis compléter de la même manière les résultats.

    - Passer à la ligne sur le fichier Excel pour chaque nouveau powerpoint. (Attention : réguler les copies multiples pour éviter qu'a chaque clic sur la macro les mêmes informations soient collées.


    Mon problème est que c'est bien la première fois que je veux utiliser le vba couplé à Powerpoint. C'est pour cela que j'en appelle à votre aide pour m'aider à trouver une solution svp!

    Merci d'avance,
    Alexandre

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est vraiment une idée très étrange d'utiliser PowerPoint comme logiciel de recueil de données.
    Personnellement, ça me semble être une très mauvaise idées.
    Même un simple texte ouvert au Notepad aurait été plus pratique.
    pour faire ça, tu vas énormément galérer pour un résultat aléatoire.

    Le seul conseil sensé que je peux te donner est de revoir ta stratégie.
    Y a-t-il une réelle bonne raison concrète de passer par PowerPoint pour faire ça ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Bonjour,

    Pour t'expliquer en gros ce sont des calculations de coûts dont les données arrivent au client avec des graphiques et de multiples données qui ont toujours été faites sur powerpoint.
    Du coup, oui je dois récupérer les données de ces templates dont les slides sont toujours sur un format similaire.
    Cela me semble compliqué de les faire passer sur Word et faire l'inverse d'un publipostage

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    EDIT: J'avais oublié Fichier après Open x)
    Sinon pour le reste, as-tu des idées pour gérer le fonctionnement du tableau. Ou si ca te semble trop dur, tu as une idée pour le faire sur Word? (en prenant des attributs random dans un tableau avec la réponse sur la colonne suivante
    Tu saurais m'aider pour ouvrir tous les fichiers du répertoire stp?
    La fonction open marche avec un nom défini et moi j'utilise * pour m'abstreindre du nom du fichier.
    Je dois passer par une requête d'un type complètement différent?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim principal As ThisWorkbook
    Dim repertoire As String, fichier As String
    Set principal = ThisWorkbook
        repertoire = "\\Bla\bla\"
    ChDir repertoire
        fichier = Dir("*.pptx")
    Do While fichier <> ""
            If fichier <> principal.Name Then
    ppt.Presentations.Open()
                On Error Resume Next
            End If
    Loop

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Alexou17 Voir le message
    Tu saurais m'aider pour ouvrir tous les fichiers du répertoire stp?
    Il faut faire une boucle sur la fonction Dir().
    https://msdn.microsoft.com/en-us/VBA...s/dir-function

    Inspire-toi de ceci : https://excel.developpez.com/faq/?pa...BoucleFichiers

    Pour ce qui est du reste, n'ayant jamais traiter des documents Powerpoint en VBA et n'ayant aucun idée de la nature et de la structure de tes informations, je ne peux pas t'aider.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Le programme tourne en boucle et ouvre les PPT en boucle. Ca ne repasse jamais sur un nom de fichier = "". Une idée?
    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
     
    'Ouverture des fichiers
    Dim repertoire As String, fichier As String
    Dim PPApp As PowerPoint.Application
    Dim PPPres As PowerPoint.Presentation
    'Dim PPSlide As PowerPoint.Slide
     
    repertoire = "\\blabla\"
    ChDir repertoire
    fichier = Dir(repertoire & "*.*")
     
        Do While Len(fichier) > 0
            Debug.Print repertoire & fichier
            Set PPApp = CreateObject("Powerpoint.Application")
            PPApp.Visible = True
            Set PPPres = PPApp.Presentations.Open(fichier)
        Loop
    End If
    Sinon, par rapport à ce que je cherche :
    Exemple de fichier.docx

    En gros, récupérer des données dans un tableau (A la suite d'un mot clé) que ce soit sur PPT ou Word

    Encore merci Menhir !

  7. #7
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour

    Je partage l'avis de Menhir.

    On peut toujours monter une usine à gaz mais déjà il serait bien de connaître ta version Office.
    PowerPoint a bien évolué entre 2007 et 2010 et les objets gérés ont changé, ce qui n'est pas sans impact sur leur manipulation par VBA
    En plus si tu reçois des fichiers d'origine variée, le format interne risque donc d'être différent.

    La déclaration de PowerPoint ne doit pas être faite dans le boucle d'ouverture de fichier... ou on dois tester si pas déjà ouvert...

    Tu postes un modèle Word mais cela n'avance guère sur le PowerPoint à gérer...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Bonjour,
    J'utilsie Powerpoint 2010.
    L'ensemble des fichiers est de forme similaire, les informations et images changent néanmoins. J'assimilerai donc le "fichier" au template, si l'on peut l'appeler comme ca.

    Le fichier powerpoint peut être assimilé a 5 slides.
    La slide 2 est celle qui contient mes informations. Le nom du responsable et la date sont situées dans deux formes "zone de texte"
    Le reste des attributs sont situés dans la deuxième colonne d'un simple tableau. La première colonne étant constituée des noms de ces attributs (pour moi, ces noms constituent la base pour rechercher l'information).

    Neanmoins, je ne peux vous joindre de fichier. Considérez donc que ma question est comment extraire ces infos : dans une zone de texte (je peux me servir du nom de la forme) ou dans un tableau (je peux me servir du nom du tableau, mais ensuite?)

    Ci-dessous le code pour identifier et renommer les formes sur PPT
    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
    Sub RenommerObjet()
    strNvNom = InputBox("Taper l'alias")
    With ActiveWindow.Selection.ShapeRange
    .Name = strNvNom
    End With
    End Sub
     
     
    Option Explicit
     
    Sub ListerShapes()
    Dim Diapo As Slide
    Dim Message As String
    Dim S As Shape
    Message = "Liste des Shapes" & vbCr
    With ActivePresentation
    For Each Diapo In .Slides
    Message = Message & "Diapo numéro : " & Diapo.SlideNumber & vbCr
    For Each S In Diapo.Shapes
    Message = Message & "Shape : " & S.Name & vbCr
    Next
    Next Diapo
    End With
    MsgBox Message
    End Sub

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Alexou17 Voir le message
    Le programme tourne en boucle et ouvre les PPT en boucle. Ca ne repasse jamais sur un nom de fichier = "". Une idée?
    C'est normal puisqu'il n'y a pas de Dir() dans ta boucle. Elle ne cherche donc pas d'autre fichier que le premier.
    Relis les deux liens de mon message précédent.

    En plus, je ne comprends pas pourquoi tu as mis *.* dans ton Dir() alors que tu ne veux que les fichiers Powerpoint.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    J'avais résolu les problemes entre temps.
    J'ai un probleme de controle ActiveX sur Variable2 = ActivePresentation.Slides(SlideNum).Shapes("NomResponsableEtDate").TextFrame.TextRange.Text
    J'en suis à l'étape de l'extraction de l'info dans ppt.
    Je pense creer des variables pour sauver ces infos et les coller ensuite dans excel.
    La forme zone de texte s'appelle "NomResponsableEtDate" après l'avoir renommé avec le programme précédemment évoqué.

    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
    60
       Dim oPPTApp As PowerPoint.Application
     
        Dim oPPTShape2 As PowerPoint.Shape
        'declarations sur le fichier excel base de données
        Dim principal As ThisWorkbook
        Set principal = ThisWorkbook
        'Ouverture des fichiers
        Dim repertoire As String, fichier As String
        Dim PPApp As PowerPoint.Application
        Dim PPPres As PowerPoint.Presentation
        Set PPApp = CreateObject("Powerpoint.Application")
        PPApp.Visible = True
        'Dim PPSlide As PowerPoint.Slide
        Dim i As Integer
        Dim SlideNum As String
    '------------------------------------------------------
     
     
    'Identification des fichiers dans le dossier
    'Call IdentificationFichiers
     
    '-----------------------------------------------------------------------------------------------------------------------
    'Travail sur le repertoire contenant les fichiers Powerpoint
    repertoire = "\\bla\"
    ChDir repertoire
    fichier = Dir(repertoire & "*.pptx")
    i = 1
     
     
    Do While Len(fichier) > 0
            '***************************
            Set PPPres = PPApp.Presentations.Open(fichier)
            'Actions sur le fichier ppt
            Dim Variable1, Variable2 As String
            Variable1 = fichier 'Variable 1: Nom fichier
     
            SlideNum = 2
            'ActivePresentation.Slides(1).Select 'On va sur la slide 2 qui contient les infos a extraire
            'Dim objsld2 As Slide
            'Set objsld2 = PPPres.Slides(2) 'On va sur la slide 2 qui contient les infos a extraire
            Variable2 = ActivePresentation.Slides(SlideNum).Shapes("NomResponsableEtDate").TextFrame.TextRange.Text
     
            'ordre.Offset(j, 0).Value = texte_C1
            'Pres.Close 'fermeture du ppt
            '*****************************
     
            '*****************************
            'Collage des actions du fichier ppt sur le fichier Excel
            ThisWorkbook.Activate
            Sheets("Database").Range("A" & i) = Variable1
            Sheets("Database").Range("B" & i) = Variable2
            '*****************************
     
        fichier = Dir()
        i = i + 1
    Loop
    '-----------------------------------------------------------------------------------------------------------------------
     
     
    End Sub

  11. #11
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Alexou17 Voir le message
    J'avais résolu les problemes entre temps.
    Merci d'avoir prévenu...

    J'en suis à l'étape de l'extraction de l'info dans ppt.
    Ceci concerne la manipulation d'objet PowerPoint et non Excel.
    Tu devrais poser la question dans la rubrique correspondant à ce logiciel.
    https://www.developpez.net/forums/f6...ba-powerpoint/

  12. #12
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par Alexou17 Voir le message
    Bonjour,

    Pour t'expliquer en gros ce sont des calculations de coûts dont les données arrivent au client avec des graphiques et de multiples données qui ont toujours été faites sur powerpoint.
    Du coup, oui je dois récupérer les données de ces templates dont les slides sont toujours sur un format similaire.
    Cela me semble compliqué de les faire passer sur Word et faire l'inverse d'un publipostage
    Et comment les données sont-elles arrivées dans PowerPoint ?

    Si les données ont été entrées à la main, cela veut probablement dire des heures de débogage. Parce que le modèle-objet de PowerPoint est complexe et que PowerPoint n'a plus d'enregistreur de macros. En gros, un tableau PowerPoint, un activeX, une zone de texte ou une forme sont chacun une shape qui est probablement contenue dans une autre shape qui elle aussi peut-être dans une autre shape etc...

    Me semble que je passerais plutôt par les programmes qui ont produit les données pour PowerPoint que par PowerPoint. Parce que de fouiller dans l'ensemble des shapes pour trouver la bonne, cela va être l'enfer...

  13. #13
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2018
    Messages : 7
    Par défaut
    Bon pour votre info, je vais imiter les formulaires powerpoint sur excel en partant du principe que les slides sont des sheets.
    Je creerai ensuite une relation de cellule database vers cellule template, ce qui va grandement faiciliter le problème.

    Merci de votre aide en tout cas.

Discussions similaires

  1. [PPT-2013] Exporter des données sur Excel depuis powerpoint
    Par auditrix dans le forum Powerpoint
    Réponses: 6
    Dernier message: 01/12/2015, 11h44
  2. [AC-2007] Import de données dans Access depuis Excel
    Par Blado_sap dans le forum Access
    Réponses: 1
    Dernier message: 13/01/2015, 20h03
  3. [XL-2010] Inserer données dans MsSQL depuis Excel
    Par ganjakass dans le forum Excel
    Réponses: 1
    Dernier message: 06/02/2014, 09h01
  4. [WD-2007] Recherche de données dans Excel depuis Word
    Par Escandil dans le forum VBA Word
    Réponses: 7
    Dernier message: 17/10/2012, 12h00
  5. Réponses: 4
    Dernier message: 20/05/2008, 10h28

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