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/12/2010, 18h20   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 1
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 1
Points : 0
Points : 0
Par défaut msoTable en VB

Bonjour,

Je suis en train de faire une appli qui pilote powerpoint via VB.net
Je poste ici car c'est la seule partie du forum ou j'ai trouvé des compétences en pilotage powerpoint via le code et que vb.net et vba se ressemble beaucoup.

Dans mon appli, je crée une présentation ppt et des slides.
L'application powerpoint est ouverte en arrière plan.
je crée à l'intérieur d'un de ces slides une table à une ligne et 6 colonnes
Code :
Dim table As PowerPoint.Shape = myPresentation.Slides(element.nomSlide).Shapes.AddTable(1, 6)
puis je rajoute des lignes en fonction du nombre de lignes nécessaires en les remplissant.

mon premier problème est que le nom du shape donné après création est changé tout seul après la première modification.
Comme je dois garder le nom en mémoire, je force le nom à sont nom d'origine après une modification.

Plus embêtant, mon deuxième problèmes est que plus tard si je reprends ma table et si je modifie les propriété myShape.Top par exemple, la propriété myShape.Type passe à msogroup et je n'ai plus accès à ma table.

Bien sur cette propriété est readOnly et je ne sais pas comment récupérer mon objet.

J'ai testé vite fait avec une table créer à la main dans une présentation existante et ce phénomène ne se produit pas.

Merci d'avance de votre aide
Moi meme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 01h28   #2
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Salut !

Désolé, mais je ne reproduis pas ton erreur...

Code :
1
2
3
Dim oTable As PowerPoint.Shape
    Set oTable = m_oPPTPresentation.Slides(1).Shapes.AddTable(1, 6)
    Debug.Print m_oPPTPresentation.Slides(1).Shapes(1).Name
m'affiche "Table 1"
Ensuite, je change de nom
Code :
1
2
m_oPPTPresentation.Slides(1).Shapes(1).Name = "myTable"
Debug.Print m_oPPTPresentation.Slides(1).Shapes(1).Name
ce qui m'affiche bien myTable
Je fais une modification
Code :
1
2
3
4
With m_oPPTPresentation.Slides(1).Shapes("myTable")
        .Left = 0
        .Top = 50
    End With
Et je regarde le nom
Code :
1
2
m_oPPTPresentation.Slides(1).Shapes(1).Name = "myTable"
Debug.Print m_oPPTPresentation.Slides(1).Shapes(1).Name
Ce qui m'affiche toujours myTable !

Donc, je n'ai peut-être pas bien compris ta question...
Mais si j'ai compris, je ne reproduis pas le 'bug'
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h21.


 
 
 
 
Partenaires

Hébergement Web