Supprimer des formes dans une cellule

Bonjour tout le monde,

J'ai besoin d'aide pour une macro que je galère à créer. J'aimerai supprimer les formes (icones) dans une seule cellule si une autre est vide. Ma cellule en question est une fusion de plusieurs cellules. C'est-à-dire que si H18 est vide j'aimerai que toutes les formes dans "I10:I18" soient supprimées. Quelqu'un sait comment je peux faire ça svp ?

Bonne soirée à vous.

Merci.

Bonjour Yas13579,

Ces icônes ne proviennent pas d'une MFC. Et les cellules I10:I18 sont celles qui sont fusionnées?

Bonsoir X Cellus,

Merci pour ta réponse, les icônes ne proviennent pas d'une MFC, c'est un copier coller d'une autre page quand une cellule est égale à une certaine valeur. Effectivement, les cellules I10:I18 sont celles qui sont fusionnées.

Donc s'il y a plusieurs icônes, elles peuvent se placer de I10 jusquà I18. C'est cela ou il y a une limite au nombre d'icônes.

Des fois une icône des fois deux dans I10 jusqu'à I18 mais c'est deux maximum.

Pour quelle raison tu as fusionné ces cellules? Car on peut placer une forme à une cellule particulière.

Par exemple, pour I10, on peut faire Sheets("Untel").Shapes("Icone10").Top = Range("I10").Top

Pour mieux délimiter les chapitres. Chaque icône est assignée à un chapitre. Ce n'est donc pas possible de les supprimer dans des cellules fusionnées ?

A nouveau,

En fait pour supprimer il faut connaître soit le nom de la forme, par exemple Icone10. Soit son emplacement dans une cellule.

Or dans des cellules fusionnées, dans ce dernier cas c'est la première cellule, donc la case I10 qui peut être ciblée. Les autres sont comme "cachées".

Une autre solution est de ne pas supprimer tes icônes mais de les rendre invisibles. Donc Shapes("Icone10").visible = False

Ainsi tu peux faire une boucle sur le nombre d'icônes qui sont visibles et les rendre invisibles. Ainsi rien ne se verra sur la cellule fusionnée.

Merci beaucoup pour ta solution je n'y avais pas pensé

Ravi de t'avoir aidé. A une prochaine fois.

Bonjour,

Voici une proposition en fonction des positions des formes, sachant que l'idéal serait quand même d'avoir des noms avec un dénominateur commun...

Sub SuppFormes()

Dim sh as shape

With Sheets("mafeuille") 'avec ma feuille >>> ADAPTER NOM DE FEUILLE
    if .range("H18").value = "" then 'si H18 vide
        for each sh in .shapes 'pour chaque forme de la feuille
            if sh.top >= range("I10").top and sh.top < range("I19").top and _
                sh.left >= range("I10").left and sh.left < range("J10").left then 'si entre I10 et I19 (hauteur) et entre I et J (largeur)
                    sh.visible = false 'rendues invisible !
                    'sh.delete 'sinon supprimées
                end if
            end if
        next sh
    end if
end with

End sub

Ce n'est pas testé donc à voir...

Cdlt,

Bonsoir 3GB,

Merci beaucoup pour ta réponse mais j'ai testé et ça ne marche pas

Tu as testé et ça marche pas ? Mais ça bug, il se passe rien ? H18 est bien vide ?

Mais c'est pas grave de toute façon, je n'avais pas vu que tu avais trouvé la solution quand j'ai répondu...

Cdlt,

En faite je viens de changer les signes c'était plutôt sh.Top >= Range("I10").Top And sh.Top < Range("I19").Top. Et du coup ça marche très bien maintenant merci beaucoup

Ah oui, en effet, bien joué !

Content que ça marche en tout cas,

A plus,

Rechercher des sujets similaires à "supprimer formes"