CharlotteG
XLDnaute Nouveau
Rebonjour le forum !
Après plusieurs heures perdues à essayer de comprendre pourquoi ma macro ne fonctionne pas, je me tourne vers vous en espérant que quelqu'un pourra m'aider
J'ai une macro qui s'exécute automatiquement avant chaque sauvergarde. Son but : copier un énorme tableau dans un nouveau fichier qu'elle enregistre sous un nom (Matrice au [date du jour] à [heure]).
Tout fonctionne bien SAUF quand le tableau est filtré, là il y a une erreur d'exécution 1004 : "impossible de copier coller les informations car les zones copier et de collage sont de forme et de taille différentes".
Quand je fais l'opération manuellement (avec le tableau d'origine filtré), il n'y a pas de beug. Pourquoi alors y a-t-il un problème quand la macro s'exécute??
Voici le code :
Pourrait-il y avoir d'autres risques de beug lors de l'exécution de cette macro (cellules fusionnées, lignes ou colonnes masquées, volets figés...)?
J'espère que quelqu'un pourra m'aider
Un grand merci d'avance !
Après plusieurs heures perdues à essayer de comprendre pourquoi ma macro ne fonctionne pas, je me tourne vers vous en espérant que quelqu'un pourra m'aider
J'ai une macro qui s'exécute automatiquement avant chaque sauvergarde. Son but : copier un énorme tableau dans un nouveau fichier qu'elle enregistre sous un nom (Matrice au [date du jour] à [heure]).
Tout fonctionne bien SAUF quand le tableau est filtré, là il y a une erreur d'exécution 1004 : "impossible de copier coller les informations car les zones copier et de collage sont de forme et de taille différentes".
Quand je fais l'opération manuellement (avec le tableau d'origine filtré), il n'y a pas de beug. Pourquoi alors y a-t-il un problème quand la macro s'exécute??
Voici le code :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.ScreenUpdating = False
' But de la macro = effectuer une sauvegarde dès enregistrement.
Dim CLM As String ' Nom de la feuille active
Dim rng As String ' Nom de la cellule active
Dim Classeur_Maître As String ' Nom du classeur actif
Dim Classeur_Slave As String ' Nom du classeur destination
Dim ChDir As String ' Emplacement du classeur
Dim stHeureExport As String ' heure (hh/mm/ss)
Dim Nomfichier As String ' Nom d'enregistrement de la sauvegarde automatique.
Dim datejour As String ' Date d'aujourd'hui
CLM = ActiveSheet.Name
rng = ActiveCell.Address
datejour = Format(Now(), "dd-mm-yyyy")
stHeureExport = Format(Hour(Time), "00") & "'" & Format(Minute(Time), "00") & "'" & Format(Second(Time), "00")
Classeur_Maître = ActiveWorkbook.Name
' Mémorise le chemin du classeur.
ChDir = Application.ActiveWorkbook.Path 'chemin courant
ChDir = ChDir & "\Historique des matrices"
' On enregistre la matrice dans un nouveau fichier. On met l'heure sous forme heure / minutes / secondes (comme ça il n'y a pas de doublon).
Nomfichier = "\Matrice au " & datejour & "_" & stHeureExport
Classeur_Slave = ChDir & Nomfichier
Application.DisplayAlerts = False
ActiveSheet.Copy
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.SaveAs Filename:=Classeur_Slave
ActiveWorkbook.Close
' On revient à la cellule où l'utilisateur se trouvait.
Sheets(CLM).Select
Range(rng).Select
End Sub
Pourrait-il y avoir d'autres risques de beug lors de l'exécution de cette macro (cellules fusionnées, lignes ou colonnes masquées, volets figés...)?
J'espère que quelqu'un pourra m'aider
Un grand merci d'avance !
Dernière édition: