[VBA: Excel-Powerpoint] passage de variables

Bonjour!
(VBA Excel Powerpoint)Je cherche a faire un truc un peu compliqué, et je n'ai pas trouvé comment faire sur internet:

J'ai une feuille de calcul excel et une présentation powerpoint.
Je veux entrer des variables dans ma presentation, faire tourner la feuille de calcul, puis récuperer les résultats sur ma présentation. Ca serait simple si le fichier excel n'etait pas trop gros pour faire un collage spécial (trop lent)
Donc si quelqu 'un voit comment faire en VBA, ca m'interesse beaucoup!
Merci beaucoup
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Le code VBA à placer dans PowerPoint serait de la forme :

    Sub ModifierFeuilleExcel()

    'Déclaration des variables
    Dim xlApplication As Object

    Set xlApplication = CreateObject("excel.application")

    With xlApplication
    .Workbooks.Open ("C:\Documents and Settings\Utilisateur\Bureau\test1.xls")
    .sheets("Feuil1").Cells(1, 1) = TextBox1.Value
    .Save
    .Quit
    End With

    End Sub

    J'espère avoir bien répondu.
    1. Bonjour Lupin A et irem 32
      Merci pour vos réponses. En effet, Lupin A, vous avez tout a fait compris mon probleme. J'ai essayé de taper un code VBA pour essayer de piloter Excel depuis le VB de powerpoint, mais il ne marche pas, vraissemblablement à cause d'une erreur de syntaxe (je ne suis pas tres familié avec ce genre de programmation)
      Pouriez vous me dire quel sont les grosses erreur qui vous saute aux yeux?
      Merci d'avance

      Sub ModifierFeuilleExcel()

      'Déclaration des variables
      Dim appExcel As Excel.Application 'Application Excel
      Dim wbExcel As Excel.Workbook 'Classeur Excel
      Dim wsExcel As Excel.Worksheet 'Feuille Excel

      'Ouverture de l'application
      Set appExcel = CreateObject("Excel.Application")
      'Ouverture d'un fichier Excel
      Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Utilisateur\Bureau\test1.xls")

      With wbExcel
      'copie de la Textbox de Powerpoint dans la feuille Excel active
      Feuil1.Range("A1:B2") = TextBox1.Text

      End With
      End Sub

      Merci d'avance!!
      1. Perso, je le ferais de la manière suivante :

        1°) Rentrer les param dans Powerpoint
        2°) D'une macro Powerpoint, instancier et lancer (dans le même répertoire) le bon fichier excel et indexer les bonnes valeurs
        3°) Lire ensuite les résultats toujours depuis Powerpoint pour mettre à jour la pres.

        Ca c'est uniquement si les formules sont réellement complexes ou s'appuie sur des données externes et nécessite vraiment excel, sinon transposer les formules excel en formules vba sous powerpoint, plus simple et plus rapide.

        Irem
        1. Bonjour,

          autres exemple, votre code que je me suis permis de modifier :

          ' Déclaration de Types
          ' Déclaré vous un type personalisé
          '
          Type Presentation
          	Indice As Long
          	NomFichier As String
          	Parametres(3) As Long
          	Resultats(2) As Long
          End Type
          
          Public CePPT As Presentation
          
          Sub ModifierFeuilleExcel() 
          
              'Déclaration des variables
              ' Je recommande d'utiliser le type [ Variant ], en VBS
              ' (Visual Basic Scripting), les variables sont déclarés
              ' mais non typés puisque tous natifs en [ Variant ].
              ' Ainsi si le code demeure des objets VBS pur sous
              ' VBA, la transportabilité du code l'est sous toutes
              ' les composantes de Office ( Word, Excel, Acess, PowerPoint, ...)
              ' D'ou le choix de typé les objets en [ Variant ]
              Dim appExcel As Variant 'Application Excel 
              Dim wbExcel As Variant 'Classeur Excel 
              Dim wsExcel As Variant 'Feuille Excel 
          
              'En suposant que le fihier excel (*.xls) est au même endroit
              ' que le fichier powerpoint (*.ppt;*.pps), accéder au fichier
              ' de façon relative : 
              Dim NomFichier As String, Boucle As Long
          
              ' La valeur de la variable peut-être saisie n'importe
              ' quand depuis powerpoint(vba)
              CePPT.NomFichier = "Test.xls"
          
              NomFichier = ActivePresentation.FullName
              NomFichier = Left(varFichier, InStrRev(NomFichier, "\"))
              NomFichier = NomFichier & CePPT.NomFichier
          
              'Ouverture de l'application 
              Set appExcel = CreateObject("Excel.Application") 
              'Ouverture d'un fichier Excel 
              Set wbExcel = appExcel.Workbooks.Open(NomFichier) 
              ' Main mise sur la feuille 1
              Set xlWKS = wbExcel.Worksheets(1)
              ' Main mise sur l'adressage de la feuille
              Set xlRange = xlWKS.Range("A1:A65535")
          
              For Boucle = 1 To 3
                  xlRange.Cells(1,i).Value = CePPT.Parametres(Boucle-1)
              Next Boucle
          
              For Boucle = 1 To 2
                  CePPT.Resultats(Boucle-1) = xlRange.Cells(2,i).Value
              Next Boucle
          
          End Sub 
          '
          

          Lupin
          1. Bonjour,

            En fait, sous VBA de powerpoint il vous est possible de piloter
            excel ou vice et versa bien sur, toute la suite bureautique est
            pilotable, j'ai essayé excel,access et word !

            Vous voulez donc cumuler des données saisies au cours de
            votre présentation et ouvrir excel au bon moment afin d'alimenter
            votre classeur et d'en récupérer les données "calculer/modifier".

            Ai-je bien compris votre besoin ?

            Lupin
            1. Ps: Message d'erreur:
              Proprieté ou methode non gérrée par cet objet
              1. ce devrait etre plutot

                With wbExcel
                'copie de la Textbox de Powerpoint dans la feuille Excel active
                'Feuil1.Range("A1:B2") = TextBox1.Text
                .Worksheets(1).Cells(1, 2).Value =TextBox1.text
                'par exemple
                End With

                Irem32
                1. Merci beaucoup pour vos reponses!!!

                  J'ai finalement adopté la réponse de Ebasta :
                  Sub ModifierFeuilleExcel()

                  'Déclaration des variables
                  Dim xlApplication As Object

                  Set xlApplication = CreateObject("excel.application")

                  With xlApplication
                  .Workbooks.Open ("C:\Documents and Settings\Utilisateur\Bureau\test1.xls")
                  .sheets("Feuil1").Cells(1, 1) = TextBox1.Value
                  .Save
                  .Quit
                  End With

                  End Sub

                  Propre, efficace et élégant!
                  merci aussi Irem32 pour votre correction.
                  1. Bonjour,

                    Je suis à la recherche de la même problématique décrite dans le code ci-dessus.

                    J'essaie d'utiliser la procédure, mais lors de la compiltation un message d'erreur

                    Type défini par l'utilisateur non défini.

                    Merci de votre aide