Appel d'Une macro d'un deuxième fichier renommé
Bonjour,
J'ai quelques difficultés avec une ligne de codes ou deux
J'ai un premier fichier dont je copie les données dans un 2e... jusque là, tout va bien.
Je doit être enregistré sous ce 2e fichier avec un nom qui est constitué du contenu de cellules de ce dernier mais que je dois effacer avant de l'enregistrer et d'ensuite rouler la macro. … jusque là tout va bien
Il est bon de noter que ce 2e fichier provient d'un fournisseur et que je n'ai pas accès au VBA.
Je ne sais donc pas comment ramener mon fichier renommé dans
Application.Run "mon fichier renommé.xlsx!Generer"
ou
Classeur = Mon fichier renommé.xlsx
Application.Run Classeur & "!Generer"
Si quelqu'un pouvait me pister, ce serait grandement apprécié
MErci et bonne journée.
Rebonjour,
Dans le fichier 17-09-2020.xlsb, module1, vous allez voir toutes les tentatives que j'ai faites… mes connaisances s'arrêtent là..:)
Bonjour,
Un essai > avec un coup de balai ...
Sub Prime1()
Dim Sh As Worksheet
Dim DerLig As Long
Dim Ligbas As Long
Dim FicGen As String
Dim Chemin As String
Application.ScreenUpdating = False
Chemin = "R:\DRFL\Budget\CISSS\Commun\DOSSIER SP\PAIE\TEST Macro PRIME 100$\"
Sheets("77").Activate
With Sheets("77")
On Error Resume Next
.ShowAllData
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
.Range("G6:J" & DerLig).AutoFilter
.Range("$G$6:J" & DerLig).AutoFilter Field:=3, Criteria1:="<>"
.Range("$G$6:J" & DerLig).AutoFilter Field:=4, Criteria1:="<>0", Operator:=xlAnd
.Range("$G$6:J" & DerLig).Copy
Workbooks.Open Filename:=Chemin & "\import-export.xlsb"
With Sheets("Formulaire")
Ligbas = .Range("A" & Rows.Count).End(xlUp).Row + 1
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
.Cells(Ligbas, "A").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
' changer la période complémentaire
.Range("R8").FormulaR1C1 = "11"
.Range("R8").Copy
.Range("R9:R" & DerLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.SaveAs Filename:=Chemin & [A8] & " - " & [B8] & ".xlsb" _
, FileFormat:=xlExcel12, CreateBackup:=False
FicGen = Chemin & [A8] & " - " & [B8] & ".xlsb"
.Rows("8:8").Delete Shift:=xlUp
ActiveWorkbook.Save
End With
Application.Run "'" & CStr(FicGen) & "'!Generer"
ActiveWorkbook.Close
End With
Windows("17-09-2020.xlsb").Activate
'Next Sh
'Call Prime2
End Subric
Bon matin ric,
ça fonctionne parfaitement avec le fichier envoyé. Milles merci.
Mon erreur c'est que pour minimiser l'espace, j'ai enlevé les autres onglets.
Il y a donc plusieurs onglets à traiter, d'où le "Next Sh" :
dépassé le premier, ça ne fonctionne plus.
est-ce que tu pourrais jeter un œil si je t'envoi un fichier avec au moins 3 onglets… il peut y en avoir une 50taine :)
Bonjour,
Cette seule macro effectue le traitement de toutes les feuilles du classeur ...
J'ai aussi désactivé les avertissements du genre " Le fichier a été modifié, voulez-vous l'enregistrer ? " ...
Sub Prime1()
Dim Sh As Worksheet
Dim DerLig As Long
Dim Ligbas As Long
Dim FicGen As String
Dim Chemin As String
Application.ScreenUpdating = False
Chemin = "R:\DRFL\Budget\CISSS\Commun\DOSSIER SP\PAIE\TEST Macro PRIME 100$\"
For Each Sh In ThisWorkbook.Worksheets
Sh.Activate
With Sh
On Error Resume Next
.ShowAllData
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
.Range("G6:J" & DerLig).AutoFilter
.Range("$G$6:J" & DerLig).AutoFilter Field:=3, Criteria1:="<>"
.Range("$G$6:J" & DerLig).AutoFilter Field:=4, Criteria1:="<>0", Operator:=xlAnd
.Range("$G$6:J" & DerLig).Copy
Workbooks.Open Filename:=Chemin & "\import-export.xlsb"
With Sheets("Formulaire")
Ligbas = .Range("A" & Rows.Count).End(xlUp).Row + 1
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
.Cells(Ligbas, "A").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
' changer la période complémentaire
.Range("R8").FormulaR1C1 = "11"
.Range("R8").Copy
.Range("R9:R" & DerLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Chemin & [A8] & " - " & [B8] & ".xlsb" _
, FileFormat:=xlExcel12, CreateBackup:=False
Application.DisplayAlerts = True
FicGen = Chemin & [A8] & " - " & [B8] & ".xlsb"
.Rows("8:8").Delete Shift:=xlUp
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End With
Application.Run "'" & CStr(FicGen) & "'!Generer"
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End With
Windows("17-09-2020.xlsb").Activate
Next Sh
MsgBox " Le traitement de toutes les feuilles est terminé. "
End Subric
Merci,
De toute beauté,
J'analyse l'utilisation du CStr et surtout des ' et des ''.
Encore merci, c'est exactement le résultat pour lequel j'ai trop essayé de trucs,
Bonjour,
CStr(FicGen) > CStr force le contenu de la variable FicGen à être reconnu comme du texte (String) même si ce sont des chiffres ...
ric