Macro Excel - pb ouverture et fermeture classeurs

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Je voudrais créer des copies de mon fichier source grace à une liste de noms stockée dans celui ci. Ce bout de code marche, mais lorsque je veux re-ouvrir le classeur source (la macro fait un "enregistrer sous") et fermer le courant, ca bloque et ne marche pas. ca me met 'Erreur d'execution 9' 'L'indice n'appartient pas à la sélection'
Où est-ce que je me trompe ? (ce sont les deux lignes en gras qui plantent ...)
merci à vous.

Private Sub CommandButton3_Click()
Dim p As String, i As Long
initial = ActiveWorkbook.Name 'pour stocker le nom du classeur source
p = ActiveWorkbook.Path & "\" 'pour enregistrer les classeurs créés au meme chemin

For i = 1 To 3
j = Cells(i + 7, 1)
ActiveWorkbook.SaveAs Filename:=p & "BOM_" & j & ".xlsm"
ActiveWorkbook.Unprotect
ActiveWorkbook.Sheets(3).Name = j
ActiveWorkbook.Protect
ActiveWorkbook.Save
Next i
Workbooks(initial).Open
ActiveWorkbooks.Close

End Sub

1 réponse

  1. WeaponEDGE
     
    Bonjour,

    Pour ouvrir un fichier il faut toujours mettre Workbooks.Open
    suivi entre parenthèse du chemin complet + le Nom du fichier

    Pour la fermeture j'ai créé une boucle de recherche pour qu'il active le fichier à fermer suivi du code de fermeture suivant : ActiveWorkbook.Close

    Ce dernier peut être suivi de True où False si tu souhaites forcer la sauvegarde ou non du fichier.

    Voici le code Modfié :

    Sub CommandButton3_Click()
    Dim Chemin As String, i As Long
    'Stoque le Nom du Fichier Initial
    Initial = ActiveWorkbook.Name
    'Stoque Le Chemin d'accès du Fichier Initial
    Chemin = ActiveWorkbook.Path & "\"

    For i = 1 To 3
    j = Cells(i + 7, 1)
    'Détermination du nom du fichier de destination
    Nom_Fichier = "BOM_" & j & ".xlsm"
    ActiveWorkbook.SaveAs Filename:=Chemin & Nom_Fichier
    ActiveWorkbook.Unprotect
    ActiveWorkbook.Sheets(3).Name = j
    ActiveWorkbook.Protect
    ActiveWorkbook.Save

    'Ouverture du Fichier Initial
    Workbooks.Open (Chemin & Initial)

    'Recherche du Fichier Destination pour Fermeture
    For u = 1 To Workbooks.Count
    Nom_Bis = Workbooks(u).Name
    If Nom_Fichier = Nom_Bis Then
    Workbooks(u).Activate
    ActiveWorkbook.Close
    Exit For
    End If
    Next u
    Next i
    End Sub
    1
    1. Utilisateur anonyme
       
      Merci !
      Pour la recherche du fichier Destination pour fermeture, comme ma macro copie le classeur ouvert en faisant un enregistrer sous, à la fin, je ne me retrouve qu'avec un seul autre classeur ouvert que je peut directement appeler avec la variable Nom_Fichier. Merci pour tout !!!
      0