XL 2016 Macro copie feuille avec USF

guiyom

XLDnaute Nouveau
Bonjour,

Je rencontre actuellement un problème avec une macro qui a pour fonction la copie d'une feuille de mon classeur.

Celle-ci fonctionné très bien jusqu'à l'ajout d'un USF que je n'arrive pas à lui faire prendre en charge.

En PJ un fichier simplifié illustrant le problème.

Cordialement

Edit : Plutôt que de créer une copie du USF avec la macro peut-être est-il plus simple de supprimer de la copie le contenu (visualiser le code) de la feuille "impropre" ? De cette façon l'appel de l'USF n'aura pas lieu.
 

Fichiers joints

Dernière édition:

guiyom

XLDnaute Nouveau
Bon ne trouvant pas de solution à mon problème j'ai fait une parade nul et pas propre à base de If qui au final désactive l'appel du USF sur la copie.
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour guiyom, le forum,

Oui vous pédalez allègrement dans la choucroute, voyez plutôt ceci :
Code:
Sub sav()
Dim chemin$
chemin = ThisWorkbook.Path & "\" 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
    ThisWorkbook.Sheets("IMPROPRE").Cells.Copy .[A1]
    .[A1].Copy .[A1] 'allège la mémoire
    .Name = "Stock du " & .[O2] & "." & .[P2] & "." & .[Q2]
    .[K6,O2:Q2] = "" 'supprime les formules
    .Parent.SaveAs Filename:=chemin & .Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    .Parent.Close
End With
End Sub
L'enregistrement en .xlsx suffit puisqu'il n'y a pas de macro.

Bonne journée.
 

job75

XLDnaute Barbatruc
Re,

Autre solution :
Code:
Sub sav()
Dim chemin$
chemin = ThisWorkbook.Path & "\" 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False 'désactive les évènements
Sheets("IMPROPRE").Copy
With ActiveWorkbook.Sheets(1)
    .Name = "Stock du " & .[O2] & "." & .[P2] & "." & .[Q2]
    .[K6,O2:Q2] = "" 'supprime les formules
    .Parent.SaveAs Filename:=chemin & .Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    .Parent.Close
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Les macros de la feuille sont supprimées puisqu'on enregistre en .xlsx.

A+
 

guiyom

XLDnaute Nouveau
Re,

Autre solution :
Code:
Sub sav()
Dim chemin$
chemin = ThisWorkbook.Path & "\" 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False 'désactive les évènements
Sheets("IMPROPRE").Copy
With ActiveWorkbook.Sheets(1)
    .Name = "Stock du " & .[O2] & "." & .[P2] & "." & .[Q2]
    .[K6,O2:Q2] = "" 'supprime les formules
    .Parent.SaveAs Filename:=chemin & .Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    .Parent.Close
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Les macros de la feuille sont supprimées puisqu'on enregistre en .xlsx.

A+
Bonjour Job75

Encore une fois vous apporté réponse à mon problème.
Merci pour cette solution qui marche très bien, effectivement je n'avais pas pensé que sans le USF et les macros le format .xlsx convenait très bien.
C'est au final beaucoup plus propre que des "IF".

Cordialement
 
Dernière édition:

Haut Bas