Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Powerpoint > VBA PowerPoint
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2008, 14h57   #1
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
Par défaut [PPT] Insertion de fichier Excel



Je me galère avec une opération sur laquelle votre avis m'intéresse :

Ma source est un fichier Excel contenant plusieurs onglets (15 environ) ;
Pour certains onglets (pas de souci pour la sélection) je dois récupérer une zone de ma feuille de travail (contenant un tableau et un graphe), puis les insérer dans une présentation PowerPoint.

Je fais une insertion du fichier avec le code suivant (merci l'enregistreur ! ) :
Code :
1
2
ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=100, Top:=110, Width:=580, Height:=320, _
FileName:="D:\mesDocs\Reportings_CIS\repSESAME\ReportingRegion_0.5_mai08.xls", Link:=msoTrue).Select
Question principale : comment puis-je déterminer/paramétrer la zone du doc Excel qui va être affichée ??? Mes divers tests me donnent des résultats limite aléatoires et j'ai du mal à comprendre le mécanisme qui fait que parfois j'ai 6 cellules en caractères énormes qui s'affichent, et parfois presque toute la page...

Question subsidiaire : comment paramétrer l'onglet qui va être affiché ? A priori, c'est l'onglet activ lors du dernier enregistrement du document Excel.
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 09h34   #2
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
Alors, après moult tests :
  • masquer une colonne complète est un bon moyen de limiter la plage de cellules qui sera affichée,
  • j'imagine que ça marche aussi avec des lignes masquées... ,
  • par défaut l'onglet qui s'affiche, est l'onglet actif lors de la dernière sauvegarde du document excel.
Donc il s'agit pour moi, depuis Excel, de sauvegarder mon document à la page choisie, d'ouvrir le fond de document PowerPoint qui va bien, et de générer mon insertion d'objet > à partir du fichier > insérer le document.

Allez, au boulot !!
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2008, 14h04   #3
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
Actuellement mon code ressemble à ça :
Code :
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
Function ImportSesame(PopName As String)    ' popname est le nom de l'onglet
 
Dim XlApp As Excel.Application
Dim XlSheet As Excel.Workbook
 
Set XlApp = New Excel.Application
 
With XlApp
    .Visible = False
    .Workbooks.Open CheminDocSource, ReadOnly:=True
    .Sheets(PopName).Activate           ' Sélection du tableau à importer
    .Sheets(PopName).Range("B1").Select
    .ActiveWorkbook.SaveAs CheminDocTemp     ' ESSENTIEL pour que le bon tableau soit affiché
    .Workbooks.Close
 
    With ActiveWindow.Selection         ' Import du tableau de chiffres
        .SlideRange.Shapes.AddOLEObject(Left:=120, Top:=110, Width:=480, Height:=320, FileName:=CheminDocTemp, _
            Link:=msoFalse).Select
 
        With .ShapeRange                ' Positionnement fin du tableau
            .ScaleWidth 1.22, msoFalse, msoScaleFromTopLeft
            .ScaleHeight 1.22, msoFalse, msoScaleFromTopLeft
            .IncrementLeft 1.88
            .IncrementTop 39.38
            .ScaleWidth 1.18, msoFalse, msoScaleFromBottomRight
            .ScaleHeight 1.18, msoFalse, msoScaleFromBottomRight
            .ZOrder msoSendToBack       ' Place les chiffres en fond de page (mieux pour les commentaires)
        End With
 
    End With
    .Quit       ' On referme Excel
 
End With
Set XlApp = Nothing
 
Kill CheminDocTemp          ' Suppression du fichier temporaire
 
End Function
J'ai transformé ma routine en fonction puisque je dois l'appeler 15 fois de suite...
L'idée est d'ouvrir le fichier CheminDocSource en lecture seule, d'activer l'onglet à importer puis de faire un enregistrement sous forme de fichier temporaire qui sera ensuite détruit.

Mon problème actuel est le suivant :
Mon fichier Excel contient des macros et, à chaque fois que ma fonction s'exécute, j'ai à 2 reprises l'interface de sécurité des macros qui apparait.

Comment désactiver les macros automatiquement, ou sinon, comment éviter que cette interface de sécurité n'apparaisse ??


Merci de votre aide (quoique pour le moment, je suis certainement celui qui m'aide le plus... )
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2008, 14h27   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 907
Points : 30 907
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Code très intéressant.

Pour la sécurité des macros, cela vient des paramètres d'Excel, dans le menu Outil/Macro/Sécurité.

J'ai lu le post en entier, j'ai donc compris ton soucis, et ta solution de contournement est très intéressante.

Cependant une autre solution peut-être possible, c'est de créer dynamiquement un tableau PowerPoint à partir de données Excel.

Un tableau PowerPoint se compose de Rows et de Columns, ainsi que de Cells, donc l'analogie des termes est équivalente à Excel.

Starec
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2008, 14h54   #5
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
Merci Starec de ton soutien !

Là où je coince, car j'ai bien vu la floppée de messages relatifs au fameux "Application.DisplayAlerts = False", c'est que cette déclaration semble être spécifique à Excel, et je ne sais pas comment la caser dans du code VBA PPT pour qu'elle soit efficace.

Et puis mon paramétrage de sécurité est verrouillé : je suis en entreprise mais pas administrateur de mon poste. Qui est pas en SP2, mon Office 2003 n'est pas patché, l'aide directe de VBA ne marches pas (don F1 sur un mot clef n'ouvre rien du tout ce qui est lassant à force), etc.

Pour ce qui est de recréer le tableau je dois admettre ma faiblesse : ça me gave !! J'ai 15 tableau à pondre, qui font chacun 14 colonnes sur 21 lignes. Ca fait un peu trop pour moi, même si j'admets que ça accélererait franchement ma macro parce que là, ça rame un bout.
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h24.


 
 
 
 
Partenaires

Hébergement Web