XL 2010 Extraire du texte d'une zone de texte (Text Box)

oderoaldes

XLDnaute Junior
Bonjour,
je vais encore vous solliciter car J'ai récupéré des répertoire dans lequel pour chaque année, il y a environ 300 factures dans lesquelles les coordonnées du client on été mise en insérant une zone de texte (Text Box 1 ou Text Box 2) dans la feuille.
Je voudrais pouvoir récupérer toutes ces adresses pour créer une base de donnée ainsi que si possible le numéro de facture en A8
J'ai pas mal cherché mais ne trouve vraiment rien qui fonctionne vraiment et qui me permette surtout de passer si possible tout le répertoire en une fois.
Je vous joins un petit exemple du fichier.
Merci d'avance pour votre aide.
Bien cordialement.
 

Pièces jointes

  • Mod_facture.xlsx
    30.5 KB · Affichages: 18

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour oderoaldes,

En PJ un exemple dont vous pouvez vous inspirer.
J'ai supposé qu'il n'y avait qu'une zone de texte par facture. ( sinon ça va se compliquer )
Il vous faut l'enrober un peu pour accéder à vos 300 factures.
Si toutes les factures sont sur ce modèle et si toutes sont dans le même dossier, il suffit de boucler sur tous les fichiers pour les analyser.

Code:
Sub LireZoneTexte()
For Each sh In ActiveWorkbook.ActiveSheet.Shapes
    If Left(sh.Name, 9) = "ZoneTexte" Then
        tablo = Split(ActiveSheet.Shapes(sh.Name).TextFrame.Characters.Text, Chr(10))
        For i = 0 To 3
            [Resultats].Cells(i + 1, 1) = tablo(i)
        Next i
        [Resultats].Cells(5, 1) = Range("A8")
    End If
Next
End Sub
 

Pièces jointes

  • Mod_facture.xlsm
    37.4 KB · Affichages: 10

jmfmarques

XLDnaute Accro
Bonjour

Je n'ouvre jamais un classeur tiers et n'ai donc pas ouvert le tien.

Voici comment (exemple) écrire dans la cellule A1 de la feuille active le texte présent dans une zone de texte nommée "ZoneTexte 1" de la feuille active :
VB:
Range("A1").Value = ActiveSheet.Shapes("ZoneTexte 1").TextFrame2.TextRange.Text
 

oderoaldes

XLDnaute Junior
Bonsoir Sylvanu,

Merci de cette réponse hyper rapide mais quand j'écrase le tableau créé, ou que j'essaie de la faire fonctionner dans un autre fichier la macro ne fonctionne pas. Les coordonnées sont pratiquement toutes en "zone de texte 5".
Quand à boucler pour sur tous les fichiers qui sont dans le même répertoire, cela est certainement simple pour toi mais assez compliqué pour moi, merci d'un petit coup de main supplémentaire.
Est il possible de récupérer les données en colonne et non pas en ligne.
Merci encore.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
L'exemple n'était que l'illustration à la question : peut on récupérer les données d'une TexteBox.
C'est tout, juste un exemple.
Donc trois questions :
1- Toutes les factures sont elles sur le même modèle? avec même nom de feuille : "DEVIS"
2- N'y a t-il bien qu'une TextBox par facture ?
3- Toutes les factures sont elles rangées dans le même dossier ?

Et on essaiera de s'en sortir. Ce n'est pas très compliqué.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Puisque je n'ai pas résisté à faire ALT+F11 une fois Excel ouvert
je poste (selon ce que j'ai compris de la question)
PS: Ce n'est qu'une ébauche
VB:
Sub test()
Dim t, i&, shp As Shape
Set shp = Shapes("TextBox 1")
t = Split(shp.TextFrame2.TextRange, Chr(10))
For i = LBound(t) To UBound(t)
shp.TopLeftCell.Offset(-1, i) = t(i)
Next
End Sub
 

oderoaldes

XLDnaute Junior
bonjour à tous et merci de toutes vos réponses, je suis en déplacement aujourd'hui je testerai donc vos propositions demain.
Pour répondre aux questions :
-Toutes les factures sont sur le même modèle avec le même nom de feuille DEVIS
-Il peut y avoir 3 Text Box la 5 ou la 7 pour le bloc adresse - la 2 pour le numéro de facture (ou la ligne 7 ou 8) - la 6 pour le RIB.
Toutes les factures sont dans un répertoire par année (2018-2019 etc) mais je peux faire une copie et tout mettre dans le même répertoire ce n'est pas un problème.
Merci pour votre aide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
1- Est ce qu'au moins les coordonnées se trouvent uniquement en TextBox 5 ou 7 ?
2- Est ce qu'au moins le numéro facture se trouve uniquement en TextBox 2 ou ligne 7 ou 8 ?
3- Doit on enregistrer le RIB, est-il toujours en Textbox 6 ?
4- Doit on séparer Code postal et ville ? ( c'est facile si le code postal est toujours les 5 premier chiffres )
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Un premier essai en pièce jointe.
Décompressez le sur votre bureau, ouvrez le dossier , ouvrez RécupèreAdressesClients et cliquez sur Lancer pour tester.
Si OK :
Toutes les factures sont à mettre dans le dossier 2018-2019. ( Sinon changer l'adresse dans le code )
Hypothèses prises :
- Les coordonnées se trouvent uniquement en TextBox 5 ou 7
- Il ne peut y avoir simultanément TextBox 5 ou 7 sur une même facture
- Le numéro facture se trouve uniquement en TextBox 2 ou ligne 7 ou 8
Auquel j'ai rajouté :
- L'adresse peut avoir 5 ou 4 lignes ( Complément adresse absent )
- Le code postal peut être à droite ou à gauche ... ou absent.
A noter :
- Le N° de facture est le texte trouvé, je n'ai pas extrait le N°. ( ce qui est faisable )
- J'efface tout le tableau avant de commencer l'analyse.
- A la fin je trie le tableau par ordre alphabétique sur les noms de sociétés.
- Le StatusBar donne le nom de la facture en cours d'analyse.
- Sur mon PC, il faut compter 0.2s pour analyser une facture. ( soit 20s pour 100 factures )

Veuillez faire un retour si vous trouvez des bugs ou si des modifs sont nécessaires. ;)
 

Pièces jointes

  • Oderoaldes.zip
    166.1 KB · Affichages: 11

oderoaldes

XLDnaute Junior
Bonsoir,

Cela fonctionne effectivement parfaitement avec les fichiers test.
J'ai mis ensuite 35 fichiers supplémentaires pour tester sur lesquels j'ai bien vérifié que la bloc adresse était bien sur 5 ou 7, certains étaient sur 2, vous trouverez le résultat en copie.
Cela extrait bien mais certaines lignes sont répétées et l'intitulé reste bloqué sur une adresse.
Le Statut Bar défile parfaitement.

Merci de votre aide.
 

Pièces jointes

  • RécupèreAdressesClients2.xlsm
    26.1 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Je viens d'essayer avec 70 fichiers sans reproduire votre souci.
Ci joint une V2 où j'enregistre dans la feuille Log les infos plus le N° Index plus le nom du Fichier.

Mettre cette PJ au même niveau que la V1
Supprimer dans 2018-2019 tous mes fichiers et y mettre que les vôtres
Ouvrir la V2 et Lancer.
Et regarder la feuille Log.
Vous pouvez effacer Société et adresse dans les deux feuilles et m'envoyer le résultat ?
 

Pièces jointes

  • RécupèreAdressesClients (V2).xlsm
    39.7 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 977
Membres
103 078
dernier inscrit
diomy