Recherche de valeur dans un fichier Excel vers un fichier txt VBA [Résolu]

Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
- - Dernière réponse : woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
- 23 févr. 2011 à 17:20
Bonjour, j'ai fais un bout de code qui me permet de rechercher des codes contenus dans une colonne excel ( NIR1) dans un autre fichier txt(RAF1) et me retourner les données relatives a ces codes et me retourne le résultat sur une feuille excel .
Voila le bout de code que j'ai réussi à avoir :
Sub macro()
For j = 2 To 1205

valeur = Workbooks("NIR1.xls").Sheets("NIR1").Cells(j, 1)


Cells.Find(What:=valeur, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

ligne = ActiveCell.Row


Do
Workbooks("NIR1.xls").Sheets("Resultat").Cells(i, 1) = Workbooks("RAF1.txt").Sheets("RAF1").Cells(ligne, 1)
i = i + 1
ligne = ligne + 1

Loop Until (Left(Workbooks("RAF1.txt").Sheets("RAF1").Cells(ligne, 1), 14)) = "S30.G01.00.001"

Next

End Sub



Ce que je ne comprend pas , et j'ai l'impression que le out de code est bon , c'est que quand je lance la macro sur la colonne excel où ya les codes à rechercher sa me met un message d'erreur du genre : l'indice n'appartient pas à la selection.
Je n'arrive pas à trouver la source du problème pouvez vous m'aider SVP??
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
3
Merci
Je crois que ce le fait que i = empty dans le do. Tu devrais mettre i = 1 avant le workbook...

Tien moi au courant.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de 4u4me4us
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
0
Merci
Merci 4u4me4us c'est exactement sa
Maintenant une dernière question si tu veux bien m'aider
Ma recherche de données se fait dans RAF1.txt qui est un simple fichier. Et si je voulais ouvrir un repertoire qui contient plusieurs fichiers comme RAF1.txt ? t'aurais une piste pour faire la recherche sur plusieurs fichiers et pas sur un seul?
Merci beaucoup pr ta disponibilité
Commenter la réponse de woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
0
Merci
et au passage voila le code final que j'ai réussi à faire marcher ( encore c'est juste pr la recherche dans un seul fichier j'attend votre aide pour pouvoir rechercher dans plusieurs fichiers )

Sub test()

Workbooks.OpenText Filename:= _
"D:\Users\ysebbarh.EMEA\Desktop\RAF1.txt"
Workbooks.OpenText Filename:= _
"D:\Users\ysebbarh.EMEA\Desktop\NIR1.xls"

Columns("A:A").Select
Selection.NumberFormat = "0"
Sheets.Add
ActiveSheet.Name = "Resultat"
i = 1
For j = 2 To 1205
valeur = Workbooks("NIR1.xls").Sheets("NIR1").Cells(j,1)

Workbooks("RAF1.txt").Activate
Set celluletrouvee = Range("A:A").Find(valeur)
ligne = celluletrouvee.Row
Do
Workbooks("NIR1.xls").Sheets("Resultat").Cells(i, 1) = Workbooks("RAF1.txt").Sheets("RAF1").Cells(ligne, 1)
i = i + 1
ligne = ligne + 1
Loop Until (Left(Workbooks("RAF1.txt").Sheets("RAF1").Cells(ligne, 1), 14)) = "S30.G01.00.001"
Next
End
End Sub
Commenter la réponse de woow74
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Si je t bien compris tu voudrais faire la recherche d'une valeur dans plusieurs fichiers?
Exemple savoir quelle fichier RafX.txt à la valeur "Titi".

Si oui je te propose le code suivant :
dim v_i as byte
dim v_fichier as string
dim v_info as string
dim canal as byte
dim v_taille as long

canal = freefile
v_i = 1
v_fichier = dir("chemain de ton répretoir\Raf" & v_i & ".txt")
while v_fichier<>"" and instr(1,v_info,"Tit")<=0
open "chemain de ton répretoir" & v_fichier for binary as #canla
v_taille = lof(#canal)
get v_info,,#canal
close #canal
v_i=v_i+1
v_fichier v_fichier dir("chemain de ton répretoir\Raf" & v_i & ".txt")
wend


Voila J'ai taper cela de tête donc tu devra faire des corrections mais dans a froid je ferrai comme ça.

Note v_taille = lof(#canal) get v_info,,#canal pour lire le ficher d'un coup



Si c pas ça que tu me demandé SORRRRRRRRRYYYYYYY et précicse moi stp.
Commenter la réponse de 4u4me4us
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
0
Merci
OOh c'est vraiment cool de ta part sa fait plais quand il y a des gens comme toi pour aider les nuls comme moi .

J'ai vu ton code mais il me fait peur , je t'explique : la recherche, je la fais dans le fichier RAF1.txt ( le mecanisme de recherche c que je prend une valeur d'un tableau et je vais rechercher cette mm valeur dans le fichier txt pour ensuite réccuperer des données relatives à cette valeur ..)
Mnt j'ai un répertoire RAF qui contient des fichiers RAF*.txt ( l'extension du nom sa sra genre RAF1;RAF2;RAF3...);dc ton code , je le met où dans mon code à moi? et il n'affectera pas ma recherche je veux dire ma macro?
Merci beaucoup té top
Commenter la réponse de woow74
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Parfois je suis à coté de la plaque donc je v te faire un dessin de ce que je pense que tu as et veux faire et tu me dirras si suis juste. Sorry ça fais petit garçon mais comme je te dis cela m'arrive d'être à coté de la place .

Tu as arborescence suivante :

RAF----
|-----RAF1.txt
|
|-----RAF2.txt
|
|-----RAF3.txt

Tu as un tableau qui a une valeur et tu voudrais savoir dans qu'elle fichier elle est écrite ?

Je ne parle pas de ce qui a avant car c trouble pour moi. Mais si déjà tu peux me dire si a un moment ou un notre tu voudras faire cela, je verrais plus claire. Bien sur on pourra parler tu tableau plus tard mais répond moi déjà sur la vision que j'ai.

De plus un simple merci suffi vu que moi aussi je m'aide de ce site donc
Commenter la réponse de 4u4me4us
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
0
Merci
d'accord.
Oui pr ton dessin d'arborescence c exactement sa.
mnt ce que je veux c'est effectivement voir si la valeur que je cherche se trouve dans l'un des fichiers de ce répertoire et en extraire les données relative à cette dernière ce que mon bout de code fait très bien.
Ma question était plus où je mettrai le bout de code que tu m'as fourni par rapport à mon code et comment jdevrai modifier cette partie du code
Workbooks("RAF1.txt").Activate
Set celluletrouvee = Range("A:A").Find(valeur)
ligne = celluletrouvee.Row
Do
Workbooks("NIR1.xls").Sheets("Resultat").Cells(i, 1) = Workbooks("RAF1.txt").Sheets("RAF1").Cells(ligne, 1)
i = i + 1
ligne = ligne + 1
Loop Until (Left(Workbooks("RAF1.txt").Sheets("RAF1").Cells(ligne, 1), 14)) = "S30.G01.00.001"
Next
End
End Sub
pour qu'il sache que je cherche dans un repertoire et pas juste dans le fichier RAF1.txt
j'espère que je suis plus clair mnt
Merci
Commenter la réponse de woow74
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Le code que je t fourni "de mémoire donc a corriger" permet de chercher dans qu'elle fichier est la valeur.
Commenter la réponse de 4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
A la place de "chemain de ton répretoir" met un truc genr "C:\RAF" & v_i & ".txt"
Commenter la réponse de 4u4me4us
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
0
Merci
Je n'y arrive pas
euuh si possible je peux t'envoyer le Rep et le fichier Excel d'où je prend les valeurs à rechercher et voir si t'arrive à caser le code que tu m'as fourni avec mon bout de code?
Si oui je t'explique par la suite la procédure à suivre pour la recherche ( c'est juste que je dois rendre ce travail très bientot et la j'ai fais la plus grande partie mais je bloque sur la recherche dans un repertoire de fichiers).
Merci
Commenter la réponse de woow74
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Ok! Mais je te répond dans deux heurs car g un train à prendre.

Mon mail perso dis_moi@yahoo.fr

Plus
Commenter la réponse de 4u4me4us
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
0
Merci
d'accord pas de problème et merci
Commenter la réponse de woow74