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

Résolu
Barbo_14 -  
 Barbo_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

A voir également:

4 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

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

0
Barbo_14
 

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
0
NonoM45 Messages postés 771 Date d'inscription   Statut Membre Dernière intervention  
 

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
Barbo_14
 

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