Macro copier fichier Excel selon nombre liste avec changement de nom
debutantenmacro
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute sur le forum et en VBA et je n'ai pas réussi à adapter ce que j'ai trouvé à ma problématique.
Je possède 2 fichiers :
- fichier 1 : mon fichier à copier
- fichier 2 : fichier qui contiendra les macros et un onglets avec une liste de nom
On me demande de copier mon fichier 1 autant de fois que j'ai de nom sur ma liste en renommant le fichier créer.
J'ai fait le code suivant mais j'ai une fenêtre qui s'ouvre en demandant une objet requis.
Sub CréationFichiers()
Dim firstRow As Integer
Dim lastRow As Integer
Dim i As Integer
Dim nomf As Workbook
CheminSource = Range("E3").Value (j'ai mis dans des cellules les noms et chemins)
FichierSource = chemin + "\" + Range("E4").Value
firstRow = pCells.Range("B4").Row
lastRow = Cells([B200].End(xlUp).Row, 1).Row
For i = firstRow To lastRow
nomf = Range("B" & i) (mes noms de fichiers sont entre B4 et B100)
FichierSource.Copy
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & nomf & ".xlsm"
.Close
End With
Next i
End Sub
Quelqu'un aurait-il une idée ?
Par la suite, il faudra que je sélectionne des données dans un troisième fichier et que je les colle dans le bon fichier selon son nom mais je n'en suis pas encore à cette étape.
Je vous remercie d'avance pour votre temps.
Je débute sur le forum et en VBA et je n'ai pas réussi à adapter ce que j'ai trouvé à ma problématique.
Je possède 2 fichiers :
- fichier 1 : mon fichier à copier
- fichier 2 : fichier qui contiendra les macros et un onglets avec une liste de nom
On me demande de copier mon fichier 1 autant de fois que j'ai de nom sur ma liste en renommant le fichier créer.
J'ai fait le code suivant mais j'ai une fenêtre qui s'ouvre en demandant une objet requis.
Sub CréationFichiers()
Dim firstRow As Integer
Dim lastRow As Integer
Dim i As Integer
Dim nomf As Workbook
CheminSource = Range("E3").Value (j'ai mis dans des cellules les noms et chemins)
FichierSource = chemin + "\" + Range("E4").Value
firstRow = pCells.Range("B4").Row
lastRow = Cells([B200].End(xlUp).Row, 1).Row
For i = firstRow To lastRow
nomf = Range("B" & i) (mes noms de fichiers sont entre B4 et B100)
FichierSource.Copy
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & nomf & ".xlsm"
.Close
End With
Next i
End Sub
Quelqu'un aurait-il une idée ?
Par la suite, il faudra que je sélectionne des données dans un troisième fichier et que je les colle dans le bon fichier selon son nom mais je n'en suis pas encore à cette étape.
Je vous remercie d'avance pour votre temps.
A voir également:
- Macro copier fichier Excel selon nombre liste avec changement de nom
- Liste déroulante excel - Guide
- Fichier bin - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Fichier epub - Guide
- Fichier rar - Guide
4 réponses
Peut être comme ceci
Cdlmnt
Sub CréationFichiers() Dim firstRow As Long, lastRow As Long, i As Long Dim nomCopie As String, CheminSource As String, FichierSource As String CheminSource = Range("E3").Value '(j'ai mis dans des cellules les noms et chemins) FichierSource = CheminSource + "\" + Range("E4").Value & ".xls" firstRow = 4 lastRow = Range("B" & Rows.Count).End(xlUp).Row For i = firstRow To lastRow nomCopie = Range("B" & i) '(mes noms de fichiers sont entre B4 et B100) Workbooks.Open FichierSource With ActiveWorkbook .SaveAs ThisWorkbook.Path & "\" & nomCopie & ".xls" .Close End With Next i End Sub
Cdlmnt
Par contre j'ai encore une erreur (400).
Sur quelle ligne ? Chez moi, ça fonctionne
Pou tester, passes en mode pas à pas
- tu mets un point d'arret (click en marge de la première ligne CheminSource ....)
- exécuter
- la touche F8 te permet d'avance dans l'exécution
- tu passes le curseur sur les variables et tu vérifies leur valeur
Cdlmnt
Sur quelle ligne ? Chez moi, ça fonctionne
Pou tester, passes en mode pas à pas
- tu mets un point d'arret (click en marge de la première ligne CheminSource ....)
- exécuter
- la touche F8 te permet d'avance dans l'exécution
- tu passes le curseur sur les variables et tu vérifies leur valeur
Cdlmnt