Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vba : passer d'un ppt à l'autre

7 réponses
Avatar
Jac
Bonjour à tous,

par vba, je crée un ppt en paysage dont je récupère le nom avec
LE_PAYSAGE = ActivePresentation.Name
et un ppt an portrait dont je récupère le nom avec
LE_PORTRAIT = ActivePresentation.Name
Ensuite, j'ai besoin de passer de l'un à l'autre, mais de façon précise.

En fait, j'ai besoin d'une syntaxe qui ressemblerait à
Windows.Item(LE_PORTRAIT).Activate
mais ça ne fonctionne pas...

Avec Windows.Item(1).Activate, Windows.Item(2).Activate et
Windows.Item(3).Activate, l'Item(1) correspond dans une première
sélection à la première fenêtre et dans une deuxième sélection à la
fenêtre 3, donc je ne sais jamais quelle est la fenêtre active.

Quelle serait la formule magique qui me permettrait d'activer
précisément une des fenêtres ouvertes ?

Merci d'avance,

Jac

7 réponses

Avatar
Geo

Bonjour à tous,

par vba, je crée un ppt en paysage dont je récupère le nom avec
LE_PAYSAGE = ActivePresentation.Name
et un ppt an portrait dont je récupère le nom avec
LE_PORTRAIT = ActivePresentation.Name
Ensuite, j'ai besoin de passer de l'un à l'autre, mais de façon précise.


Au lieu de travailler avec le nom, utilisez les objets présentation :
Dim LE_PAYSAGE As Presentation
Set LE_PAYSAGE = ActivePresentation
...
Dim LE_PORTRAIT As Presentation
Set LE_PORTRAIT = ActivePresentation

LE_PORTRAIT.Slides(5).Select
...
LE_PORTRAIT.Slides(6).Copy
...
LE_PORTRAIT.SaveAs ....
LE_PORTRAIT.Close

--
A+

Avatar
Jac
Merci beaucoup Geo, je vais suivre ton conseil.

"Geo" a écrit dans le message de news:


Bonjour à tous,

par vba, je crée un ppt en paysage dont je récupère le nom avec
LE_PAYSAGE = ActivePresentation.Name
et un ppt an portrait dont je récupère le nom avec
LE_PORTRAIT = ActivePresentation.Name
Ensuite, j'ai besoin de passer de l'un à l'autre, mais de façon précise.


Au lieu de travailler avec le nom, utilisez les objets présentation :
Dim LE_PAYSAGE As Presentation
Set LE_PAYSAGE = ActivePresentation
...
Dim LE_PORTRAIT As Presentation
Set LE_PORTRAIT = ActivePresentation

LE_PORTRAIT.Slides(5).Select
...
LE_PORTRAIT.Slides(6).Copy
...
LE_PORTRAIT.SaveAs ....
LE_PORTRAIT.Close

--
A+





Avatar
Jac
Merci Geo, mais en suivant ton conseil,
"LE_PORTRAIT.Slides(1).Select"
ne me fait pas changer de présentation.

"LE_PORTRAIT" est une variable(il me semble) qui n'affiche
aucune valeur au passage du curseur et même pas une boîte de
dialogue avec un "MsgBox LE_PORTRAIT".

"Geo" a écrit dans le message de news:


Bonjour à tous,

par vba, je crée un ppt en paysage dont je récupère le nom avec
LE_PAYSAGE = ActivePresentation.Name
et un ppt an portrait dont je récupère le nom avec
LE_PORTRAIT = ActivePresentation.Name
Ensuite, j'ai besoin de passer de l'un à l'autre, mais de façon précise.


Au lieu de travailler avec le nom, utilisez les objets présentation :
Dim LE_PAYSAGE As Presentation
Set LE_PAYSAGE = ActivePresentation
...
Dim LE_PORTRAIT As Presentation
Set LE_PORTRAIT = ActivePresentation

LE_PORTRAIT.Slides(5).Select
...
LE_PORTRAIT.Slides(6).Copy
...
LE_PORTRAIT.SaveAs ....
LE_PORTRAIT.Close



Avatar
Geo

"LE_PORTRAIT" est une variable(il me semble) qui n'affiche
aucune valeur au passage du curseur et même pas une boîte de
dialogue avec un "MsgBox LE_PORTRAIT".


Oui l'approche est différente de ce qu'on fait à la main :
C'est une variable qui contient la présentation en sa totalité, c'est à
dire toutes ses caractéristiques, les diapos, les masques etc.
Le nom de la présentation est LE_PORTRAIT.Name .

Vous pouvez recopier des éléments d'un présentation à l'autre en
désignant ces éléments, il n'est pas nécessaire de les afficher.
Par exemple
LE_PORTRAIT.SlideMaster.CustomLayouts(6)
est le masque de la présentation LE_PORTRAIT pour Titre seul.

--
A+

Avatar
Jac
Donc j'en reviens à ma question : comment réactiver la présentation
LE_PORTRAIT.name ?

J'arrive atteindre le premier ppt, ou le deuxième, mais premier, deuxième ou
troisième ne sont jamais les mêmes...
Dans Excel, je change de feuille ou de classeur sans soucis. Mais là, est-ce
impossible ?

Heureusement que les produits office font partie d'un package. Qu'est ce que
ça donnerait si chaque produit était vendu par des firmes différentes ?

Voici ce que je cherche à faire : je crée deux ppt LE_PORTRAIT et LE_PAYSAGE
que j'alimente avec des images selon qu'elles sont en portrait ou en
paysage. Donc j'ai besoin à tout moment, selon le format de l'image
considérée, de passer d'un ppt à l'autre.


"Geo" a écrit dans le message de news:


"LE_PORTRAIT" est une variable(il me semble) qui n'affiche
aucune valeur au passage du curseur et même pas une boîte de
dialogue avec un "MsgBox LE_PORTRAIT".


Oui l'approche est différente de ce qu'on fait à la main :
C'est une variable qui contient la présentation en sa totalité, c'est à
dire toutes ses caractéristiques, les diapos, les masques etc.
Le nom de la présentation est LE_PORTRAIT.Name .

Vous pouvez recopier des éléments d'un présentation à l'autre en désignant
ces éléments, il n'est pas nécessaire de les afficher.
Par exemple
LE_PORTRAIT.SlideMaster.CustomLayouts(6)
est le masque de la présentation LE_PORTRAIT pour Titre seul.

--
A+





Avatar
Geo

Heureusement que les produits office font partie d'un package. Qu'est ce que ça
donnerait si chaque produit était vendu par des firmes différentes ?


Bien d'accord avec vous.

Voici ce que je cherche à faire : je crée deux ppt LE_PORTRAIT et LE_PAYSAGE que
j'alimente avec des images selon qu'elles sont en portrait ou en paysage. Donc j'ai
besoin à tout moment, selon le format de l'image considérée, de passer d'un ppt à
l'autre.


D'accord, comme je suis têtu, je vous propose ceci :

Dim MaPrésentation as Presentation

...

Si image en mode portrait then

set MaPrésentation = Le_portrait
else
set MaPrésentation = Le_paysage
end if

Ajouter l'image à la dipao x de MaPrésentation
Vous passez bien d'une présentation à l'autre, mais sans l'afficher
pour autant.

En Excel c'est le même chose, vous pouvez travailler sur une feuille ou
l'autre sans l'afficher.
Si vous tenez à votre affichage :
MaPrésentation.Windows(1).Panes(1).Activate

--
A+

Avatar
Jac
Ouf... merci Géo, ça fonctionne comme je veux, maintenant.

Jac

"Geo" a écrit dans le message de news:


Heureusement que les produits office font partie d'un package. Qu'est ce
que ça donnerait si chaque produit était vendu par des firmes différentes
?


Bien d'accord avec vous.

Voici ce que je cherche à faire : je crée deux ppt LE_PORTRAIT et
LE_PAYSAGE que j'alimente avec des images selon qu'elles sont en portrait
ou en paysage. Donc j'ai besoin à tout moment, selon le format de l'image
considérée, de passer d'un ppt à l'autre.


D'accord, comme je suis têtu, je vous propose ceci :

Dim MaPrésentation as Presentation

...

Si image en mode portrait then

set MaPrésentation = Le_portrait
else
set MaPrésentation = Le_paysage
end if

Ajouter l'image à la dipao x de MaPrésentation
Vous passez bien d'une présentation à l'autre, mais sans l'afficher pour
autant.

En Excel c'est le même chose, vous pouvez travailler sur une feuille ou
l'autre sans l'afficher.
Si vous tenez à votre affichage :
MaPrésentation.Windows(1).Panes(1).Activate

--
A+