Erreur d'exécution '1004': la méthode 'Range' de l'objet'_Gl
RésoluBarbo_14 -
Bonjour,
J'ai ce code qui fonctionne très bien dans un autre fichier Excel pour transformer les données en CSV. Mais en copiant cette macro dans un nouveau fichier Excel, cela me donne cette erreur ;
Erreur d'exécution '1004': la méthode 'Range' de l'objet'_Global' à échoué
et voici mon code ;
Sub Export_csv()
Application.ScreenUpdating = False
Nom = Workbooks(ActiveWorkbook.Name).FullName
Nom = Left(Nom, Len(Nom) - 5) & "_" & Year(Date) & Month(Date) & Day(Date)
ActiveWorkbook.Unprotect Password:="sprs-al8"
Worksheets("Données").Visible = xlSheetVisible
Sheets("Données").Select
ActiveSheet.Unprotect Password:="sprs-al8"
Range("Données").Select <-- le débogueur pointe sur cette ligne
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=(Nom & ".csv"), FileFormat:=xlCSV, CreateBackup:=False
ActiveWindow.Close
Application.DisplayAlerts = True
Sheets("CSV").Select
Worksheets("Données").Visible = xlSheetHidden
ActiveWorkbook.Protect Password:="sprs-al8"
MsgBox ("Le fichier au format .csv a été enregisté sous : " & Workbooks(ActiveWorkbook.Name).Path)
End Sub
Windows / Chrome 103.0.0.0
4 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
il manque probablement une zone nommée "Données" dans le nouveau classeur.
-
Bonjour,
Merci pour votre réponse. Mais j'ai une feuille nommé "Données" parmi d'autres feuilles
d'où ma confusion.
De plus, je ne suis pas très à l'aise avec le code VBA..
-
Bonjour Barbo_14
Voici le code optimisé tel que je l'ai compris
Sub Export_csv() Dim Wbk As Workbook Dim Nom As String ' Désactiver le rafraichissement Application.ScreenUpdating = False ' Nom du futur classeur csv Nom = Workbooks(ActiveWorkbook.Name).FullName Nom = Left(Nom, Len(Nom) - 5) & "_" & Year(Date) & Month(Date) & Day(Date) ' Définir ce classeur St Wbk = ActiveWorkbook ' Déprotéger le classeur Wbk.Unprotect Password:="sprs-al8" ' Avec la feuille "Données" With Wbk.Worksheets("Données") ' La rendre visible .Visible = xlSheetVisible ' La déprotégée .Unprotect Password:="sprs-al8" ' Copier la feuille dans un nouveau classeur .Copy End With ' Avec le nouveau classeur With ActiveWorkbook ' Sauvegarder sou le nom définit .SaveAs Filename:=Nom & ".csv", FileFormat:=xlCSV, CreateBackup:=False ' Le fermer .Close SaveChanges:=False End With ' Avec la feuille "Données" With Wbk.Worksheets("Données") ' Protéger la feuille .Protect Password:="sprs-al8" ' La rendre invisible .Visible = xlSheetHidden End With ' Protéger le classeur Wbk.Protect Password:="sprs-al8" Set Wbk = Nothing ' Petit message MsgBox ("Le fichier au format .csv a été enregisté sous : " & Workbooks(ActiveWorkbook.Name).Path) ' réactiver le rafraichissement Application.ScreenUpdating = True End SubA+
-
Merci beaucoup !
Ton code fonctionne parfaitement, j'ai juste dû supprimer la Dim Wbk As Workbook et dans le code la remplacer par ActiveWorkbook, car il me donnait des erreurs de compilation.
Mais encore merci, tu me sauves