VBA récupérer texte de boîtes de texte

C

C@thy

Guest
Bonjour!

Je cherche à lister le contenu de toutes les boîtes de textes de différentes feuilles (17 exactement, dont le nom commence par Notice) dans un onglet Feuil1 comme suit :
1ère zone de texte en A2, 2ème en B2...pour la 1ère feuille,
puis 1ère ZDT en A3, 2ème ZDT en B3 pour la 2ème feuille etc...
(la ligne 1 étant réservée aux libellés).
(exemple en fichier joint).

les ZDT ont des noms qui ne sont pas dans l'ordre (la 1ère s'appelle Zone de texte 1, la 2ème Zone de texte 4, la 3ème Zone de texte 2...pratique!!! et encore, si elles sont toutes dans le même ordre sur chacune des feuilles! (je crois que oui).

La 1ère feuille est une feuille Sommaire, puis, après mes 17 feuilles Notice, j'ai un certain nombre de feuilles, avec des photos d'objets et de bâtiments. (ça, c'est pour planter le décor!)

Du fait que les n°s de mes ZDT ne sont pas dans l'ordre et ne se suivent pas (trous), j'ai cherché à faire un truc du genre :
for each zdt in activeSheet.Shapes,
mais je n'y arrive pas vraiment, alors j'ai tenté une formule XL pour récupérer tout ce qui est derrière le :
=SI(ESTERREUR(CHERCHE(':';A1));A1;SI(ESTERREUR(DROITE(A1;NBCAR(A1)-CHERCHE(':';A1)-1));'';DROITE(A1;NBCAR(A1)-CHERCHE(':';A1)-1)))
mais c'est de la 'bidouille'.

Pouvez-vous me donner un petit coup de pouce pour me sortir de cette panade???:eek:

Avec tous mes remerciements à celles et ceux qui voudront bien se pencher sur mon problème..

C@thy B) [file name=JoseTest.zip size=31936]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JoseTest.zip[/file]
 

Pièces jointes

  • JoseTest.zip
    31.2 KB · Affichages: 28

Luki

XLDnaute Accro
bonjour c@thy,

une ptite macro pour lister toutes zones textes d'une feuille dans une msgbox. te reste à l'adapter pour toutes les feuilles ( une boucle par ex) Hervé aurait utilisé un tableau de variables, mais comme je les maîtrise pas bien, j'ai fait autrement....

Sub ListeZonesDeTextes()

Dim i As Integer
Dim str1 As String
Dim tablo() As String
Dim WKS As Worksheet

Set WKS = ActiveSheet
With WKS
str1 = ''
For i = 1 To .Shapes.Count
If .Shapes(i).Type = 17 Then
.Shapes(i).Select
str2 = i & '_' & Selection.Characters.Text
str1 = str1 & vbLf & str2
End If
Next i
MsgBox str1
End With
End Sub



A +
 
C

C@thy

Guest
Arf! C'est plus dur que je ne le pensais.

Ton idée d'utiliser une boucle jusqu'à Shapes.Count est excellente,
je dois maintenant imbriquer tout ça avec une boucle sur les feuilles 2 à 17 et ne récupérer que le texte qui est derrière les : (le reste étant le titre de la boîte, qui se trouvera dans la ligne 1).
Quelqu'un peut-il me faire progresser sur cette voie???

Merci à vous

C@thy ;)
 

Luki

XLDnaute Accro
re,

macro corrigée pour supprimer les titres des zones textes et traiter toutes les feuilles.... mais je me pose des questions: Ton fichier semble être une base de données, alors pourquoi travailler avec des zones textes plutôt qu'avec des cellules, ce serait plus simple est plus souple. Quelle est la finalité du truc?? :ermm:

A +


Sub ListeZonesDeTextes()

Dim i As Integer, ii As Integer
Dim str1 As String, str2 As string
Dim WKS As Worksheet

For ii = 1 To Worksheets.Count
Set WKS = Worksheets(ii)
With WKS
.Activate
str1 = ''
For i = 1 To .Shapes.Count
If .Shapes(i).Type = 17 Then
.Shapes(i).Select
str2 = Selection.Characters.Text
On Error Resume Next
str2 = Right(str2, InStr(1, StrReverse(str2), ':') - 1)
str1 = str1 & vbLf & vbLf & str2
End If
Next i
MsgBox str1
End With
Next ii
End Sub


Edition!!!!

En regardant de plus près, ça ressemble vraiment à une base de données, est-ce le cas ??? Si oui, il faudrait réorganiser le fichier et utiliser les outils appropriés... je pense

Message édité par: luki, à: 06/09/2005 19:38
 
C

C@thy

Guest
Merci Lucki.

La finalité de ce truc : récupérer dans la dernière feuille (Feuil1)
la liste des oeuvres d'art avec leurs caractéristiques en colonnes.
On a récupéré le fichier tel quel et, comme tu le constates, il n'est pas exploitable, il faut donc le transformer en Liste.

J'ai par ailleurs posé la même question sur le site VériTi, deux réunions d'experts valent mieux qu'une, abondance de biens ne nuit pas, qui vivra verra (LOL!!!) et j'ai obtenu une réponse, voir lien ici :
http://vlohr.free.fr/Forum_VeriTi/forum_1.php?msg=4974

Merci et bonne journée.

C@thy
 

Discussions similaires

Statistiques des forums

Discussions
312 106
Messages
2 085 352
Membres
102 871
dernier inscrit
Maïmanko