Se connecter avec
S'enregistrer | Connectez-vous

Probleme d'execution de macro apres ouverture du fichier

Dernière réponse : dans Programmation

BOnsoir, je rencontre un pb actuellement, je m'explik
J'ai créé une macro qui ouvre tous les fichiers excel d'un dossier bien défini et je copie le chemin de chaque fichier xls trouvé sur une feulle ("copie") d'un classeur que j'ai nommé "intermediaire.xls". Ce que je veux c'est à chaque ouverture du fichier que cela m'execute une autre macro et sur cette macro je ne sais pas comment je dois déclaré ou spécifié le fichier qui est ouvert pour qu'elle le traite. Je vous indique les deux macros ci-dessous en espèrant que vous pourrez m'aider.
Merci d'avance
  1. With fs
  2. .LookIn = "C:\Documents and Settings\Utilisateur\Mes documents\Debit"
  3. .SearchSubFolders = True
  4. .Filename = "*.xls"
  5. If .Execute(SortBy:=msoSortByFileName, _
  6. SortOrder:=msoSortOrderAscending) > 0 Then
  7.  
  8. For i = 1 To .FoundFiles.Count
  9. w3.Cells(i, 6).Value = .FoundFiles(i)
  10.  
  11.  
  12. Next i
  13. For i = 1 To .FoundFiles.Count
  14. data = w3.Cells(i + 5, 6).Value 'je donne au chemin indiqué sur la cellule le nom de data à chaque fois que j'ouvre un fichier du dossier
  15. Set w4 = Application.Workbooks.Open(data) 'le ficher ouvert je l'appelle w4 pour le reutiliser sur l'autre macro
  16. module1.traitement
  17.  
  18. Next
  19. Else
  20. MsgBox "Il n'y a aucun fichier."
  21. End If
  22.  
  23. End With
  24.  
  25. End Sub

LA 2è macro qui traite le fichier ouvert
  1. Sub traitement()
  2. Set w3 = Workbooks("intermediaire.xls").Worksheets("copie")
  3.  
  4. nbrcolonne = w1.UsedRange.Columns.Count
  5.  
  6. For i = 1 To nbrcolonne
  7. For Each C In w4.Range("P13:Z230") 'je fais appel au fichier que j'ai ouvert grâce à la 1ère macro et l'erreur vien de là
  8. If C.Value = w1.Cells(1, i) Then
  9. w3.Cells(2, i) = w4.Cells(C.Row, C.Column + w1.Cells(2, i))
  10. w3.Cells(1, i) = w4.Cells(C.Row, C.Column)
  11. Exit For
  12.  
  13. End If
  14. Next
  15.  
  16. Next

Je voulais donc savoir comment je fais pour qu'à partir de la seconde macro que je puisse utiliser le fichier qui est ouvert à chaque fois
J'espère que j'ai été clair pour une meilleure compréhension
Merci
Lassé par la pub ? Créez un compte
Expert Programmation

1°) Utilise l'Option Explicit. (Merci de lire l'aide pour découvrir cette commande.)

2°) Déclare correctement tes variables avec Dim. Tu re rendras compte que w4 n'est pas connu dans traitement.


TIPS: remplace Sub traitement() par Sub traitement(w As Workbook) et la moitié de ton problème sera résolu. ;) 
Lassé par la pub ? Créez un compte