Fermer un fichier dont le nom varie Le sujet est résolu

Forum pour toutes vos questions à propos d'Excel (avec ou sans macros) ...
Ben74
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 14 novembre 2018
Version d'Excel : 2016

Message par Ben74 » 14 novembre 2018, 17:14

Bonjour à tous,

Je construis une macro qui ouvre un classeur avec un nom qui varie en fonction des données d'une cellule, copie/colle des infos dans le classeur de la macro, un peu de mise en page et qui doit fermer le fichier.

Avec l'aide de l'enregistreur, voici mon code :

Code : Tout sélectionner

Sub automatisationMAJ()
  
    
' SA38

' Ouverture de l'extract SA38 du jour

   Dim MonApplication As Object
   Dim MonFichier As String
   Set MonApplication = CreateObject("Shell.Application")
 
   MonFichier = range("D1") & ".xlsx"
   
   Workbooks.Open Filename:="\\chemin\chemin\" & MonFichier
   
   Set MonApplication = Nothing
   
  ' Copier/coller les donner de l'extraction SA38 du jour
  
       ' Selectionner les colonnes A à AH de l'onglet SA38 et les supprimer
  
    Windows("Dashboard_V2.xlsm").Activate
    Sheets("SA38").Select
    range("A:AH").Select
    range("A:AH").Delete
    
      ' Aller copier/coller les valeurs de l'extract sur l'onglet SA38 du DB
    
	[Surligner]'Windows("SA38_1311.xlsx").Activate
	[/Surligner]
    Windows(MonFichier & ".xlsx").Activate
    Sheets("Feuil1").Select
    range("A2").Select
    Selection.CurrentRegion.Select
    Selection.Copy
    
    Windows("Dashboard_V2.xlsm").Activate
    Sheets("SA38").Select
    range("Tableau4[[#Headers],[Selection.CurrentRegion.Select]]").Select
    ActiveSheet.Paste
    
    range("B:B,H:H").Select
    range("Tableau4[[#Headers],[Dél Exp]]").Activate
    Selection.NumberFormat = "m/d/yyyy"
  
        ' Tri par ref du plus gd au plus petit et par Del exp du plus ancien au plus récent
        
    ActiveWorkbook.Worksheets("SA38").ListObjects("Tableau4").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("SA38").ListObjects("Tableau4").Sort.SortFields.Add _
        Key:=range("Tableau4[Ref SAP]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("SA38").ListObjects("Tableau4").Sort.SortFields.Add _
        Key:=range("Tableau4[Dél Exp]"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("SA38").ListObjects("Tableau4").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
  
    ' Copier/coller les formules en orange + étendre la sélection jusqu'en bas
        
    Sheets("Procédure").Select
    range("O2:U2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("SA38").Select
    
    range("AI2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=range( _
        "Tableau4[[Stock + WIP - Expé]:[En stock]]")
    range("Tableau4[[Stock + WIP - Expé]:[En stock]]").Select
    
    'Copier/coller ses cellules pour ne garder que les valeurs et non les formules
    
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
   ' MAJ des formules de AP à AV
   range("AP2:AV2").Select
    Selection.AutoFill Destination:=range( _
        "Tableau4[[Commande&poste&éché]:[Color]]")
    range("Tableau4[[Commande&poste&éché]:[Color]]").Select
    
    ' Fermer le fichier de l'extraction SA38
    
   [Surligner]Windows("SA38_1311.xlsx").Activate
    Windows("SA38_1311.xlsx").Close[/Surligner]
    

End Sub
Initialement ça a fonctionné (code en commentaire, gras, italique, souligné) mais je me suis rendu compte que la macro n'utilisait plus la variable "MonFichier" pour l'activer puis pour le fermer ensuite. donc logiquement quand les jours vont passé et que mon fichier d'extraction deviendra par exemple SA38_2212, la macro ouvrira le fichier mais ne pourra par effectuer le reste des actions.

Ma question :
Comment faire pour que le nom du fichier reste variable et que la macro puisse éxecuter les différentes actions ?

Merci,

PS : comme vous le verrez dans la macro j'ai testé

Code : Tout sélectionner

Windows(MonFichier & ".xlsx").Activate
à la place de

Code : Tout sélectionner

Windows("SA38_1311.xlsx").Activate
Mais ça n'a pas marché.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 3050
Appréciations reçues : 95
Inscrit le : 16 mars 2017
Version d'Excel : 2010 FR

Message par i20100 » 14 novembre 2018, 18:01

Bonjour,

essai avec,

Code : Tout sélectionner

WorkBooks(MonFichier & ".xlsx").Activate
S'il vous plaît, pas de messagerie personnelle pour vos questions. La réponse peut servir aux autres membres. Merci!
isabelle
Ben74
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 14 novembre 2018
Version d'Excel : 2016

Message par Ben74 » 14 novembre 2018, 18:43

Hello !

Bien vu ça fonctionne !

Merci :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message