Microsoft 365 Extraire texte de toutes les zones de texte

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

  • Organigramme_test.xlsx
    33.7 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Organigramme_test.xlsm
    40.4 KB · Affichages: 1

julien91080

XLDnaute Occasionnel
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
 

patricktoulon

XLDnaute Barbatruc
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
;)
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 138
Membres
112 669
dernier inscrit
Guigui2502