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

Microsoft 365 Extraire texte de toutes les zones de texte

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 !

julien91080

XLDnaute Occasionnel
Bonjour à la communauté,

Malgré plusieurs heures de recherche, je ne trouve hélas pas mon bonheur.

J'ai un fichier contenant un grand nombre de zone de texte de type organigramme répartis selon des niveaux.

j'aimerais extraire chaque valeur de chaque zone de texte dans une cellule unique (ligne par ligne) et si possible de connaitre le "niveau" où se situait la personne.

je me suis permis de vous mettre ci joint un ficher test avec le résultat que je souhaite.

Merci 1000 fois pour votre aide.

Cordialement,

Julien
 

Pièces jointes

Bonjour,
L'idée serait que ça se fasse automatiquement/avec une routine puisque le fichier d'origine contient plus de 3000 zones de texte. Je me demandais donc s'il existait un moyen d'éviter de le faire manuellement.

Cordialement,
 
Bonjour Julien, Djidji,
Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
Dim Ligne%, L%, F, strNomForme, strAdresseCellule
[A2:D1000].ClearContents
Ligne = 2: Set F = Sheets("Orga complete")
For Each img In F.Shapes
    strNomForme = img.Name
    strAdresseCellule = CStr(F.Shapes(strNomForme).TopLeftCell.Address)
    L = Split(strAdresseCellule, "$")(2)
    Cells(Ligne, "A") = F.Cells(L - 2, "B") & F.Cells(L - 1, "B") & F.Cells(L, "B") & F.Cells(L + 1, "B") & F.Cells(L + 2, "B")
    Cells(Ligne, "B") = img.TextFrame2.TextRange.Text
    ' Cells(Ligne, "C") = strAdresseCellule ' A valider si on veut l'adresse de la cellule.
    ' Cells(Ligne, "D") = strNomForme       ' A valider si on veut le nom du shape.
    Ligne = Ligne + 1
Next
End Sub
( cela suppose que le niveau soit dans une des cellules L-2 à L+2 si le shape est détecté en ligne L )
La macro est automatique lorsqu'on sélectionne la feuille Résultat.
 

Pièces jointes

Bonjour Sylvanu,

Merci pour t'être posé sur mon projet.
La macro ne fonctionne malheureusement pas sur mon fichier d'origine, j'ai le message suivant:

Erreur d'execution '-2147024809 (80070057)
La valeur tapée est en dehors des limites

en débogage j'ai sur la ligne de code suivant l'erreur:
Cells(Ligne, "B") = img.TextFrame2.TextRange.Text


Cordialement
 
bonjour
une petite astuce qui va arranger tout le monde
en effet es propriété text de shapes selon la version devront passer par textrange ou characters
l'astuce pour satisfaire tout le monde c'est de passer par la collection drawingobjects
comme ça on passe par la propriété text directement
VB:
Sub Worksheet_Activate()
Dim Ligne%, L%, F, strNomForme, strAdresseCellule, img As Object
[A2:D1000].ClearContents
Ligne = 2: Set F = Sheets("Orga complete")
For Each img In F.DrawingObjects
    strNomForme = img.Name
    strAdresseCellule = CStr(F.Shapes(strNomForme).TopLeftCell.Address)
    L = Split(strAdresseCellule, "$")(2)
    Cells(Ligne, "A") = F.Cells(L - 2, "B") & F.Cells(L - 1, "B") & F.Cells(L, "B") & F.Cells(L + 1, "B") & F.Cells(L + 2, "B")
    On Error Resume Next
    Cells(Ligne, "B") = img.Text
    Ligne = Ligne + 1
Next
End Sub
c'est d'ailleurs valable pour d'autre propriété l'accès en est plus simple
😉
 
- 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

Discussions similaires

N
Réponses
19
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…