Macro Excel - pb ouverture et fermeture classeurs
Résolu
Utilisateur anonyme
-
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
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:
- Macro Excel - pb ouverture et fermeture classeurs
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Déplacer colonne excel - Guide
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
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
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 !!!