Sélection d'images seulement

Y compris Power BI, Power Query et toute autre question en lien avec Excel
R
Ragus1970
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 4 octobre 2016
Version d'Excel : 2007

Message par Ragus1970 » 14 février 2019, 11:13

Bonjour,

Sur une feuille Excel, j'ai 2 boutons et une colonne qui contient des images (dont le nb et les noms ne sont pas toujours les mêmes).
Je veux supprimer les images mais pas les boutons.

J'ai essayé cela :
ActiveSheet.Pictures.Select 
mais ça me sélectionne aussi les boutons

J'ai essayé de sélectionner les boutons et les images : OK, puis de désélectionner les 2 boutons :
ActiveSheet.Shapes("btNettoyage").Deselect mais le VBA n'en veut pas (unselect non plus)

Help !
Avatar du membre
LouReeD
Passionné d'Excel
Passionné d'Excel
Messages : 5'446
Appréciations reçues : 209
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Téléchargements : Mes applications
Contact :

Message par LouReeD » 14 février 2019, 11:18

Bonjour,

Faire une boucle sur les objets, et si le nom de l'objet est différent et du nom du premier bouton et du nom du deuxième bouton alors effacer l'objet...

Faire une sauvegarde du fichier avant :wink:

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
_______________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
R
Ragus1970
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 4 octobre 2016
Version d'Excel : 2007

Message par Ragus1970 » 14 février 2019, 12:01

Salut,

Merci pour ta réponse, les images sont nommées de cette façon :
"Image 30" ou 31, 32 ect...

ActiveSheet.Shapes("Image 11").Select
: c'est OK
Mais pour toutes les sélectionner, je ne sais pas faire, il n'y a pas une commande du type :
ActiveSheet.Shapes("Image *").Select
?
Sinon par boucle, je ne voit pas non plus comment, j'ai essayé cela :
For c = 31 To 35
    ActiveSheet.Shapes("Image " & c).Select
Next c
mais il ne me sélectionne que le dernier (Image 35) et puis si l'élément n'existe pas, j'ai un msg d'erreur !
Avatar du membre
LouReeD
Passionné d'Excel
Passionné d'Excel
Messages : 5'446
Appréciations reçues : 209
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Téléchargements : Mes applications
Contact :

Message par LouReeD » 14 février 2019, 16:28

La boucle n'est pas fausse il faut juste mettre le Delette à l'intérieur...
Pas facile je suir tel....
Dim LRD as Objet
For Each LRD in ActiveSheet.Objects
If Left(LRD.Name,5) = "Image" Then
LRD. Delette
End If
Next
Un truc comme ça...

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
_______________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
R
Ragus1970
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 4 octobre 2016
Version d'Excel : 2007

Message par Ragus1970 » 15 février 2019, 10:58

Merci,

Je n'y arrive pas comme cela mais c'est pas grave, étant donné que les noms et le nombre d'images changent, ça risque d'être coton !
Je vais plutôt tout sélectionner (images et boutons) puis désélectionner seulement les 2 boutons.
Par contre je n'arrive pas a trouver la commande pour désélectionner, un truc du genre :
ActiveSheet.Shapes("btNettoyage").Deselect
Avatar du membre
LouReeD
Passionné d'Excel
Passionné d'Excel
Messages : 5'446
Appréciations reçues : 209
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Téléchargements : Mes applications
Contact :

Message par LouReeD » 15 février 2019, 17:05

Bonsoir,

sans fichier... Sinon ci joint :
Supprime.xlsm
(465.58 Kio) Téléchargé 3 fois
un fichier où cela fonctionne, il y a 9 image mises sur la feuille par "insertion Image" et deux boutons de formulaire par le menu développeur insérer un bouton de formulaire.
L'idée est là ;-)

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
_______________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'282
Appréciations reçues : 401
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 15 février 2019, 17:41

Bonjour,
Bonjour LouReed,
Un exemple à adapter.
Cdlt.
Public Sub DeletePictures()
Dim shp As Shape
    Application.ScreenUpdating = False
    For Each shp In ActiveSheet.Shapes
        'MsoShapeType enumeration : 13 = msoPicture
        If shp.Type = 13 Then shp.Delete
    Next shp
End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
R
Ragus1970
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 4 octobre 2016
Version d'Excel : 2007

Message par Ragus1970 » 18 février 2019, 09:38

Merci LouReed, ça marche au poil
Bonne journée à tous

Je cloture
Avatar du membre
LouReeD
Passionné d'Excel
Passionné d'Excel
Messages : 5'446
Appréciations reçues : 209
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Téléchargements : Mes applications
Contact :

Message par LouReeD » 18 février 2019, 14:08

Remerciez Jean-Éric pour son code propre ;-)

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
_______________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
R
Ragus1970
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 4 octobre 2016
Version d'Excel : 2007

Message par Ragus1970 » 18 février 2019, 14:15

Exact, merci Jean-Eric aussi !

Avais pas vu que ce n'était pas LouReed sur le dernier msg
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message