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

Selectionner les shapes d'une page quand la feuille contient plusieurs pages

10 réponses
Avatar
manbas
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller dans
PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1, puis
celles de la page 2, etc...(pour éviter le trop plein d'objets dans la
première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse

10 réponses

Avatar
isabelle
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1 et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller dans
PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1,
puis celles de la page 2, etc...(pour éviter le trop plein d'objets
dans la première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse



Avatar
manbas
Bonjour Isabelle
Merci pour ta réponse, qui me fournit enfin une idée car je n'en avais pas.
Les éléments de ma feuille sont toujours répartis dans un format paysage,
car les lignes sont masquées au-dessous de la 38eme. Par contre les colonnes
vont jusqu'au bout du classeur. Quel serait alors le pendant de
TopLeftCell.Row?


"isabelle" a écrit dans le message de
news:%
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1 et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller dans
PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1, puis
celles de la page 2, etc...(pour éviter le trop plein d'objets dans la
première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse





Avatar
manbas
Je suis parti bille en tête sur une modif possible avec les colonnes, sans
succès.
Tardivement je découvre que ce code (même en rajoutant if) ne fonctionne
pas: le shape n'est pas selectionné??


"isabelle" a écrit dans le message de
news:%
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1 et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller dans
PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1, puis
celles de la page 2, etc...(pour éviter le trop plein d'objets dans la
première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse





Avatar
manbas
Isabelle j'ai le souci suivant:
le code fonctionne dans Excel, pourtant lorsqu'on l'execute pas-à-pas on ne
voit pas la selection des shapes "activée".
Lorsque le code demande le collage (dans powerpoint) des shapes copiés, le
bug survient car il n'y a "rien" de copié.
Quel est ton avis?

"isabelle" a écrit dans le message de
news:%
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1 et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller dans
PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1, puis
celles de la page 2, etc...(pour éviter le trop plein d'objets dans la
première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse





Avatar
isabelle
bonjour Manbas,

TopLeftCell.Column

isabelle

manbas a écrit :
Bonjour Isabelle
Merci pour ta réponse, qui me fournit enfin une idée car je n'en avais
pas.
Les éléments de ma feuille sont toujours répartis dans un format
paysage, car les lignes sont masquées au-dessous de la 38eme. Par
contre les colonnes vont jusqu'au bout du classeur. Quel serait alors
le pendant de TopLeftCell.Row?


"isabelle" a écrit dans le message de
news:%
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1
et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller
dans PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1,
puis celles de la page 2, etc...(pour éviter le trop plein d'objets
dans la première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse








Avatar
isabelle
difficile de répondre sans savoir quel méthode tu utilise pour faire ton
copier coller,

isabelle

manbas a écrit :
Isabelle j'ai le souci suivant:
le code fonctionne dans Excel, pourtant lorsqu'on l'execute pas-à-pas
on ne voit pas la selection des shapes "activée".
Lorsque le code demande le collage (dans powerpoint) des shapes
copiés, le bug survient car il n'y a "rien" de copié.
Quel est ton avis?

"isabelle" a écrit dans le message de
news:%
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1
et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller
dans PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1,
puis celles de la page 2, etc...(pour éviter le trop plein d'objets
dans la première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse








Avatar
michdenis
Bonjour Isabelle,

Avec Excel 2007, la commande Shapes.SelectAll
ne sélectionnes pas "toutes" les shapes

Shapes.SelectAll : Valides pour tout sauf : les contrôles
émanant de la barre d'outils "Contrôle" et "formulaire"
y compris les graphes.

Feuil1.DrawingObjects.Select -> bon pour les contrôles
de la barre d'outils "Formulaires" et "Contrôles" seulement.



"isabelle" a écrit dans le message de groupe de discussion :
##
difficile de répondre sans savoir quel méthode tu utilise pour faire ton
copier coller,

isabelle

manbas a écrit :
Isabelle j'ai le souci suivant:
le code fonctionne dans Excel, pourtant lorsqu'on l'execute pas-à-pas
on ne voit pas la selection des shapes "activée".
Lorsque le code demande le collage (dans powerpoint) des shapes
copiés, le bug survient car il n'y a "rien" de copié.
Quel est ton avis?

"isabelle" a écrit dans le message de
news:%
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1
et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller
dans PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1,
puis celles de la page 2, etc...(pour éviter le trop plein d'objets
dans la première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse








Avatar
isabelle
salut Denis,

qu'en est t'il de la commande Shapes.Range ?

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

michdenis a écrit :
Bonjour Isabelle,

Avec Excel 2007, la commande Shapes.SelectAll
ne sélectionnes pas "toutes" les shapes

Shapes.SelectAll : Valides pour tout sauf : les contrôles
émanant de la barre d'outils "Contrôle" et "formulaire"
y compris les graphes.

Feuil1.DrawingObjects.Select -> bon pour les contrôles
de la barre d'outils "Formulaires" et "Contrôles" seulement.



"isabelle" a écrit dans le message de groupe de discussion :
##
difficile de répondre sans savoir quel méthode tu utilise pour faire ton
copier coller,

isabelle

manbas a écrit :

Isabelle j'ai le souci suivant:
le code fonctionne dans Excel, pourtant lorsqu'on l'execute pas-à-pas
on ne voit pas la selection des shapes "activée".
Lorsque le code demande le collage (dans powerpoint) des shapes
copiés, le bug survient car il n'y a "rien" de copié.
Quel est ton avis?

"isabelle" a écrit dans le message de
news:%

bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1
et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :

Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller
dans PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1,
puis celles de la page 2, etc...(pour éviter le trop plein d'objets
dans la première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse










Avatar
michdenis
Seule la dernière shape (telle que définie dans mon message
précédent) est sélectionnée.


"isabelle" a écrit dans le message de groupe de discussion :
#rO$
salut Denis,

qu'en est t'il de la commande Shapes.Range ?

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

michdenis a écrit :
Bonjour Isabelle,

Avec Excel 2007, la commande Shapes.SelectAll
ne sélectionnes pas "toutes" les shapes

Shapes.SelectAll : Valides pour tout sauf : les contrôles
émanant de la barre d'outils "Contrôle" et "formulaire"
y compris les graphes.

Feuil1.DrawingObjects.Select -> bon pour les contrôles
de la barre d'outils "Formulaires" et "Contrôles" seulement.



"isabelle" a écrit dans le message de groupe de discussion :
##
difficile de répondre sans savoir quel méthode tu utilise pour faire ton
copier coller,

isabelle

manbas a écrit :

Isabelle j'ai le souci suivant:
le code fonctionne dans Excel, pourtant lorsqu'on l'execute pas-à-pas
on ne voit pas la selection des shapes "activée".
Lorsque le code demande le collage (dans powerpoint) des shapes
copiés, le bug survient car il n'y a "rien" de copié.
Quel est ton avis?

"isabelle" a écrit dans le message de
news:%

bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1
et 41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :

Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller
dans PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1,
puis celles de la page 2, etc...(pour éviter le trop plein d'objets
dans la première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse










Avatar
manbas
La "base" du code est celle-ci, dans laquelle j'ai remplacé
Activesheet.shapes.selectall par la boucle proposée:
Sub Diapo()
Dim fichier
fichier = ActiveWorkbook.Name
Dim obj As OLEObject
' déclare une variable de type Application PowerPoint
Dim ppt As PowerPoint.Application
Set ppt = CreateObject("PowerPoint.Application")
ppt.Visible = True ' Indispensable, sinon il ne peut pas ouvrir de fichier
(Erreur)
' crée maintenant un objet Presentation
Dim Pres As PowerPoint.Presentation
' on lui dit de quelle présentation il s'agit
Set Pres = ppt.Presentations.Add
' On active, sélectionne et copie dans Excel :
ActiveSheet.Shapes.SelectAll
Selection.Copy
' on colle dans la dia 1 de la présentation :
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste
' enregistre la présentation PowerPoint :
Pres.SaveAs Filename:= _
"C:UsersJacquesDesktop" & fichier & ".ppt"
' on quitte PowerPoint proprement :
ppt.Quit
Set ppt = Nothing
'Windows(fichier).Activate
End Sub

Pour avoir une idée du truc à exporter (4 dia), j'ai mis un modele sur
http://cjoint.com/?jtqLHHDtJb et MichDenis réponds à mon problème entre les
versions XL2003 et XL2007.



"isabelle" a écrit dans le message de
news:%23%
difficile de répondre sans savoir quel méthode tu utilise pour faire ton
copier coller,

isabelle

manbas a écrit :
Isabelle j'ai le souci suivant:
le code fonctionne dans Excel, pourtant lorsqu'on l'execute pas-à-pas on
ne voit pas la selection des shapes "activée".
Lorsque le code demande le collage (dans powerpoint) des shapes copiés,
le bug survient car il n'y a "rien" de copié.
Quel est ton avis?

"isabelle" a écrit dans le message de
news:%
bonjour manbas,

en supposant que tu veuille sélectionner les objets entre la ligne 1 et
41

Sub test1()
For Each obj In ActiveSheet.OLEObjects
If obj.TopLeftCell.Row < 42 Then
ActiveSheet.Shapes.Range(Array(obj.Name)).Select Replace:úlse
Next
End Sub

isabelle

manbas a écrit :
Bonjour à tous
Dans une macro je copie les shapes de la feuille pour les coller dans
PowerPoint.
Existe-t'il une solution pour copier d'abord les shapes de page 1, puis
celles de la page 2, etc...(pour éviter le trop plein d'objets dans la
première slide)

ActiveSheet.Shapes.SelectAll
Selection.Copy
Pres.Slides.Add Index:=1, Layout:=ppLayoutBlank
Pres.Slides(1).Shapes.Paste

Merci par avance pour votre réponse