lancer un batch à partir d'une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bonjourdoc

XLDnaute Nouveau
Salut,

J'ai créé une macro sur excel 2010 me permettant de compiler plein de fichiers .xls en un seul, pour faire des statistiques.

On m'a aidé à créer un batch qui me permet de copier mes fichiers .xls vers des autres dossiers.

Voici le code:
Code:

@Echo off
Copy "*.xls" "C:\Users\pret\Desktop\Pre_reservations\BE"
Copy "*.xls" "C:\Users\pret\Desktop\Pre_reservations\NE"
del C:\Users\pret\Desktop\Pre_reservations\BE\global_prereservation_JU.xls
del C:\Users\pret\Desktop\Pre_reservations\NE\global_prereservation_JU.xls
Echo Le(s) fichier(s) xls a/ont bien ete copies !
Ping localhost -n 3 > nul


Ma macro s'exécute parfaitement. Puis je lance mon batch copie.bat manuellement; il s'exécute normalement aussi.

J'aimerais que ma macro lance copie.bat automatiquement.

J'utilise la ligne de commande VBA suivante:
Code:

Call Shell("C:\Users\pret\Desktop\Pre_reservations\copie.bat")


Le batch se lance, mais il ne s'exécute pas comme si je le lançais manuellement!
Résultat:


*.xls
Le fichier spécifié est introuvable.


Je ne comprends pas pourquoi mon copie.bat ne se lance pas correctement à partir de ma macro.

HELP!
 
Re : lancer un batch à partir d'une macro

Yop!

Voici le code batch:
Code:
@Echo off
Copy "*.xls" "C:\Users\pret\Desktop\Pre_reservations\BE"
Copy "*.xls" "C:\Users\pret\Desktop\Pre_reservations\NE"
del C:\Users\pret\Desktop\Pre_reservations\BE\global_p rereservation_JU.xls
del C:\Users\pret\Desktop\Pre_reservations\NE\global_p rereservation_JU.xls
Echo Le(s) fichier(s) xls a/ont bien ete copies !
Ping localhost -n 3 > nul


...et voilà le code VBA:
Code:
Private Sub Workbook_Open()
 Dim chemin As String ' classeur regroupé
 Dim rep As String ' répertoire à traiter
 Dim fic As String ' classeur regroupé
 Dim ligne As Long ' ligne écriture
 Dim nbc As Integer ' nombre de classeurs
 Dim nbf As Integer ' nombre de feuilles
 Dim nbl As Integer ' nombre de lignes
 Dim mxc As Long ' maximum colones feuille
 Dim c As Integer ' nombre de colonnes
 Dim l As Long ' ligne lecture
 Dim Wf As Worksheet ' feuille regroupement
 Dim Wl As Worksheet ' feuille regroupée
 rep = ThisWorkbook.Path & "\"
 Application.ScreenUpdating = False
 Application.EnableEvents = False
 Application.DisplayAlerts = False
 On Error GoTo fin
 mxc = Cells(1, ActiveSheet.UsedRange.Columns.Count).End(xlToRight).Column
 Set Wf = ThisWorkbook.Sheets("Feuil1") ' variable feuille groupe
 Wf.Cells.ClearContents
 nbc = 0: nbf = 0 ' initialisation variables
 ligne = 1
 fic = Dir(rep & "*.xls") ' recherche fichiers
 While fic <> ""
 If fic <> ThisWorkbook.Name Then
 chemin = rep & fic ' chemin fichiers
 Workbooks.Open chemin, 0 ' ouverture
 Set Wl = ActiveWorkbook.Sheets("JU HEP BEJUNE - Médiathèque de ")
 nbl = Wl.UsedRange.Rows.Count
 c = Wl.UsedRange.Columns.Count
 If ligne > 2 Then l = 2 Else l = 1 ' une seule fois le titre
 Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Wf.Cells(ligne, 1)
 ligne = ligne + nbl - l + 1
 nbf = nbf + 1
 ActiveWorkbook.Close SaveChanges:=False ' Fermeture du classeur
 nbc = nbc + 1
 End If
 fic = Dir
 Wend
 For l = ligne To 2 Step -1
 If Wf.Cells(l, mxc).End(xlToLeft).Column = 1 _
 And Wf.Cells(l, 1).Value = "" Then
 Wf.Rows(l).Delete
 ligne = ligne - 1
 End If
 Next l
fin:
 MsgBox nbc & " classeurs regroupés avec " & nbf & " feuilles et " & ligne & " lignes"
 Application.ScreenUpdating = True
 Application.EnableEvents = True
 Application.DisplayAlerts = True
 
 ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
     ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2"), _
         SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
     x = ActiveWorkbook.Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
     With ActiveWorkbook.Worksheets("Feuil1").Sort
         .SetRange Range("A2:P" & x)
         .Header = xlNo
         .MatchCase = False
         .Orientation = xlTopToBottom
         .SortMethod = xlPinYin
         .Apply
     End With
     ActiveSheet.Range("$A$1:$P$" & x).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, _
         7, 8, 9, 10, 11, 12, 13, 14, 15, 16), Header:=xlYes
 
Call Shell("C:\Users\pret\Desktop\Pre_reservations\copie.bat")
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour