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

Y compris Power BI, Power Query et toute autre question en lien avec Excel
B
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 :
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é
Windows(MonFichier & ".xlsx").Activate
à la place de
Windows("SA38_1311.xlsx").Activate
Mais ça n'a pas marché.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'518
Appréciations reçues : 203
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 14 novembre 2018, 18:01

Bonjour,

essai avec,
WorkBooks(MonFichier & ".xlsx").Activate
Si le problème est résolu, pensez au clic sur le bouton
isabelle
B
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