Insérer les lignes copiées dun fichiers dans plusieurs fichiers

As30

XLDnaute Nouveau
Bonjour à tous,
J'ai un petit soucis à vous présenter, j'ai dans un répertoire à peu près 75 fichiers excel, tous constitués sur le même modèle.

Je dois dans chacun d'eux rajouter avant la première ligne un "entête" (pas juste pour l'impression, mais visible directement sur la feuille de calcul)

Mon idée de départ est de crée sur l'un des fichiers cet entête (voir fichier joint HT202.xls ligne 1 à 8) et de pouvoir copier ces 8 lignes et venir les insérer d'une manière automatisée avant la ligne n°1 de tous les fichiers du répertoire (fichier exemple HT302.xls).

Au pire s'il n'est pas possible de faire cela en automatisé, au moins avoir un macro qui ferai que en ouvrant un fichier de destination je pourrais importer directement les lignes 1 à 8 de mon fichier de départ avant la première ligne. Il faudrait que je les ouvre tous mais au moins je pourrait éviter la phase copier/insérer les cellules copiées
La fonction "insérer les lignes copiées" ne semble marcher qu'une fois quand on passe d'un fichier à l'autre, après seul la fonction "coller" est disponible, du coup si je devait le faire en manuel je suis obligé a chaque nouveau fichier de refaire un "copier" des lignes 1 à 8dans le fichier source ce qui devient très laborieux.

Voila si l'un d'entre vous à une idée, sachant que mon niveau en macro et vba est plutôt faible, cela me serait très utile.
 

Pièces jointes

  • HT202.xls
    71 KB · Affichages: 40
  • HT302.xls
    46 KB · Affichages: 36
  • HT202.xls
    71 KB · Affichages: 40
  • HT302.xls
    46 KB · Affichages: 39
  • HT202.xls
    71 KB · Affichages: 42
  • HT302.xls
    46 KB · Affichages: 42

As30

XLDnaute Nouveau
Re : Insérer les lignes copiées dun fichiers dans plusieurs fichiers

Bon j'ai pu avancer un peu sur la macro pour copier mes lignes dans mon fichier A (HT202) et venir les insérer dans mon fichier B (HT302), cela fonctionne.

Par contre si je réutilise ma macro dans un fichier C ça me recopie encore une fois les infos de A vers B au lieu de A vers C. Mes compétences ne me permettent pas de trouver comment remplacer cela dans ma macro, ni même de l’appliquer à un répertoire par la suite.

Ci joint les nouveaux fichiers.
 

Pièces jointes

  • HT202.xls
    71 KB · Affichages: 55
  • HT302.xls
    60.5 KB · Affichages: 62
  • HT202.xls
    71 KB · Affichages: 57
  • HT302.xls
    60.5 KB · Affichages: 55
  • HT202.xls
    71 KB · Affichages: 47
  • HT302.xls
    60.5 KB · Affichages: 59

kjin

XLDnaute Barbatruc
Re : Insérer les lignes copiées dun fichiers dans plusieurs fichiers

Bonjour,
Tu n'as fourni que trop peu d'info ! donc Attention
Donc je pars du principe que
- les classeurs à modifer ne contiennent qu'une seule feuille ou que cette feuille est toujours la première dans le classeur (sinon il faudra passer par FSO)
- les classeurs à modifier sont rassemblés dans un même répertoire qui ne contient que ces fichiers là
Code:
Sub Macro1()
Dim rng As Range, pFile$, nFile$, aFile$
Dim wb As Workbook, ws As Worksheet
Set rng = Range("A1:M8")
pFile = ActiveWorkbook.Path & "\" 'adapter ici le chemin vers le répertoire
aFile = ActiveWorkbook.Name
nFile = Dir(pFile & "*.xls")
Do Until nFile = ""
    If nFile <> aFile Then
        Set wb = Workbooks.Open(nFile)
        With wb
            Set ws = wb.Sheets(1)
                With ws
                    .Rows("1:8").Insert Shift:=xlDown
                    rng.Copy .Range("A1")
                End With
            .Close True
        End With
    End If
    nFile = Dir
Loop
End Sub
Ca risque d'être un peu long pour 75 fichiers, car il faut copier la mise en forme
A+
kjin
 

As30

XLDnaute Nouveau
Re : Insérer les lignes copiées dun fichiers dans plusieurs fichiers

Désolé pour le manque d'infos, a par mon classeur de départ A, les autres ne contiennent effectivement qu'une seule feuille.
Tout mes fichiers sont dans le même répertoire, tu as donc bien compris ce que je voulait, merci.

Par contre étant un peu nul sous VBA, je n'arrive pas à mettre cela en place :
- J'ai enregistrer la macro ci dessus dans un "classeur de macro personnel" je crois, quand j'ouvre VBA l'arborescence est
VBAproject(PERSONAL.XLSB)/modules/module1 (j'ai copié tout la macro à cet endroit)

- Quand je lance la macro telle quelle à partir d'un des fichiers de mon répertoire de travail j'obtient une erreur 1004, et le VBA deboggeur m'indique la ligne "Set wb = Workbooks.Open(nFile)"

- Je me suis dis ok j'ai oublié de rajouter le chemin d'acces à la ligne :
pFile = ActiveWorkbook.Path & "\" 'adapter ici le chemin vers le répertoire" -> j'ai donc fait :
pFile = ActiveWorkbook.Path & "C:\Users\xxxx.sebastien\Documents\Nouveau" 'adapter ici le chemin vers le répertoire
Et la j'obtient une erreur 52 à la ligne "nFile = Dir(pFile & "*.xls")"

- J'ai donc regardé sur le net et au lieu d'un chemin d’accès complet certain exemple n'avais que le nom du dossier par exemple :
pFile = ActiveWorkbook.Path & "\Nouveau" 'adapter ici le chemin vers le répertoire
Mais la quand je fais ça il ne se passe plus rien, pas d'erreur, pas de travail, rien

- Je suis donc un peu perdu je sais pas si je rentre correctement le chemin d’accès à l endroit que tu m'as indiqué ou s'il y a une étape lors de la création de la macro que je n'ai pas bien faite.

Ps je travaille sur des fichiers test bien sur donc pas de soucis pour tester et re-tester la macro.
 
Dernière édition:

As30

XLDnaute Nouveau
Re : Insérer les lignes copiées dun fichiers dans plusieurs fichiers

Super j'ai réussi grâce à toi a faire ce que je voulais :)
Merci beaucoup.

Petite précision, j'ai du enregistrer 1 des fichiers du répertoire en. xlsx pour que ça marche (ils sont pourtant tous en .xls et on tous reçu la modif souhaitée).
 

Discussions similaires

Statistiques des forums

Discussions
312 836
Messages
2 092 656
Membres
105 479
dernier inscrit
chaussadas.renaud