Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Effacer un Objet Graphique avec une macro VBA

3 réponses
Avatar
gege0859
Boujour à tous,

J'ai un gros souci avec une feuille et des macros VBA
ma feuille contient à la fois des liste de validation (pour choisir entre
plusieurs valeurs)
et des objests graphiques d'illustration (groupement de lignes et fléches)

en fonction de certains choix je souhaite que la macro
efface un certain objet graphique et le remplace par un autre

j'ai essayé avec la commande suivante
nbre = ActiveSheet.Shapes.Count
ActiveSheet.Shapes(nbre).Select
Selection.Delete

Le probleme est que parfois la macro efface les fleches de défilement à
droite des cellules avec liste de validation
y-a-t-il un moyen de ne sélectionner, pour les effacer, que les objets
graphiques qui se trouvent dans une plage donnée de la feuille ?

nota : la commande
ActiveSheet.Range("B20:K50").Shapes(nbre).Select
ne fonctionne pas

merci d'avance
gege

3 réponses

Avatar
Daniel
Bonjour.
Essaie :
If ActiveSheet.Shapes(nbre).Type <> 8 Then ActiveSheet.Shapes(nbre).Delete
Cordialement.
Daniel
"gege0859" a écrit dans le message de news:

Boujour à tous,

J'ai un gros souci avec une feuille et des macros VBA
ma feuille contient à la fois des liste de validation (pour choisir entre
plusieurs valeurs)
et des objests graphiques d'illustration (groupement de lignes et fléches)

en fonction de certains choix je souhaite que la macro
efface un certain objet graphique et le remplace par un autre

j'ai essayé avec la commande suivante
nbre = ActiveSheet.Shapes.Count
ActiveSheet.Shapes(nbre).Select
Selection.Delete

Le probleme est que parfois la macro efface les fleches de défilement à
droite des cellules avec liste de validation
y-a-t-il un moyen de ne sélectionner, pour les effacer, que les objets
graphiques qui se trouvent dans une plage donnée de la feuille ?

nota : la commande
ActiveSheet.Range("B20:K50").Shapes(nbre).Select
ne fonctionne pas

merci d'avance
gege



Avatar
JB
Bonjour,

Suppression de shapes dans un champ:

For Each s In ActiveSheet.Shapes
If Not Intersect(s.TopLeftCell, Range("$A$1:$D$20")) Is Nothing Then
s.Delete
End If
Next s

Sub shapestype()
i = 2
For Each s In ActiveSheet.Shapes
Cells(i, 1) = s.Type
Cells(i, 2) = s.Name
i = i + 1
Next s
End Sub

http://boisgontierj.free.fr/fichiers/jb-shapes.zip

Cordialement JB

On 24 jan, 10:29, "gege0859" wrote:
Boujour à tous,

J'ai un gros souci avec une feuille et des macros VBA
ma feuille contient à la fois des liste de validation (pour choisir ent re
plusieurs valeurs)
et des objests graphiques d'illustration (groupement de lignes et fléch es)

en fonction de certains choix je souhaite que la macro
efface un certain objet graphique et le remplace par un autre

j'ai essayé avec la commande suivante
nbre = ActiveSheet.Shapes.Count
ActiveSheet.Shapes(nbre).Select
Selection.Delete

Le probleme est que parfois la macro efface les fleches de défilement à
droite des cellules avec liste de validation
y-a-t-il un moyen de ne sélectionner, pour les effacer, que les objets
graphiques qui se trouvent dans une plage donnée de la feuille ?

nota : la commande
ActiveSheet.Range("B20:K50").Shapes(nbre).Select
ne fonctionne pas

merci d'avance
gege


Avatar
gege0859
Merci Daniel et JB,

En feuilletant les news j'ai trouvé un exemple assez similaire (gilles du
29/12/2006)
et j'ai trouvé une solution qui fonctionne avec le code suivant :

With Sheets("Cuite")
.Select
.Range("B30:L60").Select
For Each sh In .Shapes
On Error Resume Next
If Not Intersect(.Range("B30:L60"), sh.BottomRightCell) Is Nothing
Then
sh.Select Replace:úlse
End If
Next sh
End With
Selection.Delete

J'ai toutefois du ajouter la ligne On error Resume Next car parfois ce code
(la ligne IFNot..) renvoie une erreur 1004. Pourquoi ? mystère pour moi.

gege


"Daniel" a écrit dans le message de news:

Bonjour.
Essaie :
If ActiveSheet.Shapes(nbre).Type <> 8 Then ActiveSheet.Shapes(nbre).Delete
Cordialement.
Daniel
"gege0859" a écrit dans le message de news:

Boujour à tous,

J'ai un gros souci avec une feuille et des macros VBA
ma feuille contient à la fois des liste de validation (pour choisir entre
plusieurs valeurs)
et des objests graphiques d'illustration (groupement de lignes et
fléches)

en fonction de certains choix je souhaite que la macro
efface un certain objet graphique et le remplace par un autre

j'ai essayé avec la commande suivante
nbre = ActiveSheet.Shapes.Count
ActiveSheet.Shapes(nbre).Select
Selection.Delete

Le probleme est que parfois la macro efface les fleches de défilement à
droite des cellules avec liste de validation
y-a-t-il un moyen de ne sélectionner, pour les effacer, que les objets
graphiques qui se trouvent dans une plage donnée de la feuille ?

nota : la commande
ActiveSheet.Range("B20:K50").Shapes(nbre).Select
ne fonctionne pas

merci d'avance
gege