OVH Cloud OVH Cloud

Suppression Rectangle sur une ligne

4 réponses
Avatar
Caroual
Bonjour,
J'ai créé une sorte de gant. A chaque ligne j'ai une date début et une date
fin et un rectangle se créée sur cette ligne en fonction de ces dates.
Je voudrais savoir s'il est possible en vba de supprimer un rectangle qui se
trouve dans une ligne.

J'ai essayé :
rows(1).clear
mais cela ne supprime pas les objets.
J'ai d'autres rectangles dans ma feuille que je ne veux pas supprimer.

merci de votre aide
Caroual

4 réponses

Avatar
JB
Bonsoir,

For Each s In ActiveSheet.Shapes
If s.TopLeftCell.Row =1Then s.Delete
Next s

JB


Bonjour,
J'ai créé une sorte de gant. A chaque ligne j'ai une date début et une date
fin et un rectangle se créée sur cette ligne en fonction de ces dates.
Je voudrais savoir s'il est possible en vba de supprimer un rectangle qui se
trouve dans une ligne.

J'ai essayé :
rows(1).clear
mais cela ne supprime pas les objets.
J'ai d'autres rectangles dans ma feuille que je ne veux pas supprimer.

merci de votre aide
Caroual


Avatar
MichDenis
Il est difficule de savoir comment tu veux que ton programme s'articule...
si possible, publie sur cjoint.com une toute petite partie de ton classeur(feuille)
pour voir la disposition des éléments, le tout complété par des explications
sur la façon que tu voudrais automatiser la chose

Voici un petit exemple de code à partir de ta question :

Ceci supprime (affiche le message du rectangle à supprimer) tous les "Rectangles" (seulement les
rectangles)
sur la ligne 1 (rows(1)) qu'il y a dans ta feuille.

Le code doit être copié dans le module feuille où l'action se déroule

Pour être détruit, le rectangle doit toucher à la ligne 1
As-tu un ou d'autres critères spécifiques ?
'-----------------------------------------
Sub test()

Dim x As MsoAutoShapeType
x = msoShapeRectangle
Dim Sh As Shape
Dim Rg As Range

For Each Sh In Me.Shapes
With Sh
Set Rg = Range(.TopLeftCell, .BottomRightCell)
If Not Intersect(Rg, Rows(1)) Is Nothing Then
If Sh.AutoShapeType = x Then
MsgBox "Détruire " & Sh.Name
'Sh.Delete
End If
End If
End With
Next

End Sub
'-----------------------------------------




"Caroual" a écrit dans le message de news:
4548de84$0$5105$
Bonjour,
J'ai créé une sorte de gant. A chaque ligne j'ai une date début et une date
fin et un rectangle se créée sur cette ligne en fonction de ces dates.
Je voudrais savoir s'il est possible en vba de supprimer un rectangle qui se
trouve dans une ligne.

J'ai essayé :
rows(1).clear
mais cela ne supprime pas les objets.
J'ai d'autres rectangles dans ma feuille que je ne veux pas supprimer.

merci de votre aide
Caroual
Avatar
Caroual
La réponse JB est parfaite, cela marche très bien
merci
Caroual
"JB" a écrit dans le message de news:

Bonsoir,

For Each s In ActiveSheet.Shapes
If s.TopLeftCell.Row =1Then s.Delete
Next s

JB


Bonjour,
J'ai créé une sorte de gant. A chaque ligne j'ai une date début et une
date
fin et un rectangle se créée sur cette ligne en fonction de ces dates.
Je voudrais savoir s'il est possible en vba de supprimer un rectangle qui
se
trouve dans une ligne.

J'ai essayé :
rows(1).clear
mais cela ne supprime pas les objets.
J'ai d'autres rectangles dans ma feuille que je ne veux pas supprimer.

merci de votre aide
Caroual


Avatar
MichDenis
Une petite question : Pourquoi faire référence aux "Rectangles" seulement dans ta question
si tu acceptes que n'importe quel shape peut être supprimer si elle touche à la ligne 1 par exemple

Observe ce qui se passe si tu as des commentaires en ligne 1 par exemple !




"Caroual" a écrit dans le message de news:
4548fd0a$0$27391$
La réponse JB est parfaite, cela marche très bien
merci
Caroual
"JB" a écrit dans le message de news:

Bonsoir,

For Each s In ActiveSheet.Shapes
If s.TopLeftCell.Row =1Then s.Delete
Next s

JB


Bonjour,
J'ai créé une sorte de gant. A chaque ligne j'ai une date début et une
date
fin et un rectangle se créée sur cette ligne en fonction de ces dates.
Je voudrais savoir s'il est possible en vba de supprimer un rectangle qui
se
trouve dans une ligne.

J'ai essayé :
rows(1).clear
mais cela ne supprime pas les objets.
J'ai d'autres rectangles dans ma feuille que je ne veux pas supprimer.

merci de votre aide
Caroual