Supprimer uniquement les formes (shapes) contenant du texte

Bonjour à toutes et tous,

J'ai pu grâce à ce forum récupérer des codes pour supprimer toutes les formes d'un classeur ou de la feuille active.

Auriez vous une solution pour une suppression sélective des formes et notamment dans mon cas uniquement celles contenant du texte.

Je joins un classeur exemple.

Merci

Très cordialement

Hugues

Bonsoir le forum

Bonsoir HUGOBASS

Essais ceci (Nom de feuille à adapter) :

Sub efface()
 Dim sh As Shape
    For Each sh In Sheets("Feuil1").Shapes
     If sh.DrawingObject.Text <> "" Then sh.Delete
    Next sh
End Sub

Bonsoir,

ci-dessous code

Sub Boucle()
    Dim wks As Worksheet
    Dim sh As Shape

    For Each wks In Worksheets
        For Each sh In wks.Shapes
            If sh.TextFrame2.HasText Then sh.Delete
        Next sh
    Next wks

End Sub

Bonjour toutes et tous, bonjour Ericcool02 etThev,

Ericcool02 etThev,

Tout d'abord merci pour la rapidité de vos retour à contrario du mien.

Ensuite un autre merci car vos 2 propositions que j'ai adapté pour agir uniquement sur la feuille active (c'est ce qui sera le besoin dans le classeur final)

Je me permet de vous solliciter à nouveau de clôturer ce post en résolu en rajoutant 3 questions pour aller un peu plus loin dans l'approche de mon classeur final :

1 Auriez vous une solution pour supprimer le texte de la forme et pas pas forme complète ?

2 Auriez vous une solution pour remplacer les textes des formes par un autre ?

3 Auriez vous une solution pour lister le nom de toutes les formes et leur contenu sur une autre feuille à créer (Et si possible le graal un lien hypertexte pointant vers les formes listées ?

Merci

Très cordialement

Hugues

Bonsoir le forum

Bonsoir le fil

En réponse à tes 2 premiers points :

1/

Sub Efface()

ActiveSheet.Shapes("Rectangle 3").Select

Selection.Characters.Text = ""

End Sub

2/

Sub Remplace()

ActiveSheet.Shapes("Rectangle 3").Select

Selection.Characters.Text = "Bonjour"

End Sub

3/ Je t'engage à aller voir ce site du regretté Jacques BOISGONTIER pour y trouver (je l'espère) ta solution : http://boisgontierj.free.fr/

Bonne soirée

Bonjour,

ci-jointe une proposition pour répondre à tes différents points

Sub Boucle()
    Dim wks As Worksheet, wks_new As Worksheet
    Dim sh As Shape, sh_range As Range
    Dim i As Integer: i = 0

    For Each wks In Worksheets

        For Each sh In wks.Shapes

            'suppression texte au premier passage et remplissage texte au second passage
            With sh.TextFrame2
                If .HasText Then
                    .DeleteText
                Else
                    On Error Resume Next
                    With .TextRange
                        If Err.Number = 0 Then .Text = "Blabla"
                    End With
                    On Error GoTo 0
                End If
            End With

            'création liste et contenu des formes sur ine nouvelle feuille
            With sh
                Set sh_range = Range(.TopLeftCell, .BottomRightCell)
            End With

            If wks_new Is Nothing Then Set wks_new = Worksheets.Add
            With wks_new
                .Hyperlinks.Add Anchor:=.Range("A1").Offset(i), Address:="", SubAddress:=sh_range.Address(1, 1, 1, 1), TextToDisplay:=sh.Name
                On Error Resume Next
                .Range("B1").Offset(i) = sh.TextFrame2.TextRange.Text
                On Error GoTo 0
                i = i + 1
            End With

        Next sh

    Next wks

End Sub

Re le fil

Bravo thev

Je ne suis qu'un petit joueur qui s'amuse dans la cour des grands. Bravo et encore

Bonjour toutes et tous, bonjour Ericcool02 etThev,

Ericcool02 etThev, merci beaucoup pour votre second retour qui de nouveau répond avec les bonnes solutions à mes questions (Ericcool02, pour moi petit joueur même pas titulaire de départemental vous êtes tous les 2 en ligue 1 ).

Je rencontre sur mon fichier base finale, un petit soucis versus la liste des SHAPES (Thev cela fonctionne parfaitement sur le classeur test initialement envoyé) qui ne doit pas être structuré sur les SHAPES comme dans mon classeur exemple.

Je joins donc un second classeur contenant un masque de carte de France (récupéré sur le net) que je cherche à personnaliser et dans ce cas, le code de Thev pour la liste des shapes me renvois uniquement une seule shapes (group3) comme si la shape contenait elle même des sous shapes non listées (c'est ce que je déduis et je n'arrive pas à adapter le code ). Auriez vous un avis et solution sur ce point ?

Encore merci

Très cordialement

Hugues

Re le forum

Re le fil

Un fichier de Tatiak Pierre (développeur) - Site mentionné dans le fichier et rappelé ICI .

Bonne dégustation - J'ai ajouté le fichier de notre ami thev.

Bonjour à toutes et tous, Bonjour Ericcool02,

Ericcool02, merci pour ta réponse, je ne peux malheureusement pas utiliser le fichier de Tatiak que tu me transmets directement sous ma machine de travail principal (sous Mac et donc certaines incompatibilité de mon Excel 365 notamment les Active X), je vais quand même regarder ce soir à partir d'une machine équipé Excel Windows.

C'est pourquoi depuis quelques temps je travail sur un fichier de personnalisation d'une carte de France et le besoin spécifique cité dans ce post dans la gestion des SHAPES adaptées à mon besoin. Et dans le dernière question postée si possible de lister les SHAPES de mon dernier fichier exemple.En tous cas merci à toi de ton aide et de me proposer plusieurs pistes et déjà des solutions.

Merci

Très cordialement

Hugues

Bonsoir,

ci-jointe une proposition

Bonjour toutes et tous, bonjour Ericcool02 etThev,

Ericcool02 etThev, un énième merci en clôture de ce post que je vais pointé en résolu grâce à ta dernière contribution remarquable Thev.

Un pas de plus vers mon projet final, et celui-ci sur la gestion des SHAPES versus mon besoin est un pas de géant.

Merci

Très cordialement

Hugues

Rechercher des sujets similaires à "supprimer uniquement formes shapes contenant texte"