Copier/Coller colonnes de plusieurs fichiers sur une feuille

Bonjour à tous,

Je suis actuellement sur un problème intellectuel.

J'ai donc un dossier dans lequel j'ai plusieurs fichiers. J'aimerai compiler ces fichiers avec une macro VBA.

Le soucis est que je veux seulement compiler certaines colonnes précises des fichiers (7 au total).

L'autre soucis est que dans certaines de ces colonnes, des lignes vides apparaissent au milieu, ce qui rend impossible l'utilisation de "xlDown" lors de la sélection des colonnes si je veux une sélection correcte qui ne s'arrête pas à la première cellule vide.

Lors de la compilation, j'aimerai que les fichiers se copient collent les uns en dessous des autres sans laisser d'espace entre eux (je crois que je dois jouer avec "DerLigne +1" à ce niveau là).

Enfin, je n'arrive pas à trouver un code pour que tous les fichiers du dossier se compilent les uns à la suite des autres jusqu'à ce qu'il n'y en ai plus.

Je ne peux malheureusement pas joindre de fichier car ils contiennent des infos confidentielles par rapport à l'entreprise...

Merci d'avance pour vos réponses... Je débute en VBA et le travail que je dois faire nécessite de très bonnes connaissances que je n'ai pas....

Grégoire.

Bonsoir et bienvenue sur le forum,

Tu peux essayer de voir si ce code te convient en l'adaptant à tes contraintes.

Sub ParcourirEtCopier()

Dim Chemin As String, Fichier As String, NomFichierCible As String, NomFichierSource As String
Dim LastLigne As Integer, NumColonne As Integer, i As Integer, j As Integer

NomFichierCible = ActiveWorkbook.Name 'correspond au fichier destinataire des données
Chemin = "C:\TonChemin\"  'chemin  où se trouve des fichiers
'----------------------------------------------------
'Boucle sur tous les fichiers xls du répertoire
'---------------------------------------------------
Fichier = Dir(Chemin & "*.xls") 'ou xlsx
j = 1
Do While Len(Fichier) > 0
    Workbooks.Open Filename:=Chemin & Fichier
    NomFichierSource = ActiveWorkbook.Name
    Sheets(1).Select   'selectionne l'onglet dans lequel se trouve les données
    LastLigne = Range("A65000").End(xlUp).Row   'trouve la dernière ligne de la 1ere colonne en considérant que dans un même classeur, toutes les colonnes ont le même nombre de lignes
    For i = 1 To 7   'permet de choisir les colonnes à copier, ici la 1,3,5,6,7,8,9
        Select Case i
            Case 1
                NumColonne = 1
            Case 2
                NumColonne = 3
            Case 3
                NumColonne = 5
            Case 4
                NumColonne = 6
            Case 5
                NumColonne = 7
            Case 6
                NumColonne = 8
            Case 7
                NumColonne = 9
        End Select
        Range(Cells(1, NumColonne), Cells(LastLigne, NumColonne)).Select  'sélectionne la colonne
        Selection.Copy
        Windows(NomFichierCible).Activate
        Cells(j, i).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  'colle les valeurs
        Windows(NomFichierSource).Activate
    Next i
    j = j + LastLigne
    ActiveWorkbook.Close (False) 'ferme le classeur sans le sauver
    Fichier = Dir()   'récupére le nom du prochain fichier
Loop

End Sub

Bonsoir,

Le soucis est que je veux seulement compiler certaines colonnes précises des fichiers (7 au total).

En quoi serait-ce un souci ?

Ne prélever qu'une partie des données d'une ligne est un cas fréquent...

L'autre soucis est que dans certaines de ces colonnes, des lignes vides apparaissent au milieu, ce qui rend impossible l'utilisation de "xlDown"

C'est une des raisons pour lesquelles on préfère généralement xlUp ! (L'autre est le cas où il n'y a pas de données sous la ligne de démarrage).

(je crois que je dois jouer avec "DerLigne +1" à ce niveau là)

Ce n'est pas ce qu'il y a de mieux ! Constituer un tableau qu'on n'affectera qu'une seule fois à la fin est préférable à affecter ligne après ligne !

Enfin, je n'arrive pas à trouver un code pour que tous les fichiers du dossier se compilent les uns à la suite des autres jusqu'à ce qu'il n'y en ai plus.

Quel est le souci encore ? Juste une boucle sur les fichiers... ! Une de plus d'ailleurs, car sur chaque fichier une boucle pour parcourir les lignes, et sur chaque ligne à prélever une boucle sur les colonnes visées !

On ne peut coder sérieusement en VBA sans boucle ni tableau !

Cordialement.

Rechercher des sujets similaires à "copier coller colonnes fichiers feuille"