Comment modifier la destination d'un classeur créé par macro

Bonjour,

J'ai besoin d'aide car j'ai une macro qui me génère un classeur et l'enregistre automatiquement.

J'aimerais en fait que le dossier soit enregistré dans mon répertoire C:/documents/"cellule B1 de la feuille Prestation"/

Et petite difficulté si le dossier "cellule B1 de la feuille Prestation" n'existe pas, le créer automatiquement mais je ne sais pas si c'est faisable.

Pour info, je ne suis pas le créateur de la macro alors difficile pour moi de le faire moi même.

Voici la macro:

Sub Enreg_classeur()
  On Error GoTo ErrSelect
  Dim Fichier As String, Feuille As String, dlig As Long
  Fichier = [B5] & ".xlsx": Feuille = [B6]
  If Dir(Fichier) = "" Then
    Workbooks.Add -4167: ActiveWorkbook.Author = ""
  Else
    Workbooks.Open Fichier: Worksheets(Feuille).Select
  End If
  dlig = [A1].CurrentRegion.Rows.Count
  If dlig > 1 Then Range("A1:F" & dlig).ClearContents
  With Workbooks("Données")
    With .Worksheets("Liste")
      .[A1].CurrentRegion.SpecialCells(xlCellTypeVisible).Copy [A1]
      Columns("A:F").AutoFit
    End With
    With .Worksheets("Prestation")
      ActiveSheet.Name = .[B6]
    End With
  End With
  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs Fichier
  Application.DisplayAlerts = True
  Exit Sub
ErrSelect:
  Worksheets.Add , Worksheets(Worksheets.Count)
  Resume Next
End Sub

Merci pour votre aide.

Bonjour,

Une piste probablement à adapter. Quand on crée un code il est bon de ne pas mettre en place un gestionnaire d'erreur dès le début afin de voir où elles peuvent se produire et c'est seulement après avoir apporté les modifications pour qu'elles ne se produisent plus qu'on peut mettre en place ce gestionnaire pour gérer les erreurs inattendues qui peuvent survenir dans des cas qu'il est difficile de prévoir. Autre chose, quand on crée un classeur, il est fortement recommandé d'utiliser une variable (initialisée avec Set) afin de savoir à quel objet on fait référence, surtout quand on manipule plusieurs classeurs, dans ton cas, 3. Le classeur où se trouve la procédure et où celle-ci récupère les valeurs telles que le nom du fichier à ouvrir et le nom de la feuille, le classeur (Données) où sont récupéré les valeurs et le classeur qui est créé :

Sub Enreg_classeur()

    Dim Cls As Workbook
    Dim Fichier As String
    'Dim Feuille As String <-- pas utilisée car on n'est pas sûr du nom de la feuille !
    Dim dlig As Long

    'classeur où se trouve cette procédure ! A adpater...
    With ThisWorkbook.Worksheets("Prestation")

        Fichier = "C:/documents/" & .Range(B1).Value & ".xlsx"

        dlig = .Range("A1").CurrentRegion.Rows.Count
        If dlig > 1 Then Range("A1:F" & dlig).ClearContents

    End With

    If Dir(Fichier) = "" Then
        'création d'un classeur avec une seule feuille
        Set Cls = Workbooks.Add - 4167: ActiveWorkbook.Author = ""
    Else
        Set Cls = Workbooks.Open(Fichier)
    End If

    'classeur ("Données") et feuille ("Liste") où sont récupérées les valeurs
    With Workbooks("Données")

        With .Worksheets("Liste")

            'copiées dans le nouveau classeur à partir de A1
            .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Cls.Worksheets(1).Range("A1")
            Cls.Worksheets(1).Columns("A:F").AutoFit

        End With

        'renomme la feuille
        Cls.Worksheets(1).Name = ThisWorkbook.Worksheets("Prestation").Range("B6").Value

    End With

    'enregistre
    Application.DisplayAlerts = False
    Cls.SaveAs Fichier
    Application.DisplayAlerts = True

End Sub

Bonsoir,

Merci pour la réponse j'essaie de suite.

Cdt.

Rechercher des sujets similaires à "comment modifier destination classeur cree macro"