Copie d'une plage d'un fichier sur des centaines d'autres

Bonjour à tous,

Je dois copier une plage de données (d'opérations plus précisément) présentes sur un doc excel sur un millier de documents (je veux calculer une moyenne et variance sur chaque doc en fait). Problème, je pars de zéro en prog/macros

Tous les fichiers sont dans un même répertoire, au même format. Seules les valeurs changent.

Les valeurs couvrent les 4 premières colonnes. La partie que je veux coller sur chaque fichier se trouve sur un fichier à part et couvre les colonnes E jusqu'à AM incluse.

Il faudrait que ça puisse copier-coller l'opération à faire pour que ça marche.

J'ai essayé d'enregistrer une macro, mais le nom des fichiers étant différent, ça ne marche évidemment pas.

merci pour les idées ou toute sorte d'aide que vous pourrez m'apporter

Bonjour,

Il est possible de créer une macro, qui dans une feuille de ton classeur possedant ce que tu as à copier , répertorie les fichiers qui sont dans ton dossier,

à partir de la tu devrais par la suite pouvoir ouvrir les fichiers un par un via une boucle et copier ce que tu veux dedans,

Ai je bien cerné le probleme et synthétiser ce que je définirai comme ton besoin?


Dans un module tu places ce code

Public Sub Referencement(strDossier As String)
    Dim fso As Object, Dossier As Object, ssDossier As Object, Fichier As Object
    Dim X As Integer, lenDossier As Long, nbFichier As Integer, i As Integer
    'FSO =File System Object
    'Dossier = sélection du dossier sélectionné
    'ssDossier= sous-dossier du Dossier selectionné
    'Fichier= fichier analysé
    Application.ScreenUpdating = False
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Dossier = fso.getfolder(strDossier)
    Set ssDossier = fso.getfolder(strDossier).subFolders

    lenDossier = Len(strDossier)
    nbFichier = 0
    i = 0
    For Each Fichier In Dossier.Files
            nbFichier = nbFichier + 1
    Next Fichier
    For Each ssDossier In Dossier.subFolders
        For Each Fichier In ssDossier.Files
            nbFichier = nbFichier + 1
        Next Fichier
    Next ssDossier

    For Each Fichier In Dossier.Files
            X = ThisWorkbook.Sheets("ListeFichier").Range("A65536").End(xlUp).Row
            ThisWorkbook.Sheets("ListeFichier").Range("A" & X + 1).Value = VBA.Mid(Fichier, lenDossier + 2)
        i = i + 1
        Application.StatusBar = i & " Fichier(s) traité(s) sur " & nbFichier 'ça indique la progression 
    Next Fichier

    Set fso = Nothing
    Application.ScreenUpdating = True
    Application.StatusBar = False
End Sub

dans le module thisworkbook

tu place cela

Private Sub Workbook_Open()
    Dim lgChemin As Long
    Dim strChemin as string
    If MsgBox("Lancer le programme", vbYesNo, "Lancement macro") = vbYes Then
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        lgChemin = .SelectedItems.Count
        strChemin = .SelectedItems(lgChemin)
    End With
    Referencement strChemin
end if
end sub

Donc ces codes vont te permettre de liste dans l'onglet listeFichier (qu'il faut créer avant de lancer la macro) tous les fichiers présent dans le dossier que tu auras à choisir apres avoir cliqué sur OUI à l'affichage du message

Merci beaucoup, j'ai réussi en me basant sur ton code

Rechercher des sujets similaires à "copie plage fichier centaines"