Menu

Macro copier fichier Excel selon nombre liste avec changement de nom

Messages postés
3
Date d'inscription
lundi 1 avril 2019
Statut
Membre
Dernière intervention
2 avril 2019
- - Dernière réponse : ccm81
Messages postés
8883
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 avril 2019
- 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.
Afficher la suite 

Votre réponse

4 réponses

Messages postés
14226
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 avril 2019
1328
0
Merci
Bonjour,
Y a déjà ceci:
firstRow = pCells.Range("B4").Row
Commenter la réponse de f894009
Messages postés
8883
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 avril 2019
1930
0
Merci
Bonjour

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

Cdlmnt
Commenter la réponse de ccm81
Messages postés
8883
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 avril 2019
1930
0
Merci
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
debutantenmacro
Messages postés
3
Date d'inscription
lundi 1 avril 2019
Statut
Membre
Dernière intervention
2 avril 2019
-
Merci à tous,

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

Cordialement.
Commenter la réponse de ccm81
Messages postés
8883
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 avril 2019
1930
0
Merci
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
debutantenmacro
Messages postés
3
Date d'inscription
lundi 1 avril 2019
Statut
Membre
Dernière intervention
2 avril 2019
-
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.
ccm81
Messages postés
8883
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 avril 2019
1930 -
je ne pense pas
as tu vérifié la valeur de nomCopie sur la ligne où ça plante ?
Commenter la réponse de ccm81