Bonjour,
j’ai un menu déroulant qui m’affiche des images dans une cellule en fonction de mon choix, je souhaite créer un bouton pour supprimer automatiquement cette photo de ma cellule sans avoir a cliquer dessus manuellement.
J’ai essayé avec quelques codes mais j’arrive seulement à effacer les textes que j’écris et non pas les images de ma cellule. Connaissez vous un code qui marche pour ce problème ?
La solution la plus simple que j’utilise est de supprimer la cellule de la photo
Par exemple si la photo est en cellule A8 tu utilises cette ligne de code :
Range(« A8 »).Delete Shift:=xlToLeft
Il faut que la ligne de la photo ne soit pas avec d’autre donnée après la photo sinon utiliser pour la photo la cellule de la dernière colonne de la ligne et adapter l’instruction proposée
De plus tu dois ajuster les propriétés des photos comme ceci :
Cela marche très bien comme méthode, cependant, lorsque je clique sur mon menu déroulant pour sélectionner une photo, elle ne s’affiche pas avec les bonnes propriétés dans la case de sortie. En gros, dans la colonne avec toutes mes images, j’ai les bonnes propriétés comme vous m’avez montré mais dès que je clique dans mon menu déroulant, la photo qui sort n’a pas ces propriétés et n’est donc pas supprimé par la ligne de code.
Bonjour
Le fait de cliquer sur un choix d un menu déroulant doit déclencher une procédure pour récupérer la photo correspondante et la mettre dans la cellule de destination
Il faudrait que je connaisse cette procédure et de savoir comment elle effectue cette opération mais logiquement celle ci doit concerver les propriétés de la photo initiale
Donc si celles ci sont bien paramétrées à l origine cela doit fonctionner
Envoie moi un exemplaire de ton fichier sans donnée confidentiele que j analyse et te dise
Rajoute avec la ligne de code de suppression de la cellule ces lignes :
For Each Sh In ActiveSheet.Shapes
Sh.Placement = xlMoveAndSize
Next
Touts les objets Shapes seront mis avec la bonne propriété et ainsi de pouvoir supprimer ton image avec l’instruction
Range(« A8 »).Delete Shift:=xlToLeft
ce qui donne ceci :
For Each Sh In ActiveSheet.Shapes
Sh.Placement = xlMoveAndSize
Next
Range(« A8 »).Delete Shift:=xlToLeft
Si dans la feuille tu as d’autres objet Shape autres que les images (Bouton de commande image texte etc…) et si tu souhaites qu’elles ne soient concernées par ce changement il faudra jouer sur le nom de ces images pour filtrer cette action sur les bons Shapes
Donnes moi la structure de leur nom afin que je trouve un élément qui les cible
Et oui c’est ce que je craignais il n’y a pas que les images en objet Shape sur l’onglet traité il y a aussi un bouton « Reset warm up 1 » qui est lui aussi un objet Shape
Donc ma boucle proposée agit aussi sur celui-ci ce qui déclenche le bug car ses propriétés ne sont pas gérées de la même façon
J’ai rajouté une ligne de code se basant sur son nom pour l’exclure de la boucle
Et cela fonctionne
Cela marche bien pour la photo deja dans la cellule A8 mais dès que je sélectionne dans mon menu déroulant une autre image, il y a une erreur dans le code apparemment.
Un autre objet Shapes dans l’onglet perturbe le traitement je l’ai aussi filtré
Après plusieurs essais tout semble fonctionner normalement
Ressaies de ton côté et dis moi
Ca marche très bien merci ! Si maintenant je veux ajouter d’autres boutons « reset » comme celui la 5 ou 6 fois en dessous, y-a-t-il des choses a changer dans le code ou uniquement les cellules que je veux effacer ?
Bonjour
Merci du retour
Pour l’ajout des boutons il faut vérifier leur nom
si ceux ci commence par « Bouton » rien à modifier dans le code ils sont tous filtrés
Sinon il faut agir sur cette ligne :
If Sh.Name Like « Bouton* » = False And Sh.Name Like « Drop Down* » = False Then
Par exemple le nom commence par « Toto » il faut écrire la ligne comme ceci :
If Sh.Name Like « Bouton* » = False And Sh.Name Like « Drop Down* » = False And Sh.Name Like « Toto* » = False Then
Il me reste maintenant à optimiser ma feuille et surtout trouver un moyen plus facile de remplir mes 36 cases d’images dans mon tableau. Car pour le moment la seule solution que j’ai, est de changer les cellules dans le code pour la sortie de l’image.
Si vous connaissez un moyen plus rapide que celui la sans trop toucher à l’organisation existante, je suis preneur
Pour la suppression des images
ci-joint une solution qui t’évitera d’intervenir dans le code
Juste à sélectionner une cellule sur la même ligne que celle de l’image avant de cliquer sur le bouton
Un message de confirmation indiquant le numéro de la ligne objet de la suppression de l’image et du texte ligne suivante avant son exécution
Pour remplir tes images il est possible d’utiliser ce même artifice avec la sélection d’une cellule de la ligne concernée par l’ajout de l’image avec ou sans confirmation du numéro de cette ligne
au choix N4 une boîte de dialogue demande le numéro de la ligne
L’image est inséré sur cette ligne en colonne A et son texte sur la ligne du dessous de cette colonne
Le traitement est annulé si aucune saisie ou saisie non numérique
Testes et dis moi
Bonsoir FFO,
Je te félicite de ta persistance pour la correction et l’amélioration de ce classeur,
Mais, ce n’est que mon avis, les images dans EXCEL, on les gères sur un dossier qui lui sera attribué
Déjà sur ce classeur, sans donnée pour ainsi dire 3.1 Mo, c’est trop lourd en gestion
Je n’ai pas tout suivi car il y a beaucoup de zone d’ombre dans la compréhension du programme, mais il y a surement possibilité de le gérer autrement.
Mais si le demandeur est heureux, c’est le principal
Il me faut des précisions quant à ce que tu veux mettre dans les autres colonnes
Sont elles à remplir en même temps ou de manière spécifique ?
Pour cette 2° option attention de ne pas utiliser les mêmes lignes car la procédure de suppression comme son nom l’indique supprime les cellules donc décalerait les éventuelles images situées après sur ces mêmes lignes
Sur la base du choix réalisé en N4 ?