Bonjour à Tous,
Je souhaiterai copier plusieurs onglets de même couleur vers un autre classeur puis de maintenir le classeur source. En plus précis fermer la copie du fichier (format xlsx) et maintenir ouvert le fichier source (format xlsm). Tout marche, sauf qu'Excel me ferme les 2 fichiers
Dés lors, ci-aprés le code VBA initial proposé avec la fonction SaveAs :
-----------------------------------------------------------------------------------------------------
Sub SaveEtatFiXls()
ini_ACC
On Error GoTo Gesterror
Sheets("F-Page de garde").Activate
Dim Onglet As Worksheet
Dim NOM As String
For Each Onglet In ActiveWorkbook.Sheets
NOM = Onglet.Name
If Onglet.Tab.ColorIndex = 6 Then Onglet.Select Replace:=False
Next
Dim Prenom, sh As Worksheet
Application.DisplayAlerts = False
For Each sh In Worksheets
Prenom = sh.Name
If sh.Tab.ColorIndex <> 6 Then sh.Delete
Next sh
Application.DisplayAlerts = False
Selection.Copy
Selection.Cells.Select
Range("A19").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
NomCopie = ThisWorkbook.Name
Adresse = ThisWorkbook.Path
HeureCopie = Format(Now, "hh-mm")
DateCopie = Format(Now, "dd_mm_yyyy")
NomFichier = Adresse & "\" & NomCopie & "_" & DateCopie & "_" & HeureCopie & ".xlsx"
Enregistrement:
ActiveWorkbook.SaveCopyAs NomFichier
Workbooks(NomFichier).Close SaveChanges:=True 'sans sauvegarde (True si sauvegarde)
Gesterror:
If Err.Number = 1004 And CPT = 1 Then
MsgBox "Les paramètres de tranférer de la Liasse Fiscale Electronique n'ont pas marché!"
Exit Sub
End If
CPT = 1
Application.DisplayAlerts = True
End Sub
-------------------------------------------------------------------------------------------------------------------------------------------------
Aprés plusieurs recherches j'ai modifié le code initial en utilisant SaveCopyAs, sauf que le format du fichier xlsm ne me convient pas. En effet, il est préférable que le classeur copié à partir du classeur source soit au format xlsx - surtout ça permet de ne pas copier aussi les macro du fichier source.
J'ai fait quelques bidoules du code modifié mais aucune satisfaction :
Ci-aprés le code VBA modifié :
-------------------------------------------------------------------------------------------------------------------------------------------------
Sub SaveEtatFiXls()
ini_ACC
On Error GoTo Gesterror
Sheets("F-Page de garde").Activate
Dim Onglet As Worksheet
Dim NOM As String
For Each Onglet In ActiveWorkbook.Sheets
NOM = Onglet.Name
If Onglet.Tab.ColorIndex = 6 Then Onglet.Select Replace:=False
Next
Dim Prenom, sh As Worksheet
Application.DisplayAlerts = False
For Each sh In Worksheets
Prenom = sh.Name
If sh.Tab.ColorIndex <> 6 Then sh.Delete
Next sh
Application.DisplayAlerts = False
Selection.Copy
Selection.Cells.Select
Range("A19").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Dim NomCopie, DateCopie, HeureCopie, Adresse, NomFichier1, NomFichier2
NomCopie = ThisWorkbook.Name
Adresse = ThisWorkbook.Path
HeureCopie = Format(Now, "hh-mm")
DateCopie = Format(Now, "dd_mm_yyyy")
NomFichier1 = Adresse & "\" & NomCopie & "_" & DateCopie & "_" & HeureCopie & ".xlsm"
NomFichier2 = Adresse & "\" & NomCopie & "_" & DateCopie & "_" & HeureCopie & ".xlsx"
Enregistrement:
ActiveWorkbook.SaveCopyAs NomFichier1
ActiveWorkbook.SaveAs Filename:=NomFichier2, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Workbooks(NomFichier2).Close SaveChanges:=True 'sans sauvegarde (True si sauvegarde)
Gesterror:
If Err.Number = 1004 And CPT = 1 Then
MsgBox "Les paramètres de tranférer de la Liasse Fiscale Electronique n'ont pas marché!"
Exit Sub
End If
CPT = 1
Application.DisplayAlerts = True
End Sub
-------------------------------------------------------------------------------------------------------------------------------------------------
Le fichier est trop lourd pour être chargé. En résumé de mon souhait : Copie le Fichier 1 : classeur source xlsm en Ficher 2 : classeur xlsx - puis ferme le fichier 2 et maintenir ouvert le fichier 1. Le fichier 2 ne doit contenir aucun macro
Merci pour votre aide les Experts en Code VBA
Bien cordialement
Je souhaiterai copier plusieurs onglets de même couleur vers un autre classeur puis de maintenir le classeur source. En plus précis fermer la copie du fichier (format xlsx) et maintenir ouvert le fichier source (format xlsm). Tout marche, sauf qu'Excel me ferme les 2 fichiers
Dés lors, ci-aprés le code VBA initial proposé avec la fonction SaveAs :
-----------------------------------------------------------------------------------------------------
Sub SaveEtatFiXls()
ini_ACC
On Error GoTo Gesterror
Sheets("F-Page de garde").Activate
Dim Onglet As Worksheet
Dim NOM As String
For Each Onglet In ActiveWorkbook.Sheets
NOM = Onglet.Name
If Onglet.Tab.ColorIndex = 6 Then Onglet.Select Replace:=False
Next
Dim Prenom, sh As Worksheet
Application.DisplayAlerts = False
For Each sh In Worksheets
Prenom = sh.Name
If sh.Tab.ColorIndex <> 6 Then sh.Delete
Next sh
Application.DisplayAlerts = False
Selection.Copy
Selection.Cells.Select
Range("A19").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
NomCopie = ThisWorkbook.Name
Adresse = ThisWorkbook.Path
HeureCopie = Format(Now, "hh-mm")
DateCopie = Format(Now, "dd_mm_yyyy")
NomFichier = Adresse & "\" & NomCopie & "_" & DateCopie & "_" & HeureCopie & ".xlsx"
Enregistrement:
ActiveWorkbook.SaveCopyAs NomFichier
Workbooks(NomFichier).Close SaveChanges:=True 'sans sauvegarde (True si sauvegarde)
Gesterror:
If Err.Number = 1004 And CPT = 1 Then
MsgBox "Les paramètres de tranférer de la Liasse Fiscale Electronique n'ont pas marché!"
Exit Sub
End If
CPT = 1
Application.DisplayAlerts = True
End Sub
-------------------------------------------------------------------------------------------------------------------------------------------------
Aprés plusieurs recherches j'ai modifié le code initial en utilisant SaveCopyAs, sauf que le format du fichier xlsm ne me convient pas. En effet, il est préférable que le classeur copié à partir du classeur source soit au format xlsx - surtout ça permet de ne pas copier aussi les macro du fichier source.
J'ai fait quelques bidoules du code modifié mais aucune satisfaction :
Ci-aprés le code VBA modifié :
-------------------------------------------------------------------------------------------------------------------------------------------------
Sub SaveEtatFiXls()
ini_ACC
On Error GoTo Gesterror
Sheets("F-Page de garde").Activate
Dim Onglet As Worksheet
Dim NOM As String
For Each Onglet In ActiveWorkbook.Sheets
NOM = Onglet.Name
If Onglet.Tab.ColorIndex = 6 Then Onglet.Select Replace:=False
Next
Dim Prenom, sh As Worksheet
Application.DisplayAlerts = False
For Each sh In Worksheets
Prenom = sh.Name
If sh.Tab.ColorIndex <> 6 Then sh.Delete
Next sh
Application.DisplayAlerts = False
Selection.Copy
Selection.Cells.Select
Range("A19").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Dim NomCopie, DateCopie, HeureCopie, Adresse, NomFichier1, NomFichier2
NomCopie = ThisWorkbook.Name
Adresse = ThisWorkbook.Path
HeureCopie = Format(Now, "hh-mm")
DateCopie = Format(Now, "dd_mm_yyyy")
NomFichier1 = Adresse & "\" & NomCopie & "_" & DateCopie & "_" & HeureCopie & ".xlsm"
NomFichier2 = Adresse & "\" & NomCopie & "_" & DateCopie & "_" & HeureCopie & ".xlsx"
Enregistrement:
ActiveWorkbook.SaveCopyAs NomFichier1
ActiveWorkbook.SaveAs Filename:=NomFichier2, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Workbooks(NomFichier2).Close SaveChanges:=True 'sans sauvegarde (True si sauvegarde)
Gesterror:
If Err.Number = 1004 And CPT = 1 Then
MsgBox "Les paramètres de tranférer de la Liasse Fiscale Electronique n'ont pas marché!"
Exit Sub
End If
CPT = 1
Application.DisplayAlerts = True
End Sub
-------------------------------------------------------------------------------------------------------------------------------------------------
Le fichier est trop lourd pour être chargé. En résumé de mon souhait : Copie le Fichier 1 : classeur source xlsm en Ficher 2 : classeur xlsx - puis ferme le fichier 2 et maintenir ouvert le fichier 1. Le fichier 2 ne doit contenir aucun macro
Merci pour votre aide les Experts en Code VBA
Bien cordialement