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

4 réponses

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

    0
  2. 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
  3. NonoM45 Messages postés 1033 Date d'inscription   Statut Membre Dernière intervention   4
     

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