Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Manipuler une (sous)zone de texte appartenant à un groupe (de zones de texte)

  • Initiateur de la discussion Initiateur de la discussion guigol
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

guigol

Guest
Bonjour,

J'ai un fichier excel (généré par macro) qui contient beaucoup de zones de texte (qui finissent par "_1", "_2"ou "_3") que j'ai groupées lot par lot (qui commencent par "PB_") :


J'aimerais récupérer les données contenues dans les zones de texte qui finissent par "_3" et dont la zone de texte finissant par "_2" est égale à OK.
Par exemple, ci-dessus, j'aimerais récupérer "texte 3". mais pas "Texte 6"

Voici le code que j'ai écrit :
Code:
    For Each S In ActiveSheet.Shapes                   'Je parcours l'ensemble des shapes de ma feuille
            If Left(S.Name, 3) = "PB_" Then                                      'Je fais le tri sur uniquement les groupes commencant par PB_ parce que j'ai aussi d'autres shapes dans mon fichier (images, flèches, ...) --> OK
                Identifiant_PB = Right(S.Name, Len(S.Name) - 3)         'Je récupère l'identifiant du bloc --> OK
                S.Range(Identifiant_PB & "_2").Select                          'J'essaye de selectionner le sous-bloc finissant par _2. --> NOK
                If S.Range(Identifiant_PB & "_2").TextFrame2.TextRange.Characters.Text = "OK" Then                              'Je teste si le sous-bloc finissant par _2 est égal à "OK" --> NOK
                    Contenu_PB = S.Range(Identifiant_PB & "_3").TextFrame2.TextRange.Characters.Text                           'Je stocke le contenu du sous-bloc finissant par _3 dans une variable --> NOK
                
                End If
            End If
    Next S

Dans ce code, tant que je manipule le groupe, pas de souci.
dès que j'essaye d'atteindre une sous zone --> Echec

Une idée?
 
Bonsoir,

Si les noms sont uniques sur la feuille (pas seulement dans le groupe), alors votre shape peut être référencé par : ActiveSheet.Shapes(Identifiant_PB & "_2"))

Ou sans doute par S.Parent.Shapes(Identifiant_PB & "_2")) où .Parent est normalement la feuille parente du groupe S

Bonne soirée
 
Merci à vous.
J'ai trouvé l'erreur.

En écrivant S.Range(Identifiant_PB & "_2").Select, j'essayais de trouver la zone de texte Identifiant_PB & "_2" situé dans le shape S.

Hors S était celle d'a coté.

VB:
For Each S In ActiveSheet.Shapes
            If Left(S.Name, 3) = "PB_" Then
                Identifiant_PB = Right(S.Name, Len(S.Name) - 3)
                Fichier_Synoptique.Sheets(1).Shapes.Range(Identifiant_PB & "_2").Select
                If Fichier_Synoptique.Sheets(1).Shapes.Range(Identifiant_PB & "_2").TextFrame2.TextRange.Characters.Text = "OK" Then
                    Contenu_PB = Fichier_Synoptique.Sheets(1).Shapes.Range(Identifiant_PB & "_3").TextFrame2.TextRange.Characters.Text
              
                End If
            End If
    Next S
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…