Erreur d'exécution '1004': la méthode 'Range' de l'objet'_Gl

Résolu/Fermé
Barbo_14 - 5 août 2022 à 11:49
 Barbo_14 - 8 août 2022 à 09:42

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

A voir également:

4 réponses

yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
5 août 2022 à 12:02

bonjour,

il manque probablement une zone nommée "Données" dans le nouveau classeur.

0

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..

0
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
5 août 2022 à 12:37
0
NonoM45 Messages postés 268 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 21 mars 2024
5 août 2022 à 16:03

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 Sub

A+

0

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 

0