Problème avec macro de recherche sur un repertoire

woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
- 25 févr. 2011 à 10:09
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
- 1 mars 2011 à 17:00
Bonjour tout le monde , bonjour le forum
Pour finir mon travail , je vous sollicite une dernière fois sur un point auquel je ne trouve pas de solution...
j'ai une autre macro qui fait une recherche de données sur un fichier txt , comment je peux faire pour lui demander la même recherche mais cette fois sur un repertoire?


Sub test()

Workbooks.OpenText Filename:= _
   "D:\Users\ysebbarh.EMEA\Desktop\test_macro\RAF1.txt"
Workbooks.OpenText Filename:= _
   "D:\Users\ysebbarh.EMEA\Desktop\test_macro\NIR1.txt"
            Columns("A:A").Select
Selection.NumberFormat = "0"
Sheets.Add
   ActiveSheet.Name = "Resultat"
               i = 1
        For j = 2 To 16
        valeur = Workbooks("NIR1.txt").Sheets("NIR1").Cells(j, 1)
       Workbooks("RAF1.txt").Activate        
Set celluletrouvee = Range("A:A").Find(valeur)
ligne = celluletrouvee.Row
       Do
  Workbooks("NIR1.txt").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 vous aider à mieux comprendre mon problème ,la macro prend des données du fichier NIR1.txt et fait la recerche sur le fichier (RAF1.txt).Ce que je n'arrive pas à faire ( même avec plusieurs essaies), est que je ne sais pas modifier les lignes de codes ( là où à chaque fois il ya RAF1.txt) afin que la macro fasse la recherche sur un repertoire et non pas sur un seul fichier chose qu'elle fait très bien d'ailleurs .

Merci à vous tous

45 réponses

woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 10:54
Re-bonjour tout le monde ,

Voila l'essai que j'ai fais sur la macro pour qu'elle fasse la recherche dans un repertoire mais quand je la lance il ne se passer rien , même pas un message d'erreur :(
Sub test1()
Dim v_fichier As String
Dim v_i As Byte
v_i = 1
v_fichier = Dir("D:\Users\ysebbarh.EMEA\Desktop\RAF\RAF" & v_i & ".txt")
While v_fichier <> ""
  Workbooks.OpenText Filename:= _
        "D:\Users\ysebbarh.EMEA\Desktop" & v_fichier

  Workbooks.OpenText Filename:= _
        "D:\Users\ysebbarh.EMEA\Desktop\test_macro\NIR1.txt"
            
        Columns("A1:A1").Select
  Selection.NumberFormat = "0"
  Sheets.Add
     ActiveSheet.Name = "Resultat"
               i = 1
        For j = 2 To 15
        valeur = Workbooks("NIR1.txt").Sheets("NIR1").Cells(j, 1)
        Workbooks(v_fichier).Activate
        Set celluletrouvee = Range("A:A").Find(valeur)
  ligne = celluletrouvee.Row
        Do
      Workbooks("NIR1.txt").Sheets("Resultat").Cells(i, 1) = Workbooks(v_fichier).Sheets(v_fichier).Cells(ligne, 1)
      i = i + 1
      ligne = ligne + 1
      Loop Until (Left(Workbooks(v_fichier).Sheets("RAF" & v_i).Cells(ligne, 1), 14)) = "S30.G01.00.001"
   Next
   v_i = v_i + 1
   v_fichier = Dir("D:\Users\ysebbarh.EMEA\Desktop\RAF" & v_i & ".txt")   
Wend
End
End Sub


Pouvez vous m'aider pour voir se qui ne va pas ou tout simplement une idée pour débloquer tout ça?

Merci.
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 11:38
Hello,
Mais un break point au début du code et fais un avancé pas à pas. Ensuite dis mois quand il ne fait pas ce qu'il faut.

Je pense aussi que si il ne fait rien c qu'il ne trouve pas les fichiers donc vérifier si ils sont bien là ou il le faut.

Tien moi au courant.
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 11:41
Je viens de voir un problème. Tu change de page entre deux ligenes regarde.

ici tu mets ce path
Dir("D:\Users\ysebbarh.EMEA\Desktop\RAF\RAF" & v_i & ".txt")
Là tu en met un autre sans le dossier RAF
"D:\Users\ysebbarh.EMEA\Desktop" & v_fichier

Le qu'elle est le bon si nous on en sait pas le code non plus.
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 11:46
bonjour,
oui mais pour
Workbooks.OpenText Filename:= _
"D:\Users\ysebbarh.EMEA\Desktop\test_macro\NIR1.txt"
Il faut bien que je lui demande d'ouvrir le fichier NIR1.txt pour qu'il commence la recherche ( car il prend des données de ce fichier pour aller les chercher après dans le repertoire) tu comprends mnt pourquoi j'ai changé ce point?
Autrement l'avancement pas à pas je ne sais pas le faire (hé oui vraiment débutant en VBA) donc si tu pouvais me dire comment sa serait cool.
Merci
0

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

Posez votre question
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 11:52
1)Il faut que tu affiche ta macro.
2)Fais un clique sur la marge de gauche
3)un bande rouge va s'afficher
4)Retourne sur ta feuille excel
5)Execute ta macro
6)Le Xls va automatiquement s'arrêter sur la ligne rouge
7)Presse sur la touche F8 cela va faire avancer d'un pas ton programme ainsi de suite.

Tien moi au courrant.
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 11:59
Quand je fais sa ,
la ligne jaune saute directement à end sub juste après le While...(donc sa me met en jaune ces lignes la :
v_i = 1
v_fichier = Dir("D:\Users\ysebbarh.EMEA\Desktop\RAF\RAF" & v_i & ".txt")
While v_fichier <> ""
et après c'est directement au End Sub
j'espère que sa va t'aider à y voir plus clair
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 12:05
Excuse moi d'insister mais je pense vraiment qu'il y a une erreur de path.

tu mets
v_fichier = Dir("D:\Users\ysebbarh.EMEA\Desktop\RAF\RAF" & v_i & ".txt")

Mais quand tu veux ouvrir le fichier tu mets
"D:\Users\ysebbarh.EMEA\Desktop" & v_fichier

Tu vas chercher le fichier dans D:\Users\ysebbarh.EMEA\Desktop\RAF\RAF"
Mais tu espère l'ouvrir dans D:\Users\ysebbarh.EMEA\Desktop"

C pas logique !!!

Quand tu fais
Workbooks.OpenText Filename:= _
"D:\Users\ysebbarh.EMEA\Desktop" & v_fichier

Tu veux ouvrir le fichier RAF1.txt ou un autre?
car v_fichier = "RAF1.txt"
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 12:40
Hello je te confirme que si tu mais

Workbooks.OpenText Filename:= _
"D:\Users\ysebbarh.EMEA\Desktop\RAF" & v_fichier

a la place de

Workbooks.OpenText Filename:= _
"D:\Users\ysebbarh.EMEA\Desktop" & v_fichier


Le code continu sans prob

Tien moi au courant
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 13:53
c'est vraiment bizar ce truc mm en faisant tous ce que tu m'as demandé de faire sa ne fait rien encore !!
STP essai de tester de ton coté je pense sa te prendra moins de temps et dis moi si sa marche chez toi ou pas comme ça au moins je saurai si le problème viens du code ou d'autre chose car là je t'avoue je suis sans solution devant ce problème.
Merci beaucoup
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 14:08
J'ai modifié les paths pour que ca fonctionne chez moi. J'ai aussi changer NIR1.txt en NIR2.txt car tu ne ma pas donnez le NIR1.txt mais le NIR2. J'ai donc le code suivant :

Sub test1()
Dim v_fichier As String
Dim v_i As Byte
v_i = 1
v_fichier = Dir("C:\Documents and Settings\Administrateur\Mes documents\Téléchargements\attachments_25_02_2011\RAF\RAF" & v_i & ".txt")
While v_fichier <> ""
Workbooks.OpenText Filename:= _
"C:\Documents and Settings\Administrateur\Mes documents\Téléchargements\attachments_25_02_2011\RAF" & v_fichier


Workbooks.OpenText Filename:= _
"C:\Documents and Settings\Administrateur\Mes documents\Téléchargements\attachments_25_02_2011\NIR2.txt"
Columns("A1:A1").Select
Selection.NumberFormat = "0"
Sheets.Add
ActiveSheet.Name = "Resultat"
i = 1
For j = 2 To 15
valeur = Workbooks("NIR1.txt").Sheets("NIR1").Cells(j, 1)
Workbooks(v_fichier).Activate
Set celluletrouvee = Range("A:A").Find(valeur)
ligne = celluletrouvee.Row
Do
Workbooks("NIR1.txt").Sheets("Resultat").Cells(i, 1) = Workbooks(v_fichier).Sheets(v_fichier).Cells(ligne, 1)
i = i + 1
ligne = ligne + 1
Loop Until (Left(Workbooks(v_fichier).Sheets("RAF" & v_i).Cells(ligne, 1), 14)) = "S30.G01.00.001"
Next
v_i = v_i + 1
v_fichier = Dir("D:\Users\ysebbarh.EMEA\Desktop\RAF" & v_i & ".txt")
Wend
End
End Sub

Cela fonctionne jusqu'à la ligne Columns("A1:A1").Select. Et là je pose la question. quand tu fais

Workbooks.OpenText Filename:= _
"C:\Documents and Settings\Administrateur\Mes documents\Téléchargements\attachments_25_02_2011\NIR2.txt"
Columns("A1:A1").Select

Pour quoi tu sélectionne une cellule dans un fichier txt
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 15:29
valeur = Workbooks("NIR1.txt").Sheets("NIR1").Cells(j, 1)
Sa marche bien tkt ;)
( c'est un ami à moi qui a bienvoulu faire cette partie du code car on bosse à deux dessus et ce n'est q'une partie du boulot je m'occupe d'une autre partie en mm temps :) )
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 15:46
Ma question et sur la ligne suivante

Workbooks.OpenText Filename:= _
"C:\Documents and Settings\Administrateur\Mes documents\Téléchargements\attachments_25_02_2011\NIR1.txt"

Moi g pas nir1.txt.
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 15:49
Je ne comprend pas le Columns("A1:A1").Select après les deux Workbooks. Explique moi stp
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 15:57
Ah pour NIR1 c juste un nom de fichier attend je vais poster une nouvelle version de ma macro bien plus claire tu comprendra mieux ( toujours pour un seul fichier et pas de repertoire)

Sub test()


Dim wb_RAF1      As Workbook
Dim wb_NIR1      As Workbook
Dim sb_RAF1      As Worksheet
Dim sb_NIR1      As Worksheet
Dim ws_resultat  As Worksheet
Dim cel_cherchee As Range
Dim cel_trouvee  As Range
Dim cel_resultat As Range

Workbooks.OpenText Filename:="D:\Users\yS.EMEA\Desktop\test_macro\NIR1.txt"
Set wb_NIR1 = ActiveWorkbook
Set ws_NIR1 = wb_NIR1.Worksheets(1)
ws_NIR1.Columns(1).NumberFormat = "0"

Workbooks.OpenText Filename:="D:\Users\yS.EMEA\Desktop\test_macro\RAF1.txt"
Set wb_RAF1 = ActiveWorkbook
Set ws_RAF1 = wb_RAF1.Worksheets(1)

Set ws_resultat = wb_NIR1.Worksheets.Add
ws_resultat.Name = "Resultat"
Set cel_resultat = ws_resultat.Range("A1")

For Each cel_cherchee In ws_NIR1.Range("A2:A16")
    Set cel_trouvee = ws_RAF1.Columns(1).Find(cel_cherchee.Value)
    Do
        cel_resultat.Value = cel_trouvee.Value
        Set cel_resultat = cel_resultat.Offset(1)
        Set cel_trouvee = cel_trouvee.Offset(1)
    Loop Until (Left(cel_trouvee.Text, 14)) = "S30.G01.00.001"
Next
 
End Sub
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 16:12
J'ai avancé est j'en suis à Set celluletrouvee = Range("A:A").Find(valeur)

valeur = 1440999999999

le problème est que RAF1.txt n'a pas cette valeur.

Je suppose que dans ce cas tu veux passer au fichier suivant sans rien faire d'autre ?
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 16:16
ah enfait le fichier NIR2.txt je l'avais conçu pour le repertoire RAF dc c normal que tu ne trouve pas cette valeur dans RAF1.txt
Enfait sa serai sympa si je peux dans le cas où il ne trouve pas une valeur dans aucun des fichier du répertoire , renvoyer une notification sur ce point, c possible d'ajouter sa dans la suite du code ou il faut passer par une autre macro?
Et sa marche chez toi pour parcourir le repertoire??
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 16:19
je viens de verifier pour la valeur 1440999999999 elle existe bel et bien dans RAF1
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 16:20
Pour parcourir sans souci. J'arrive à ouvrir tout les fichier. Le problème et de dire si objet = nothing alors fichier suivant. mais je cherche
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
25 févr. 2011 à 16:25
Oui c bon! g bien tot fini
0
woow74
Messages postés
39
Date d'inscription
vendredi 18 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

25 févr. 2011 à 16:26
Oki , moi aussi je cherche de mon coté , si tu veux vraiment m'accorder un peu plus de teps , je te conseil de travailler sur la nouvelle version de la macro que je viens de poster elle est beaucoup plus simple à comprendre tu me diras.
Et n'oublie pas stp d'une fois tu finis tes recherche de poster la dernière version de la macro comme sa sa laissera une trace pour moi et pour les nouveaux utilisateurs qui auront peut etre besoin de sa
Tiens moi au courant je serais toujours au bureau jusqu'a 18h .
Merci enormement pour temps que tu m'accordes
0