IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

shape contient plusieurs autres shapes


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut shape contient plusieurs autres shapes
    Bonjour,

    Pour trouver les shapes qui existent dans une feuille on peut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    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:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut
    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

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    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é.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut
    Ci-joint le classeur, j'ai "graphique 6" et "graphique 7" et je veux supprimé "picture 4".


    Merci
    Fichiers attachés Fichiers attachés

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut
    enfin j'ai trouvé la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2010] Macro pour créer un " Shape" dans Word, autre part qu'à la page n°1.
    Par Rendzaye dans le forum VBA Word
    Réponses: 3
    Dernier message: 17/06/2014, 14h46
  2. Réponses: 2
    Dernier message: 24/06/2010, 21h48
  3. [string] vérifier si une string en contient une autre
    Par vasilov dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/12/2005, 14h50
  4. Réponses: 1
    Dernier message: 05/12/2005, 22h49
  5. [Jar]Un jar qui en contient d'autres
    Par joes_bushi dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 30/08/2005, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo