Recopier plage dans plusieurs classeurs

laurent56380 Messages postés 21 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008 - 24 janv. 2008 à 02:55
laurent56380 Messages postés 21 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008 - 24 janv. 2008 à 18:09
Bonjour,


Voila mon problème, j’ai un ensemble de lignes ( de la ligne 3500 à 3600 ) donc 100 lignes de ma feuil1 du classeur nommé 1.xls, à recopier dans 1000 classeurs nommés 2.xls jusqu'à 1000.xls.


J’y arrive très bien à la main, mais quel boulot !


Existe-t-il une Macro pour réaliser ce travail.


Sachant que tous les classeurs devront êtres sauvegardés biensur.


Merci d’avance

6 réponses

rbidocho Messages postés 41 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 septembre 2008
24 janv. 2008 à 07:59
bonjour,
voici une macro à mettre dans le classeur 1.xls

Sub CopiePlage()
    Répertoire = "répertoire où se trouve les classeurs" 'C:\xxx\
    For i = 2 To 1000
        Workbooks(Répertoire + "" + CStr(i) + ".xls").Open 'ouverture du classeur i
        ThisWorkbook.Worksheets("Feuil1").Rows("3500:3600").Select 'selection des formules à copier
        Selection.Copy 'copie
        Workbooks(CStr(i)).Activate 'on selectionne le classeur
        Workbooks(CStr(i)).Worksheets("Feuil1").Select
        Range("A3500").Select 'on slectionne la première cellule du classeur où copier les valeurs
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False 'on copie
        Workbooks(CStr(i)).Save 'on sauve
        Workbooks(CStr(i)).Close 'on ferme
    Next i
End Sub

le tout est de savoir si les classeurs i.xls sont déjà créés ou non !!

bon courrage

RB
0
laurent56380 Messages postés 21 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008
24 janv. 2008 à 11:17
Merci je vais essayer.
Par contre je viens de voir que certains de mes fichiers xls ont un nom différent, est ce que la macro va ouvrir tous les fichiers xls quand même?
a+
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
24 janv. 2008 à 11:59
Non, pas avec ce genre de code qui utilise un index 2 à 1000
Il faudra que tu regardes la fonction DIR pour lire tous les fichiers du répertoire, peu importe leur nom. Et il te faudra mettre une condition/validation du nom pour être certain que le fichier à lire fait partie de la liste "à lire" ou l'inverse, qui ne fait pas partie de cette liste...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
laurent56380 Messages postés 21 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008
24 janv. 2008 à 12:20
Pour moi, c’est très difficile je ne connais pas vba.


J’ai renommé tous mes fichiers grace à une macro.


Voilà donc ce que j’ai a présent.


Le 1er fichier d’où je veux copier les lignes, se nomme 00001(01.10.1999).xls, et je veux coller ces lignes dans les fichiers suivant, 00002(02.10.1999).xls à 01000(11.07.2002).xls


Pouvez-vous m’aider pour une macro ?


Merci d’avance 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rbidocho Messages postés 41 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 septembre 2008
24 janv. 2008 à 15:25
Deuxième version

Il faut créer la macro dans un classeur différent des classeurs de travail

Sub CopiePlage()
    Dim Nomfichier As String
    Dim NomPremFichier As String
    Dim DateFichier As Long
    
    NomPremFichier = "00001(01.10.1999)"
    Répertoire = "répertoire où se trouve les classeurs" 'C:\xxx\
    Workbooks(Répertoire + "" + NomPremFichier + ".xls").Open
   
    For i = 2 To 1000
        'création du nom du fichier
        DateFichier = CDate("01/10/1999") + i - 1
        Nomfichier = Format(i, "00000")
        Nomfichier = Nomfichier + "(" + Format(Day(DateFichier), "00") + "."
        Nomfichier = Nomfichier + Format(Month(DateFichier), "00") + "."
        Nomfichier = Nomfichier + Format(Year(DateFichier), "0000") + ")"
        
        Workbooks(Répertoire + "" + Nomfichier + ".xls").Open 'ouverture du classeur i
        Workbooks(NomPremFichier).Worksheets("Feuil1").Rows("3500:3600").Select 'selection des formules à copier
        Selection.Copy 'copie
        Workbooks(Nomfichier).Activate 'on selectionne le classeur
        Workbooks(Nomfichier).Worksheets("Feuil1").Select
        Range("A3500").Select 'on slectionne la première cellule du classeur où copier les valeurs
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False 'on copie
        Workbooks(Nomfichier).Save 'on sauve
        Workbooks(Nomfichier).Close 'on ferme
    Next i
Workbooks(NomPremFichier).Close 'on ferme
End Sub

RB
0
laurent56380 Messages postés 21 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008
24 janv. 2008 à 18:09
Alors là merci mille fois
Je vais essayer çà ce soir et vous donnerai réponse.
a+
0
Rejoignez-nous