Macro Excel - pb ouverture et fermeture classeurs

Résolu/Fermé
Utilisateur anonyme - 16 juil. 2013 à 09:53
 Utilisateur anonyme - 16 juil. 2013 à 14:29
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


A voir également:

1 réponse

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
Utilisateur anonyme
16 juil. 2013 à 14:29
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