XL 2019 Copier coller de plusieurs feuilles à travers un chemin d'accées

ZENHA ENT

XLDnaute Nouveau
Bonjour tout le monde,

A partir d'un du" fichier"Import fichier test "je souhaite importer les feuilles need 1 qui se trouve sur d'autres classeur dans cette exemple (classeur 2 et 3) à partir du chemin qui se trouve dans la colonne C en fonction de la case de la colonne B si elle est sélectionner ou non (yes/no)

je souhaite à voir les données dans la feuille résultat souhaité du classeur " fichier"Import fichier test " comme dans l'exemple ci-joint.

Merci par avance pour votre aide
 

Pièces jointes

  • Classeur2.xlsx
    43 KB · Affichages: 6
  • Classeur3.xlsx
    43 KB · Affichages: 5
  • IMPORT FICHIER TEST.xlsm
    58.9 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Zenha, Oneida,
Un essai en PJ avec ce que j'ai compris :
VB:
Sub FilesImport()
    Application.ScreenUpdating = False                      ' Ecran figé
    Application.DisplayAlerts = False                       ' Ne pas afficher message d'alerte à l'ouverture de fichier distant
    On Error GoTo Fin
    Sheets("résultat souhaité").[A4:Z10000].ClearContents   ' A adapter
    DL = [A65500].End(xlUp).Row                             ' Dernière ligne
    For L = 5 To DL
        If Cells(L, "B") = "YES" And Cells(L, "C") <> "" Then
            Chemin = Cells(L, "C")                          ' Récupération du chemin
            tablo = Split(Chemin, "\")                      ' Séparation des paramètres
            NomFichier = tablo(UBound(tablo))               ' Récupération du nom du fichier
            Application.StatusBar = "Traitement du fichier : " & Chemin
            Workbooks.Open Filename:=Chemin                 ' Ouverture du fichier cible
            DL2 = Workbooks(NomFichier).Sheets("NEED 1").[A65500].End(xlUp).Row     ' Dernière ligne fichier cible
            Données = Workbooks(NomFichier).Sheets("NEED 1").Range("A5:Q" & DL2)    ' Copie des données dans array
            Workbooks(NomFichier).Close False                                       ' Fermeture du fichier cible
            DL3 = 1 + Sheets("résultat souhaité").[A65500].End(xlUp).Row            ' dernière ligne du tabeau
            ' Restitution des données à la fin du tableau existant.
            Sheets("résultat souhaité").Range("A" & DL3).Resize(UBound(Données, 1), UBound(Données, 2)) = Données
        End If
    Next L
    Application.StatusBar = ""
    Application.DisplayAlerts = True
    Exit Sub
Fin:
MsgBox "Une erreur a été rencontrée."
Application.DisplayAlerts = True
Application.StatusBar = ""
End Sub
J'ai supprimer les cases à cocher, le choix des fichiers à traiter se fait simplment en cliquant sur la colonne B du fichier désiré.
 

Pièces jointes

  • IMPORT FICHIER TEST.xlsm
    28.7 KB · Affichages: 3

youky(BJ)

XLDnaute Barbatruc
Bonjour tous,
Une autre variante puisque c'est fait.
Bruno
VB:
Sub TestImportExcel()
Feuil2.Select 'c'est onglet résultat
der = Feuil2.[B65000].End(3).Row + 1
On Error Resume Next
For k = 5 To Feuil1.[C65000].End(3).Row
chemfich = Feuil1.Cells(k, 3).Text
Workbooks.Open chemfich
If Err <> 0 Then MsgBox "Fichier non trouvé": GoTo fin
bas = [A65000].End(3).Row
ThisWorkbook.Sheets("résultat souhaité").Range("A" & der & ":Q" & bas + der - 5).Value = _
Range("A5:Q" & bas).Value
ActiveWorkbook.Close
der = Feuil2.[B65000].End(3).Row + 1
Next
fin:
ThisWorkbook.Activate
ActiveWindow.WindowState = xlMaximized
End Sub
 

ZENHA ENT

XLDnaute Nouveau
Bonjour Zenha, Oneida,
Un essai en PJ avec ce que j'ai compris :
VB:
Sub FilesImport()
    Application.ScreenUpdating = False                      ' Ecran figé
    Application.DisplayAlerts = False                       ' Ne pas afficher message d'alerte à l'ouverture de fichier distant
    On Error GoTo Fin
    Sheets("résultat souhaité").[A4:Z10000].ClearContents   ' A adapter
    DL = [A65500].End(xlUp).Row                             ' Dernière ligne
    For L = 5 To DL
        If Cells(L, "B") = "YES" And Cells(L, "C") <> "" Then
            Chemin = Cells(L, "C")                          ' Récupération du chemin
            tablo = Split(Chemin, "\")                      ' Séparation des paramètres
            NomFichier = tablo(UBound(tablo))               ' Récupération du nom du fichier
            Application.StatusBar = "Traitement du fichier : " & Chemin
            Workbooks.Open Filename:=Chemin                 ' Ouverture du fichier cible
            DL2 = Workbooks(NomFichier).Sheets("NEED 1").[A65500].End(xlUp).Row     ' Dernière ligne fichier cible
            Données = Workbooks(NomFichier).Sheets("NEED 1").Range("A5:Q" & DL2)    ' Copie des données dans array
            Workbooks(NomFichier).Close False                                       ' Fermeture du fichier cible
            DL3 = 1 + Sheets("résultat souhaité").[A65500].End(xlUp).Row            ' dernière ligne du tabeau
            ' Restitution des données à la fin du tableau existant.
            Sheets("résultat souhaité").Range("A" & DL3).Resize(UBound(Données, 1), UBound(Données, 2)) = Données
        End If
    Next L
    Application.StatusBar = ""
    Application.DisplayAlerts = True
    Exit Sub
Fin:
MsgBox "Une erreur a été rencontrée."
Application.DisplayAlerts = True
Application.StatusBar = ""
End Sub
J'ai supprimer les cases à cocher, le choix des fichiers à traiter se fait simplment en cliquant sur la colonne B du fichier désiré.
merci cela marche bien le seul problème c'est que je voudrais garder les 4 premières lignes du premier fichier importer
1673632001900.png
 

ZENHA ENT

XLDnaute Nouveau
Bonjour tous,
Une autre variante puisque c'est fait.
Bruno
VB:
Sub TestImportExcel()
Feuil2.Select 'c'est onglet résultat
der = Feuil2.[B65000].End(3).Row + 1
On Error Resume Next
For k = 5 To Feuil1.[C65000].End(3).Row
chemfich = Feuil1.Cells(k, 3).Text
Workbooks.Open chemfich
If Err <> 0 Then MsgBox "Fichier non trouvé": GoTo fin
bas = [A65000].End(3).Row
ThisWorkbook.Sheets("résultat souhaité").Range("A" & der & ":Q" & bas + der - 5).Value = _
Range("A5:Q" & bas).Value
ActiveWorkbook.Close
der = Feuil2.[B65000].End(3).Row + 1
Next
fin:
ThisWorkbook.Activate
ActiveWindow.WindowState = xlMaximized
End Sub
merci cela marche bien le seul problème c'est que je voudrais garder les 4 premières lignes du premier fichier importer
1673632047649.png
 

Discussions similaires

Statistiques des forums

Discussions
314 745
Messages
2 112 406
Membres
111 535
dernier inscrit
MJS1