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 28/12/2010, 23h26   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
Par défaut créer un tableau avec des largeurs de colonnes différentes

Bonjour tout le monde
Je viens vous demander un peu (beaucoup) d'aide.
Je bosse actuellement sur une macro qui pilote génère un tableau 4 colonnes et 2 lignes dans powerpoint.
Hors mon tableau doit être tel que la première colonne est plus large que les 3 autres et ca... j'arrive pas!
J'essaie aussi de faire en sorte que mon texte soit centré horizontalement dans des cellules ainsi que verticalement mais là aussi ca foire...
Vous pouvez m'aider svp?
Merci d'avance et bonne année à tous (avec quelques jours d'avance)
headachemaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 04h33   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
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 605
Points : 30 956
Points : 30 956
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Un exemple de code qui devrait t'aider :

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
39
40
Public Sub CreerTable()
 
    ' déclaration
    Dim objSld As Slide
    Dim objShp As Shape
    Dim i As Integer
    Dim j As Integer
 
 
    ' affectation
    Set objSld = ActivePresentation.Slides(1)
 
    ' création de la table (5 lignes et  6 colonnes)
    Set objShp = objSld.Shapes.AddTable(5, 6)
 
    ' je donne un nom au tableau
    objShp.Name = "LeTableau"
 
    ' j'augmente la taille de la première colonne et je diminue celle des autres
    With objSld.Shapes("LeTableau").Table
        .Columns(1).Width = 100
        .Columns(2).Width = 75
        .Columns(3).Width = 75
        .Columns(4).Width = 75
        .Columns(5).Width = 75
        .Columns(6).Width = 100
    ' je centre le texte horizontalement et verticalement
        For i = 1 To 6          ' pour boucler sur les colonnes
            For j = 1 To 5      ' pour boucler sur les lignes
                With .Cell(j, i).Shape.TextFrame
                    .VerticalAnchor = msoAnchorMiddle
                    .HorizontalAnchor = msoAnchorCenter
                    .TextRange.Text = "Bonjour"
                End With
            Next j
        Next i
    End With
 
 
End Sub
Philippe
__________________
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.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 11h44   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
Merci beaucoup Philippe, ton code m'a bien aidé et je me suis permis de le modifier "à ma sauce"
toutefois si je veux remplir une case de ce tableau avec la valeur d'une cellule contenue dans un fichier excel (exemple cellule M23) j'ai utilisé le code suivant:

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
 
    Set shp = AppliPPT.ActiveWindow.Selection.SlideRange.Shapes.AddTable(2, 4, 37, 111, 640, 102)
    ' propriétés
    With shp
        .Name = "Tableau"        'on donne un nom au tableau
    End With
    With AppliPPT.ActiveWindow.Selection.SlideRange.Shapes("Tableau").Table
        .Columns(1).Width = 220
        .Columns(2).Width = 140
        .Columns(3).Width = 140
        .Columns(4).Width = 140
' centrage du texte horizontalement et verticalement + début remplissage
                With .Cell(2, 2).Shape.TextFrame
                    .VerticalAnchor = msoAnchorMiddle
                    .HorizontalAnchor = msoAnchorCenter
                    With .TextRange
                        .Text = Sheets("exploitation").Range("M23").Value
                        With .Font
                            .Name = "Arial"
                            .Size = 24
                        End With
                    End With
                End With
    End With
et là... ca foire à moitié puisque le contenu de la case du tableau sous ppt ne se remplit pas (à moitié car je n'ai pas de bug dans ma macro)
Je précise que le contenu de la cellule M23 est obtenue par une formule sous Excel
Il doit y avoir une petite ruse quelque part mais je ne la vois pas pour l'instant...
headachemaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h26   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
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 605
Points : 30 956
Points : 30 956
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Comme tu es sous PowerPoint tu dois faire appel à Excel par automation.

Hors ta ligne
Code :
Sheets("exploitation").Range("M23").Value
ne vas pas toute seule, si tu n'as que cela tu dois avoir un message d'erreur.

Tu peux t'inspirer de ce qu'il y a dans la FAQ : Je cherche à construire un Powerpoint à partir d'une macro qui lit les données contenues dans un fichier Excel. Comment faire ?

Philippe
__________________
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.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 17h31   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
En réalité je pilote power point depuis excel. (J'avoue je n'avais donné que le point qui me posait problème dans mon premier message et j'ai ensuite adapté le code VBA powerpoint pour un pilotage depuis Excel)
Le fichier power point se génère d'après des données de mon fichier excel, d'où ma ligne de code

Code :
1
2
 
Sheets("exploitation").Range("M23").Value
Le seul souci que j'ai en fait c'est que la macro se déroule normalement sans aucun message d'erreur mais la case de mon tableau reste désespérément vide
headachemaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 19h12   #6
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
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 605
Points : 30 956
Points : 30 956
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Ok

Des choses à tester :

Fais une message box pour voir ce que te retourne la valeur de la cellule.
Contrôle la couleur de la police dans la cellule du tableau de powerpoint.
Si tu fermes le fichier ppt (après sauvegarde) et que tu l'ouvres, est-ce qu'il y a la valeur dans la cellule ?

Philippe
__________________
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.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 19h30   #7
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
Après quelques tests:

la cellule excel a bien une valeur
la police du tableau est bien noire sur fond blanc (si je remplace le code par "XXX" j'ai bien XXX dans la case qui apparait)
après enregistrement du ppt, fermeture et réouverture, la case est toujours vide...

Je vais finir par criser là... Le code a l'air bon pourtant mais où se planque la subtilité???
encore merci pour ton aide
headachemaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 22h19   #8
Invité de passage
 
Inscription : décembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 5
Points : 0
Points : 0
Je viens de trouver mon erreur
Je re-remplissais ma case avec le contenu d'une cellule vide au lieu de remplir une autre case du tableau avec...
Mais que je suis quiche!!!
en tout cas merci beaucoup de ton aide Philippe
headachemaster 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 11h57.


 
 
 
 
Partenaires

Hébergement Web