Insérer une ligne dans chaque fichier du dossier

shenmicke

XLDnaute Junior
Voilà, j'aimerai insérer une ligne dans chaque fichier d'un dossier.
Je pense ne pas en être très loin car pour le moment le code insère des lignes que dans le fichier d'où je lance la macro.
Par exemple: j'ai 10 fichiers dans mon dossier, il va m'insérer 10 lignes dans mon fichier d'où je lance la macro alors que je voudrais qu'il insère qu'une seule ligne dans tous les fichiers du dossier !

Code:
Option Explicit

Sub Macro()

Dim chem As String
Dim fs, d, f1, fd
Dim cl As Workbook
Dim cel As Range

chem = ThisWorkbook.Path & "\" 'définit le chemin, ici c'est le dossier courant
Set fs = CreateObject("Scripting.FileSystemObject") 'définit la variable fs (Fichiers Système)
Set d = fs.GetFolder(chem) 'definit la variable d (dossier)
Set fd = d.Files 'définit la variable fd (Fichiers du Dossier)
    
For Each f1 In fd 'boucle sur tous les fichier du dossier
    
If f1.Name <> "Decleor - TOTAL.xls" Then
Workbooks.Open chem & f1.Name

    End If

Next f1

For Each cl In ThisWorkbook

Rows(10).Insert

Next cl
              
For Each cl In Workbooks

If cl.Name <> ThisWorkbook.Name Then cl.Close SaveChanges:=True
    
Next cl
               
End Sub

Merci de votre aide !
 

Pierrot93

XLDnaute Barbatruc
Re : Insérer une ligne dans chaque fichier du dossier

Bonjour,

j'ai 10 fichiers dans mon dossier, il va m'insérer 10 lignes dans mon fichier d'où je lance la macro alors que je voudrais qu'il insère qu'une seule ligne dans tous les fichiers du dossier !

normal l'insertion se fait dans "thisworkbook" qui représente le classeur dans lequel est exécuté le code de la macro....

remplace :
Code:
For Each cl In ThisWorkbook
Rows(10).Insert
Next cl

par :
Code:
ActiveWorkbook.activeSheet.Rows(10).Insert

l'insertion se fera sur la feuille active du classeur actif... pas sur que cela s'inscrive bien dans ton process, mais ses lignes pourront te faire avance, enfin j'espère....

bon après midi
@+
 

tototiti2008

XLDnaute Barbatruc
Re : Insérer une ligne dans chaque fichier du dossier

Bonjour schenmicke,

1) Il manque une notion dans ton code : les feuilles
Un classeur peut contenir plusieurs feuilles, veux-tu traiter toutes les feuilles de tous les classeurs ou bien ici tes classeurs ne contiennent qu'une feuille ?

2) Que veux-tu essayer de faire avec ta boucle ?

Code:
For Each cl In ThisWorkbook

Rows(10).Insert

Next cl
Je ne comprend pas bien

Edit : bing, Salut Pierrot :)
 

shenmicke

XLDnaute Junior
Re : Insérer une ligne dans chaque fichier du dossier

bonjour tototiti2008,

1) mes classeurs n'ont qu'une feuille en effet
2) je voulais boucler sur tous les workbooks car je n'arrivais pas à insérer des lignes à l'ouverture des classeurs :D
 

tototiti2008

XLDnaute Barbatruc
Re : Insérer une ligne dans chaque fichier du dossier

Re,

En modifiant seulement

Code:
For Each cl In ThisWorkbook

Rows(10).Insert

Next cl

en

Code:
For Each cl In Workbooks

cl.Activesheet.Rows(10).Insert

Next cl

ça devrait le faire, mais l'ensemble du code devrait pouvoir s'écrire

Code:
Sub Macro()

Dim chem As String
Dim fs, d, f1, fd
Dim cl As Workbook

chem = ThisWorkbook.Path & "\" 'définit le chemin, ici c'est le dossier courant
Set fs = CreateObject("Scripting.FileSystemObject") 'définit la variable fs (Fichiers Système)
Set d = fs.GetFolder(chem) 'definit la variable d (dossier)
Set fd = d.Files 'définit la variable fd (Fichiers du Dossier)
    
For Each f1 In fd 'boucle sur tous les fichier du dossier
    
If f1.Name <> "Decleor - TOTAL.xls" Then
set cl = Workbooks.Open (chem & f1.Name)
cl.activesheet.rows(10).insert
cl.close True
    End If

Next f1
Set f1 = nothing
Set fd = nothing
set d = nothing
set fs = nothing
set cl = nothing              
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 337
Membres
103 524
dernier inscrit
Smile1813