Macro copier fichier Excel selon nombre liste avec changement de nom

Fermé
debutantenmacro Messages postés 3 Date d'inscription lundi 1 avril 2019 Statut Membre Dernière intervention 2 avril 2019 - 1 avril 2019 à 16:19
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 - 2 avril 2019 à 18:23
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.
A voir également:

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
1 avril 2019 à 17:44
Bonjour,
Y a déjà ceci:
firstRow = pCells.Range("B4").Row
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
1 avril 2019 à 17:58
Bonjour

Et ça
Dim nomf As Workbook
à remplacer par
Dim nomf As String

Cdlmnt
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié le 1 avril 2019 à 19:08
Peut être comme ceci

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
0
debutantenmacro Messages postés 3 Date d'inscription lundi 1 avril 2019 Statut Membre Dernière intervention 2 avril 2019
2 avril 2019 à 09:27
Merci à tous,

J'ai testé ton code ccm81. Par contre j'ai encore une erreur (400).

Cordialement.
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
2 avril 2019 à 14:43
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
0
debutantenmacro Messages postés 3 Date d'inscription lundi 1 avril 2019 Statut Membre Dernière intervention 2 avril 2019
2 avril 2019 à 14:53
Merci pour ta rapidité.
L'erreur se situe au moment de la sauvegarde du nouveau fichier.
Etant donné que ce fichier a lui-même des macros j'ai mis l'extension en xlsm. L'erreur vient-il de là ?
Cordialement.
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
2 avril 2019 à 18:23
je ne pense pas
as tu vérifié la valeur de nomCopie sur la ligne où ça plante ?
0