Recherche de données d'un fichier Excel dans un fichier txt

Résolu
woow74 Messages postés 39 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 1 mars 2011 - 21 févr. 2011 à 10:41
woow74 Messages postés 39 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 1 mars 2011 - 21 févr. 2011 à 16:20
Bonjour,
Je reviens vers vous, je suis débutant en VBA, mes recherches sur les forums sont sans résultats
J'ai fichier Excel avec une colonne contenant des codes NIR , et des fichiers txt contenants des données dispensées en lignes. Je souhaitrais faire la recherche de ces NIR ( provenants du fichier Excel) dans les fichiers txt etretourner les résultats sous format txt.
Quelqu'un peut m'aider SVP
Bonne journée.

8 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
21 févr. 2011 à 15:31
Traitement pour "fichier1"
On verra ensuite comment traiter plusieurs fichiers

(Pas possible avec un fichier de commande à priori comme pensé au départ)
Si je comprends, Ton travail consiste plus ou moins à regrouper les champs d'un même enregistrement sur une même ligne (le nombre de champs étant variables)

Dim Ligne as String
Dim ChampsEntre2Codes as String

Open "fichier1" For Input as #1
While Not EOF(1)
ChampsEntre2Codes= ""
' se caler sur la premiere occurence S30.G01.00.001
While not EOF(1) and Instr(1,Ligne,15)<>"S30.G01.00.001"
Get Line #1, Ligne
Wend
' aller jusqu'à l'occurence de fin
While not EOF(1) and Instr(1,Ligne,15)<>"S53.G01.00.011"
Get Line #1, Ligne
ChampsEntre2Codes = ChampsEntre2Codes + ";" + Ligne
Wend
Wend
Close #1
MsgBox ChampsEntre2Codes
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
21 févr. 2011 à 15:33
Mea culpa, la lecteur d'une ligne de fichier
ce n'est pas : Get Line #1, Ligne
Mais c'est : Line Input #1, Ligne
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
21 févr. 2011 à 12:54
Bonjour

1- Enregistrer le fichier des code NIR au format Texte NIR.TXT
2- lancer la commande dans une fenetre DOS
for %f in (*.txt) do findstr /G:NIR.TXT %f
0
woow74 Messages postés 39 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 1 mars 2011
21 févr. 2011 à 13:25
Bonjour loulou merci d'avoir lu mon post.
Quand je met la commande il ne se passe rien , enfin j'ai une ligne après qui dit : findstr /d: NIR.txt RAF1.txt
où RAF1 et le nom de mon fichier txt et NIR et le nom du fichier Excel que j'ai changé en fichier txt.
Ce que je voulai c effectuer la recherche et avoir les résultats dans un autre fichier txt.
Si tu veux je peux te donner le fichier txt qui contient les données..
Merci Beaucoup pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
woow74 Messages postés 39 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 1 mars 2011
21 févr. 2011 à 13:43
Voila pour mieux voir le problème, je te joint une partie du fichier txt dans lequel je vais effectuer les recherches.
le premier code : S30.G01.00.001 correspond au fameux NIR que je recherche et le code: S53.G01.00.011 marque le fin des données relatives à la personne x.
Ce que je souhaiterais faire est le suivant : rechercher un NIR à partir de la liste que j'ai sur le fichier NIR.xls dans ce fichier txt , et une fois il le retrouve , il me retoune toutes les lignes de données relatives à cette personne portant ce NIR et ainsi de suite pour les autres personnes...
J'espère que j'étais claire dans mes explications.
Je te remercie d'avance loulou
S30.G01.00.001,'1431099353322'
S30.G01.00.002,'BIANCHINI'
S30.G01.00.003,'LOUIS'
S30.G01.00.011,'99'
S30.G01.00.012,'ALGERIE'
S30.G01.00.013,'FRANCE'
S41.G01.00.001,'01012009'
S41.G01.00.002.001,'097'
S41.G01.00.017,'0416'
S41.G01.00.019,'223040024 D0102A RA'
S41.G01.01.001,'R0001'
S41.G01.01.002,'0AAF82BE'
S53.G01.00.001,'03'
S53.G01.00.010.001,'22890'
S53.G01.00.011,'cotisations année 2009 mois 01 à 12'
S30.G01.00.001,'1440120004004'
S30.G01.00.002,'MARTINETTI'
S30.G01.00.003,'JEAN'
S30.G01.00.007,'01'
S30.G01.00.008.012,'AJACCIO'
S30.G01.00.009,'02011944'
S30.G01.00.010,'AJACCIO'
S30.G01.00.011,'20'
S30.G01.00.012,'FRANCE'
S30.G01.00.013,'FRANCE'
S41.G01.00.001,'01012009'
S41.G01.00.002.001,'095'
S41.G01.00.003,'02012009'
S41.G01.00.004.001,'134'
S41.G01.01.002,'0AAF82BE'
S53.G01.00.001,'01'
S53.G01.00.002,'0050'
S53.G01.00.003,'9902'
S53.G01.00.004,'9999'
S53.G01.00.005,'235'
S53.G01.00.008.001,'0'
S53.G01.00.009.001,'12079'
S53.G01.00.010.001,'12079'
S53.G01.00.011,'cotisations année 2009 mois 01 à 09'
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
21 févr. 2011 à 14:52
Je reviens de pose

surprise je ne comprend pas malgrè les explications.

Question 1: les fichiers txt de données sont t'ils triés ?: en effet les données commençant par S30.G01.00.001 ne sont pas sur les lignes contigues (qui se suivent).

Question 2: si le fichier de recherche des NIR contient deux occurences
S30.G01.00.001
S53.G01.00.001

Merci de lister les données que tu veux retourner sur le seul et unique fichier de données de ton dernier post

Merci
0
woow74 Messages postés 39 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 1 mars 2011
21 févr. 2011 à 15:05
Bonne pose? :)
Bon, pour ta première question , le fichier txt qui contient les données et dont je t'ai donné un extrait contient des codes et les valeurs conrrespondantes.
Les codes se repètent mais ce qui change se sont les valeurs à coté de ces codes.Et pour mieux comprendre le principe tu verra que sur ce fichier txt il y'a des champs de données relatives à plusieurs persones , dans l'extrait que je t'ai fourni on peut bien remarquer que le champs relatif à M Bianchini Louis commence par le code S30.G01.00.001 (dont la valeur est un numéro NIR) et se termine par le code S53.G01.00.011 (dont la valeur est l'année de cotisation).
Le champs relatif à M Martinetti Jean commence par le mm code S30.G01.00.001 ( mais la valeur qui le NIR change) et se termine par le mm code S53.G01.00.011.
Donc moi ce que je veux faire , c'est prendre ma liste de NIR que j'ai dans un autre fichier txt , et faire la recherche sur ce fichier txt qui contient les données , et par la suite ressortir le champs correspondant à chaque NIR trouvé ( un champs de données relatif à la personne qui porte cet NIR) et le mettre sous le mm format txt.( est-ce un peu plus clair??)
Là où je bloque par rapport au code , c'est pour dire au programme une fois il trouve le NIR que je cherche dans le fichier contenant les données, de me renvoyer le champs de données ( délimité par les deux codes que je t'ai montré avant) relative au numéro NIR recherché.
Merci Beaucoup Loulou
0
woow74 Messages postés 39 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 1 mars 2011
21 févr. 2011 à 16:20
Merci loulou , je pense que c'est le bout qui memanquait.
Mais... il y a toujours un mais pour les débutants come moi , mon travail consiste a prendre un fichier avec pleins de numéros NIR et les rechercher un par un dans mon fichier1 qui regroupe les donné en sachant que le code S30.G01.00.001 correspond au NIR ;
donc l'idée c'était de , une fois je trouve le NIR que je cherche dans mon fichier , retourner le champs relatif à la persone qui porte ce NIR ( chose que ton bout de code fait très bien) la partie qui me manque mnt est comment je pourrai tout mettre ensemble pour pouvoir prendre un fichier avec les numéros NIR , prendre num par num et faire la recherche sur le fichier1 qui contient les données...mais surtout comment faire pour mettre ces données dans un autre fichier txt qui sera mon résultat du travail.
Je sais que je te demande un peu trop mais sache que je suis vraiment dans l'impasse et que je cherche toute la journée de mon coté mais sans succès.
Merci encore loulou
0
Rejoignez-nous