[VBA: Excel-Powerpoint] passage de variables

Fermé
Karl Max - 21 mai 2007 à 12:15
 nobo - 22 juin 2007 à 07:36
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

8 réponses

EBasta Messages postés 37 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 25 mai 2007 31
21 mai 2007 à 15:06
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.
4
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!!
2
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
Utilisateur anonyme
21 mai 2007 à 15:57
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
21 mai 2007 à 14:25
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
0
Ps: Message d'erreur:
Proprieté ou methode non gérrée par cet objet
0
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
0
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.
0
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
0