Se connecter / S'enregistrer
Votre question

Erreur programation macro excel

Tags :
  • Select
  • Programmation
Dernière réponse : dans Programmation
8 Novembre 2011 16:25:54

Bonjour,
J'ai un récupéré une macro pour extraire les données d'un fichier excel vers un autre le voici :

  1. Sub Maj_prix()
  2. 'indiquez ici le chemin ou se trouve le fichier du fournisseur
  3. mpath = "U:\dossier taf\0RAPPORT ANNUEL 2011"
  4. 'indiquez ici le nom du fichier envoyé par le fournisseur
  5. nfich2 = "REPORTING COMMUNES 2011"
  6. 'indiquez ici le nom de la feuille contenant le tarif dans votre fichier
  7. nf1 = "cadre"
  8. 'indiquez ici le nom de la feuille pour le fichier fournisseur
  9. nf2 = "Feuil1"
  10. 'première ligne de données du fichier fournisseur (vous pouvez modifier si nécessaire)
  11. pl1 = 10
  12. 'première ligne de données de votre fichier (vous pouvez modifier si nécessaire)
  13. pl2 = 6
  14. 'colonne contenant la référence article dans votre fichier (vous pouvez modifier si nécessaire)
  15. cr1 = C
  16. 'colonne contenant la référence article dans votre fichier (vous pouvez modifier si nécessaire)
  17. cr2 = A
  18.  
  19. Fact = ThisWorkbook.Name
  20. nf = Dir(mpath & nfich2 & ".xls")
  21.  
  22. If nf = "" Then
  23. MsgBox "Le fichier du fournisseur n'a pas été trouvé." & Chr(10) & Chr(13) & _
  24. "Vérifiez le nom indiqué dans les variables : 'mpath' & 'nfich2'"
  25. Exit Sub
  26. End If
  27.  
  28. Application.ScreenUpdating = False
  29. Workbooks.Open mpath & nfich2 & ".xls"
  30. Sheets(nf2).Select
  31. dl2 = Range("A65536").End(xlUp).Row
  32. Range(Cells(pl2, cr2), Cells(dl2, cr2 + 1)).Select
  33. Selection.Sort Key1:=Range(Cells(pl2, cr2), Cells(dl2, cr2)), Order1:=xlAscending, _
  34. Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  35.  
  36. Set mfl2 = Workbooks(nfich2 & ".xls").Sheets(nf2)
  37.  
  38. Windows(Fact).Activate
  39. Sheets(nf1).Select
  40. dl1 = Range("A65536").End(xlUp).Row
  41.  
  42. Range(Cells(pl1, cr1 - 1), Cells(dl1, cr1 + 1)).Select
  43. Selection.Sort Key1:=Range(Cells(pl1, cr1), Cells(dl1, cr1)), Order1:=xlAscending, _
  44. Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  45.  
  46. Range(Cells(pl1, cr1 + 1), Cells(dl1, cr1 + 1)).Select
  47. Selection.NumberFormat = "0.00"
  48.  
  49. For i = pl1 To dl1
  50. art1 = UCase(Cells(i, cr1))
  51. art2 = UCase(mfl2.Cells(pl2, cr2))
  52.  
  53. If art2 < art1 Then
  54. pl2 = pl2 + 1
  55. i = i - 1
  56. End If
  57.  
  58. If art2 = art1 Then
  59. prix = mfl2.Cells(pl2, cr2 + 1)
  60. Cells(i, cr1 + 1) = prix
  61. pl2 = pl2 + 1
  62. End If
  63.  
  64. Next i
  65.  
  66. Application.DisplayAlerts = True
  67. Application.ScreenUpdating = True
  68. Workbooks(nfich2 & ".xls").Close SaveChanges:=False
  69. Range("A1").Select
  70. MsgBox "Ce fichier n'a pas été enregistré" & Chr(10) & Chr(13) & _
  71. "Vous choisissez de l'enregistrer ou non avant de fermer" & Chr(10) & Chr(13) & _
  72. "Vous pouvez de toutes façons relancer le traitement quand vous le voulez"
  73.  
  74. Set mfl1 = Nothing
  75. Set mfl2 = Nothing
  76. End Sub


une fois lancé j'ai une fenêtre qui s'ouvre et m’écrit :
Le fichier du fournisseur n'a pas été trouvé.
Vérifiez le nom indiqué dans les variables : 'mpath' & 'nfich2

Comment résoudre ce problème ?
D'avance merci

Autres pages sur : erreur programation macro excel

a c 232 L Programmation
8 Novembre 2011 17:20:40

Salut,

Ajoute un \ à la fin de ton mpath
Parce qu'il y a une concaténation de faite entre mpath et nfich2:
  1. nf = Dir(mpath & nfich2 & ".xls")


Et du coup, avec tes valeurs, ça donnerait :
U:\dossier taf\0RAPPORT ANNUEL 2011REPORTING COMMUNES 2011.xls
Au lieu de :
U:\dossier taf\0RAPPORT ANNUEL 2011\REPORTING COMMUNES 2011.xls
8 Novembre 2011 19:47:58

Ok super pour la réponse rapide je teste ça demain au travail et je vous dit
Merci encore
Contenus similaires
9 Novembre 2011 07:58:47

Apparemment c'est toujours pas bon il me surligne en jaune ==> Sub Maj_prix() en me disant variable non défini.
Je doit rentrer une variable entre les parenthèse ?
a c 232 L Programmation
9 Novembre 2011 09:02:35

Toutes tes variables ne sont pas déclarées aussi dans ta fonction...
Pour les déclarer, il faut mettre:
  1. Dim nomVariable As TypeVariable

Exemple pour la 1ère:
  1. Dim mpath As String = "U:\dossier taf\0RAPPORT ANNUEL 2011\"

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS