Excel VBA suppression images shapes

mimi -  
belairaway Messages postés 1 Statut Membre -
Bonjour tout le monde :0)

Je voudrais supprimer par macro toutes les images importées dans une feuille
pour une image, l'instruction fonctionne
ActiveSheet.Shapes("Picture 37").Select
Selection.Delete

Mais je ne connais pas les noms des shapes (à chaque que j'importe une image, Excel incrémente le no dePicture)

je voudrais un truc du genre mais mon code ne fonctionne pas
For Each Shapes In Sheets
Selection.Delete
Next

Merci d'avance pour vos suggestions :0)

Mimi

9 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    Sub efface()
        Dim img As Object
            
        For Each img In Worksheets(1).Shapes 'ou Worksheets("nom").Shapes
         img.Delete
        Next
        
    End Sub
    
    lami20j
    17
    1. zorgloub
       
      Bonjour à tous.
      Un peu tard mais ca fait toujours du bien de trouver ce genre de solution.

      Ce code effeca parfaitement bien toutes les images de la feuille mais quel serait le code pour n'effacer que toutes les images se trouvant dans la colonne F, par exemple ?
      merci
      0
    2. ratikuss Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   262
       
      ça marche mais trop, ça supprime mes boutons aussi =/
      0
    3. belairaway Messages postés 1 Statut Membre
       
      Pareil :(

      Une idée pour ne pas supprimer les boutons ?

      Merci quand même :)
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Utilise plutôt celui là
    Option Explicit
    Option Compare Text 'insensible à la casse de caractères
    
    Sub efface()
        Dim img As Shape
            
        For Each img In Worksheets("a").Shapes
         If img.Name Like "PICTURE*" Then
            img.Delete
         End If
        Next
        
    End Sub
    
    lami20j
    11
    1. AXN Messages postés 136 Statut Membre 13
       
      Perso je cherchais à récupérer le nom du dernier graphique créé (il n'y en a qu'un par feuille) pour le manipuler (apparence, données source, etc.)

      Avec cette méthode j'y arrive, désormais.

      Merci !
      0
    2. momouiz Messages postés 35 Statut Membre 3
       
      hello lami20j, tu as l'air plutot fort en vba, voila je me permet de poser une question dans le même topic je cherche moi aussi à extraire les images sauf que cette fois ce n'est pas dans un classeur mais dans un document word, j'ai essayé de faire : for each img in DocWOrd.shapes (docword etant mon doc word ^^), mais cela ne marche pas, y a t-il une solution de possible ?
      0
  3. titi
     
    activesheet.Shapes.SelectAll
    selection.delete

    ;)
    3
    1. zorgloub
       
      Bonjour,

      et si je ne veux effacer que les images ne se trouvant que dans la colonne F, par exemple ?
      Quel serait le code ?

      Merci
      0
  4. Monsieur Dusnob
     
    Pour tester la cellule sous une shape (plus exactement la cellule située sous le coin supérieur gauche), on peut utiliser la propriété TopLeftCell de l'objet shape. À partir de là, savoir si c'est la colonne F est facile.
    2
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dabs
     
    Dim obj As Shape

    For Each obj In ActiveWorkbook.ActiveSheet.Shapes
    obj.Delete
    Next

    Ça devrait faire l'affaire !
    2
  7. Mimi
     
    Merci beaucoup pour la solution : elle fonctionne impécablement
    :0)

    personnalisé à mon onglet, cela donne :

    Dim img As Object

    For Each img In Sheets("travail").Shapes
    img.Delete
    Next

    longue vie au forum !!

    Mimi
    0
  8. Jeflehardi
     
    Merci pour la (les solutions) ! c'est exactement ce que je recherchais !
    Amicalement !
    0
  9. micaub Messages postés 36 Statut Membre
     
    @zorgloub

    J'ai bien peur que la notion d'image dans la colonne F n'ai pas lieu d'être. En effet, une image n'est pas installée dans une cellule, elle est collée par dessus la feuille, puis est positionnée (ce qui donne parfois l'illusion qu'elle se trouve dans une colonne.
    Je pense que pour supprimer ces dites images, il faudrait que tu joues dans la macro avec leur position (Top, Left...) afin de déterminer les images qui se situent au niveau de la colonne F.

    A moins que quelqu'un ai une autre idée...

    A bientôt.

    MA
    0
  10. Laurent
     
    'avec gobjSheetGraphic qui est ta worksheet courante
    gobjSheetGraphic.Shapes.SelectAll
    'avec gobjExcel qui est l'application en cours excel
    gobjExcel.Selection.Delete
    0