Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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 23/09/2011, 16h58   #1
Futur Membre du Club
 
Inscription : février 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 85
Points : 18
Points : 18
Par défaut shape contient plusieurs autres shapes

Bonjour,

Pour trouver les shapes qui existent dans une feuille on peut faire:
Code :
1
2
3
4
5
6
 
Dim img As Object
 
For Each img In Worksheets(1).Shapes 'ou Worksheets("nom").Shapes
  msgbox img.Name
Next
Mais si un shape dans la feuille contient plusieurs autres shapes alors comment les trouver?


Merci
hebh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 20h37   #2
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonsoir

une shapes ne peut pas contenir d'autre shapes
on parle ici de groupe

fait un peu de recherche dans la faq tu va trouver ton bonheur

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/09/2011, 08h21   #3
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Voilà un petit exemple, à adapter bien entendu. Je ne l'ai pas re-testé depuis que je l'ai conçu pour un ancien post (je ne sais plus si c'était sur ce forum ?) :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
Sub GroupeShapes()
 
    Dim Fe As Worksheet
    Dim Tbl() As Shape
    Dim S As Shape
    Dim Groupe As Range
    Dim I As Integer
    Dim J As Integer
 
    'sur la feuille active
    Set Fe = ActiveSheet
 
    'parcour les shapes de la feuille
    For Each S In Fe.Shapes
 
        'si c'est un groupe
        If S.Type = msoGroup Then
 
            'les stocke dans un tableau
            For I = 1 To S.GroupItems.Count
 
                J = J + 1
                ReDim Preserve Tbl(1 To J)
                Set Tbl(J) = S.GroupItems(I)
 
            Next I
 
            'puis les dégroupe afin de les récupérer de façon individuelle
            Fe.Shapes(S.Name).Ungroup
 
            'ici, récupération des noms (à voir ce qu'il a lieu d'en faire ?)
            For I = 1 To UBound(Tbl)
 
                On Error Resume Next
                Debug.Print Tbl(I).Name
                'Tbl(I).ControlFormat.Value = 0 'exemple, modif de la valeur pour une case à cocher
 
            Next I
 
            On Error GoTo 0
 
            'regroupe
            Set Groupe = Fe.Shapes.Range(Tbl())
 
            Groupe.Group
 
            Erase Tbl
 
        End If
 
    Next
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/09/2011, 11h12   #4
Futur Membre du Club
 
Inscription : février 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 85
Points : 18
Points : 18
Bonjour,

Merci beaucoup pour vos réponses.
Hervé j'ai essayé ta solution mais dans la feuille il ne détecte aucun groupe. En fait quand je cherche les shapes dans la feuille il m'affiche deux: Graphique 1 et Graphique 2
Mais j'ai une image (image 1) dans "graphique 2" que je veux la supprimer mais je n’ai pas pu le faire.

Merci
hebh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 11h34   #5
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Le code que je t'ai posté concerne des shapes qui peuvent être groupé mais comme je ne vois pas vraiment comment sont incorporés les shapes, le mieux est que tu poste ton classeur.

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 11h55   #6
Futur Membre du Club
 
Inscription : février 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 85
Points : 18
Points : 18
Ci-joint le classeur, j'ai "graphique 6" et "graphique 7" et je veux supprimé "picture 4".


Merci
Fichiers attachés
Type de fichier : xls test.xls (82,5 Ko, 1 affichages)
hebh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 13h55   #7
Futur Membre du Club
 
Inscription : février 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 85
Points : 18
Points : 18
enfin j'ai trouvé la solution:

Code :
1
2
ActiveSheet.ChartObjects("Graphique 6").Activate
 ActiveChart.Shapes.Range(Array("Picture 4")).Delete
Des fois on cherche des jours pour une solution de 2 seconde. Il fallait juste enregistrer un macro et lors de l'enregistrement je selectionne ce boutton et je le supprime et là j'ai le code



Merci Beaucoup de votre aide
hebh 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 20h34.


 
 
 
 
Partenaires

Hébergement Web