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 :

Comment récupérer une valeur dans Excel


Sujet :

VBA PowerPoint

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Points : 49
    Points
    49
    Par défaut Comment récupérer une valeur dans Excel
    Bonsoir,
    J'ai besoin de récupérer des valeurs dans un fichier Excel pour l'utiliser dans un Diaporama.
    Exemple
    x1, x2, x3 variables que j'ai intension d'utiliser dans un code dans mon diaporama
    Ppp1.Slides.InsertFromFile "base.ppt", x1, x2, x3

    Fichier Excel valeur.xls
    x1= valeur en A1
    x2= valeur en A2
    x3= valeur en A3

    Je ne vois pas comment faire pour insérer cette requête dans mon code.
    Merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    J'ai placé ce code, mais cela plante sur "Dim Classeur As Workbook" erreur compilation type non défi
    N'étant pas un expert je tâtonne.
    Est que un d'entre vous peut trouver l'erreur.
    Merci et bonne journé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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub TESTrecupvaleurExcel()
    Dim Ppa As PowerPoint.Application
    Dim Ppp1 As PowerPoint.Presentation
     
    Dim AppExcel As Variant
    Dim Classeur As Workbook
    Dim Feuille As Worksheet
    '
    'X1, X2 variables à stoker qui viennent d'excel
    Dim X1 As Integer
    Dim X2 As Integer
    '
    'Nom du classeur qui contient les valeurs à récupérer
    Classeur = "ESSAI1.xls"
     
    Set AppExcel = CreateObject("Excel.Application")
    AppExcel.Visible = True
    With AppExcel
    Set Classeur = .ActiveWorkbook
    ' choisir la feuille 1
    .Worksheets(1).Activate
    X1 = .ActiveSheet.Cells(1, 1).Value
    X2 = .ActiveSheet.Cells(1, 2).Value
     
      '  Windows("ESSAI1.xls").Activate
      '  Range("A1").Select
    End With
     
     
     
    Set Ppa = New PowerPoint.Application
    Ppa.Visible = True
    'Ouverture présentation
    Set Ppp1 = Ppa.Presentations.Open(FileName:="base.ppt")
     
    'expression.InsertFromFile(CheminPresentationSource, Index, SlideDebut, SlideFin)
    '---------------------------------------------------------------
    'X1 SlideDebut
    'X2 SlideFin
     
    Ppp1.Slides.InsertFromFile "essai2.ppt", 2, X1, X2
    End Sub

  3. #3
    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
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Ce serait préférable que ton code soit indenté et formaté. Sauf horreur de ma part, il te suffit de sélectionner ton code et de cliquer sur le dièse dans la barre d'outils.

    Ceci dit la grande question:

    Ton code est-il dans PowerPoint ou dans Excel ?

    Si tu codes dans VBA pour PowerPoint, tu n'as pas besoin de créer des applications PowerPoint, mais tu dois créer une application Excel as Excel.application et non comme Variant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dim quelquechose as excel.application
    'Si la référence à Excel est cochée
    set quelquechose = new excel.application
    'Si la référence à Excel n'est pas cochée
    Set AppExcel = CreateObject("Excel.Application")
    Dim classeur as Excel.workbook
    'Si le classeur est fermé
    set classeur = quelquechose.workbooks.open(unnom.xls)
    'Si le classseur est ouvert.
    set classeur = quelquechose.workbooks(unnom.xls)
    dim x as integer
    dim y as integer
    x = classeur.sheets("Feuil1").range("A1").value
    y = classeur.sheets("Feuil1").range("A2").value
    Si tu codes dans Excel, c'est similaire, sauf que tu n'ouvres pas d'objet Excel.application, mais un objet PowerPoint.Application. Un seul Objet PowerPoint.Application est nécessaire pour opérer sur deux objets présentation. Mais là, la batterie du portable est vide.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Points : 49
    Points
    49
    Par défaut
    Merci pour attention que vous portez à mon projet,
    Comme vous vous en êtes aperçu, je ne suis pas un expert!
    Voilà mon premier code que je place dans le powerponit "modele.ppt" qui fonctionne (seul ce fichier est ouvert):

    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
    Sub FABRICATION_NOUVEAU_DIAPORAMA()
    'Code placé dans powerpoint "modele.ppt"
    'Elaboration d'un nouveau diaporama
    'Choisir dans un fichier Excel "description_diapo.xls"
    '20 diapos qui seront choisies dans "base_diapos.ppt"
    'et intégrées dans "modele.ppt"
    '
    Dim Ppa As PowerPoint.Application
    Dim Ppp1 As PowerPoint.Presentation
    Dim silde1, silde2, silde3, silde4, silde5, silde6, silde7, silde8, silde9, silde10, silde11, silde12, silde13, silde14, silde15, silde16, silde17, silde18, silde19, silde20  As Integer
    'variables qui correspondent aux numèros des slides à récupérer dans "base_diapos.ppt"
    Set Ppa = New PowerPoint.Application
    Ppa.Visible = True
    silde1 = 2
    silde2 = 4
    'silde3 =
    'silde4 =
    '...
    Set Ppp1 = Ppa.Presentations.Open(FileName:="modele.ppt")
     
    Ppp1.Slides.InsertFromFile "base_diapos.ppt", 2, silde1, silde1
    Ppp1.Slides.InsertFromFile "base_diapos.ppt", 3, silde2, silde2
    'Ppp1.Slides.InsertFromFile "base_diapos.ppt", 4, silde3, silde3
    'Ppp1.Slides.InsertFromFile "base_diapos.ppt", 5, silde4, silde4
    '...
     
    End Sub

    J'ai essayé d’intégrer le votre mais cela plante sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Excel1 As Excel.Application
    .
    Voilà le code que j'ai placé:

    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
    Sub FABRICATION_NOUVEAU_DIAPORAMA2()
    'Code placé dans powerpoint "modele.ppt"
    'Elaboration d'un nouveau diaporama
    'Choisir dans un fichier Excel "description_diapo.xls"
    '20 diapos qui seront choisies dans "base_diapos.ppt"
    'et intégrées dans "modele.ppt"
    '
    '
    Dim Ppa As PowerPoint.Application
    Dim Ppp1 As PowerPoint.Presentation
    Dim silde1, silde2, silde3, silde4, silde5, silde6, silde7, silde8, silde9, silde10, silde11, silde12, silde13, silde14, silde15, silde16, silde17, silde18, silde19, silde20  As Integer
    'variables qui correspondent aux numèros des slides à récupérer dans "base_diapos.ppt"
    '
    Dim Excel1 As Excel.Application
    Set Excel1 = New Excel.Application
    Dim classeur As Excel.Workbook
    'Si le classeur est fermé
    Set classeur = Excel1.workbooks.Open(description_diapo.xls)
    silde1 = classeur.sheets("Feuil1").Range("A1").Value
    silde2 = classeur.sheets("Feuil1").Range("A2").Value
    'silde3 = classeur.sheets("Feuil1").Range("A3").Value
    'silde4 = classeur.sheets("Feuil1").Range("A4").Value
    '...
    '
    Set Ppa = New PowerPoint.Application
    Ppa.Visible = True
    'silde1 = 2
    'silde2 = 4
    'silde3 =
    'silde4 =
    '...
     
    Set Ppp1 = Ppa.Presentations.Open(FileName:="modele.ppt")
     
    Ppp1.Slides.InsertFromFile "base_diapos.ppt", 2, silde1, silde1
    Ppp1.Slides.InsertFromFile "base_diapos.ppt", 2, silde2, silde2
    'Ppp1.Slides.InsertFromFile "base_diapos.ppt", 4, silde3, silde3
    'Ppp1.Slides.InsertFromFile "base_diapos.ppt", 5, silde4, silde4
    '...
     
    End Sub
    Merci pour votre aide.
    Et je suis preneur de tous conseils.
    Bonne journée.
    Pascal
    La Bretagne rit et pleure en ce moment, mais température clémente.

  5. #5
    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
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Relis ce que je t'ai dis. Quand tu programmes des macros dans l'éditeur de macros de PowerPoint, tu n'as pas besoin de créer des objets PowerPoint application.

    Pour ton Horreur avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Excel1 As Excel.Application
    Tu Ouvres la boîte de dialogue Outils - références et tu ajoutes la référence Excel Objects Library.

    En prime, tu vas profiter de l'intellisence.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Points : 49
    Points
    49
    Par défaut
    Bonsoir clementmarcotte,
    Je dois être vraiment "bouché" j'essaie de comprendre mais il y a des opérations que je ne comprends pas. "tu n'as pas besoin de créer des objets PowerPoint application."

    Peux tu corriger mes erreurs en direct?

    J'ai réussi à ajouter la référence Excel Objects Library
    Pour ça c'est OK.
    Maintenant il bloque sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set classeur = Excel1.workbooks.Open(description_diapo.xls)
    Encore un grand merci.

  7. #7
    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
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tu as oublié tes guillemets autour du nom de ton classeur.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    J'avais essayé avec des guillemets mais nenni.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set classeur = Excel1.workbooks.Open("description_diapo.xls")
    Autre idée!
    Merci
    En France c'est l'été "indien" exceptionnel mais que c'est bien!

  9. #9
    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
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    J'ai l'impression que tu ne veux pas t'investir dans ce projet, que tu ne veux pas apprendre, que tu t'imagines qu'à force de te répondre, je vais te faire ton application à ta place et que je prêche dans le désert. Dans une de mes réponses je t'ai expliqué comment utiliser l'aide de VBA Excel dans PowerPoint, ou bien l'inverse, mais c'est exactement le même principe. Donc, c'est la dernière fois que je cherche dans l'aide à ta place. ce qui veut dire que tu as sans doute intérêt à retrouver le moyen que je t'avais donné de rechercher dans l'aide. Tu as également sans doute remarqué que tes questions ne suscitent pas grand intérêt. Quant à moi, peut-être que si je me défâche d'être le dindon de la farce, je vais répondre à l'occasion.

    Donc, directement de l'aide de VBA. Il y a un même un exemple à la fin. En bref, enlève les parenthèses et ne tiens pas compte de la deuxième ligne.



    Référence du développeur Excel 2010 > Référence du modèle objet Excel > Objet Workbooks > Méthodes
    Référence du développeur Excel
    Workbooks.Open, méthode
    Afficher toutAfficher tout
    Masquer toutMasquer tout
    Cette méthode ouvre un classeur.
    Syntaxe

    expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

    expression Variable qui représente un objet Workbooks.

    Paramètres

    Nom Obligatoire/Facultatif Type de données Description
    FileName Facultatif Variant String. Nom de fichier du classeur à ouvrir.
    UpdateLinks Facultatif Variant Spécifie la façon dont les références externes (liens) du fichier sont mises à jour, telles que la référence à une plage dans la classeur Budget.xls dans la formule =SUM([Budget.xls]Annual!C10:C25). Si cet argument est omis, l’utilisateur est invité à indiquer comment les liens doivent être mis à jour. Pour plus d’informations sur les valeurs utilisées par ce paramètre, voir la section Remarques. Si Microsoft Excel ouvre un fichier au format WKS, WK1 ou WK3 et si l’argument UpdateLinks a la valeur 0, aucun graphique n’est créé, sinon Microsoft Excel crée des graphiques à partir des diagrammes associés au fichier.
    ReadOnly Facultatif Variant True pour ouvrir le classeur en lecture seule.
    Format Facultatif Variant Si Microsoft Excel ouvre un fichier texte, cet argument spécifie le caractère de séparation. Si vous ne spécifiez pas cet argument, c’est le séparateur actif qui est utilisé. Pour plus d’informations sur les valeurs utilisées par ce paramètre, voir la section Notes.
    Password Facultatif Variant Chaîne qui contient le mot de passe requis pour ouvrir un classeur protégé. Si cet argument est omis alors que le classeur requiert un mot de passe, l’utilisateur est invité à fournir ce mot de passe.
    WriteResPassword Facultatif Variant Chaîne qui contient le mot de passe requis pour écrire dans un classeur protégé en écriture. Si cet argument est omis alors que le classeur requiert un mot de passe, l’utilisateur est invité à fournir ce mot de passe.
    IgnoreReadOnlyRecommended Facultatif Variant True pour que Microsoft Excel n’affiche pas le message de recommandation d’ouverture en lecture seule (si le classeur a été enregistré avec l’option Lecture seule recommandée).
    Origin Facultatif Variant S’il s’agit d’un fichier texte, cet argument indique sa provenance (de sorte que les pages de codes et le Retour chariot/Saut de ligne (CR/LF) puissent être mappés correctement). Il peut s’agir de l’une des constantes XlPlatform suivantes : xlMacintosh, xlWindows ou xlMSDOS. Si cet argument est omis, c’est le système d’exploitation actif qui est utilisé.
    Delimiter Facultatif Variant S’il s’agit d’un fichier texte et que l’argument Format a la valeur 6, cet argument est une chaîne qui spécifie le caractère à utiliser comme séparateur. Par exemple, utilisez Chr(9) pour les tabulations, « , » pour les virgules, « ; » pour les point-virgules ou le caractère de votre choix. Seul le premier caractère de la chaîne est utilisé.
    Editable Facultatif Variant S’il s’agit d’un complément Microsoft Excel 4.0, cet argument a la valeur True pour ouvrir le complément dans une fenêtre visible. Si cet argument a la valeur False ou s’il est omis, le complément est ouvert mais masqué et il ne peut pas être réaffiché. Cette option ne s’applique pas aux compléments créés dans Microsoft Excel 5.0 ou version ultérieure. Si le fichier est un modèle Excel, la valeur True ouvre le modèle spécifié pour le modifier. Cet argument a la valeur False pour ouvrir un nouveau classeur d’après le modèle spécifié. La valeur par défaut est False.
    Notify Facultatif Variant Si le fichier ne peut pas être ouvert en lecture-écriture, cet argument a la valeur True pour ajouter le fichier à la liste de notification des fichiers. Microsoft Excel ouvre le fichier en lecture seule, interroge la liste de notification des fichiers, puis avertit l’utilisateur quand le fichier devient disponible. Si cet argument a la valeur False ou s’il est omis, aucune notification n’est demandée et toute tentative d’ouverture d’un fichier non disponible est impossible.
    Converter Facultatif Variant Index du premier convertisseur de fichier à essayer lors de l’ouverture du fichier. Le convertisseur de fichier spécifié est essayé en premier ; s’il ne reconnaît pas le fichier, tous les autres convertisseurs sont essayés. L’index du convertisseur est constitué du nombre de lignes des convertisseurs renvoyé par la propriété FileConverters.
    AddToMru Facultatif Variant True pour ajouter ce classeur à la liste des derniers fichiers utilisés. La valeur par défaut est False.
    Local Facultatif Variant True enregistre les fichiers en fonction de la langue de Microsoft Excel (y compris les paramètres du Panneau de configuration). False (valeur par défaut) enregistre les fichiers en fonction de la langue de Visual Basic pour Applications (VBA) (VBA (Visual Basic pour Applications) : version macrolangage de Microsoft Visual Basic qui sert à programmer des applications Windows. VBA est fourni avec plusieurs programmes Microsoft.) (qui est généralement l’anglais des États-Unis, sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet VBA XL5/95 de niveau international).
    CorruptLoad Facultatif XlCorruptLoad Il peut s’agir de l’une des constantes suivantes : xlNormalLoad, xlRepairFile et xlExtractData. Le comportement par défaut, si aucune valeur n’est spécifiée, est xlNormalLoad et ne tente aucune récupération lorsqu’il est déclenché par l’OM.

    Valeur renvoyée
    Objet Workbook qui représente le classeur ouvert.

    Remarques


    Par défaut, les macros sont activées lors de l’ouverture des fichiers par la programmation. Utilisez la propriété AutomationSecurity pour définir le mode de sécurité des macros à utiliser dans ce cas.

    Vous pouvez spécifier l’une des valeurs suivantes dans le paramètre MettreÀJourLiens pour déterminer si les références externes (liens) sont mises à jour à l’ouverture du classeur :

    Valeur Signification
    0 Les références externes (liens) ne sont pas mises à jour à l’ouverture du classeur.
    3 Les références externes (liens) sont mises à jour à l’ouverture du classeur.

    Vous pouvez spécifier une des valeurs suivantes dans le paramètre Format pour le séparateur du fichier :

    Valeur Séparateur
    1 Tabulations
    2 Virgules
    3 Espaces
    4 Points-virgules
    5 Aucun
    6 Caractère personnalisé (voir l’argument Delimiter)


    Exemple


    Cet exemple montre comment ouvrir le classeur Analysis.xls, puis comment exécuter sa macro Auto_Open.

    Visual Basic pour Applications
    Workbooks.Open "ANALYSIS.XLS"
    ActiveWorkbook.RunAutoMacros xlAutoOpen


    © 2010 Microsoft Corporation. Tous droits réservés.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 80
    Points : 49
    Points
    49
    Par défaut
    Désolé d'avoir peiné la communauté.
    Mais j'y passe du temps et je suis surement parfois hermétique. Mais du haut de mes 78 ans il m'est des fois difficile de suivre. C'était la première fois que je me donnais un petit exercice avec Powerpoint. Et oui il y en a qui font des mots croisés, moi, au gré des lectures, je sollicite des "maitres"du domaine, je colle recolle des morceaux de code en toute modestie. Vous m'aurez au moins appris à coller du code sur un post et je vous en remercie. Je vois que ma place n'est pas sur ce forum alors, je ne vous importunerai plus, je m'en d'inscrits.
    Merci encore.
    Amicalement,
    Pascal

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

Discussions similaires

  1. Comment récupérer une valeur dans une balise html?
    Par skandaboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2011, 15h38
  2. Réponses: 3
    Dernier message: 31/07/2010, 22h58
  3. Réponses: 1
    Dernier message: 11/05/2009, 19h23
  4. Réponses: 5
    Dernier message: 27/04/2009, 17h15
  5. Réponses: 21
    Dernier message: 18/11/2008, 15h36

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