Importer un tableau Excel dans un autre fichier

Bonjour ,

ça fait des jours que je chercher sur votre forum et sur d'autres forum une solution à mon problème qui se résume comme suit :

en fait j'ai deux fichier excel l'un un fichier source nommé rapport et qui a toujours la même format c'est juste que ses données changent en fonction de temps et un fichier destinataire nommé objectif : ce que je cherche à faire c'est d'inserer dans la feuille 1 du fichier destinataire un bouton qui me permet de parcourir ce fichier et de copier coller le tableau qui se trouve dans son unique feuille de la ligne 4 jusqu'à la fin du tab ..en effet j'ai réussi à trouver une partie de ce code qui sert à parcourir le fichier et copier mais je coince dans la parie ou je dois exprimer en code que le copiage doit commencer de la ligne 4 jusqu’à la fin (sachant que le nombre de lignes est dynamique ) j'ai essayé même en utilisant le code de la dernière ligne non vide mais le problème c'est que j'ai toujours la 5ème ligne qui vide don il me copiera juste la 4ème ligne !! aussi j'ai trouver comme solution et qui est présenté dans le fichier objectif en pièce jointe c'est d'écrire range ("B4:B100000") mais ça ralentit la macro . pour le traitement de la derniére ligne non vide ce que je propose et ce que je ne sais pas faire en vba ( Puisque je le maîtrise pas ) c'est d'ouvrir le fichier source supprimer cette 4ème ligne qui est toujours vide sauvegarder et fermer puis re-ouvrir pour faire le copiage !

voici en piéce jointe mes deux fichiers exemple(que je les adapterai par la suite à mon travail ) , j'attends avec impatience votre réponse parce que j'en ai vraiment besoin puisque je suis limité par une date limite

55objectif.xlsm (20.85 Ko)
49rapport.xlsx (8.80 Ko)

DE L'AIDE SVP

Bonsoir,

Pour faire vite et simplement, pour que ça fonctionne.

Mais le code doit être optimisé...

Pas besoin d'ouvrir une nouvelle instance d'Excel dans la mesure ou il est déja actif

Private Sub CommandButton1_Click()
'Déclaration des variables
Dim NmFich As String
Dim xlApp As Excel.Application 'Application Excel
Dim xlWb As Excel.Workbook 'Classeur Excel
Dim xlSh As Excel.Worksheet 'Feuille Excel
Dim CeClasseur As String 'Nom de ce classeur
Dim Derligne As Long
Dim Plage As Range

    Application.ScreenUpdating = False

    CeClasseur = ThisWorkbook.Name
    With Application.FileDialog(msoFileDialogOpen)
        .Title = "Recherche fichier à ouvrir"
        .ButtonName = "Ouvrir"
        If Not .Show = -1 Then Exit Sub
            NmFich = .SelectedItems(1)
            Set xlApp = CreateObject("Excel.Application")
            Set xlWb = Workbooks.Open(NmFich)
            Set xlSh = xlWb.Worksheets(1)
    End With

    With Workbooks(CeClasseur).Sheets("feuil1")
        .Cells.ClearContents
        Derligne = xlSh.Range("B" & Rows.Count).End(xlUp).Row
        Set Plage = xlSh.Range("B4:E" & Derligne)
        Plage.Copy Destination:=.Cells(1, 1)
    End With

    Application.Windows(2).Activate
    xlWb.Close

End Sub

Merci beaucoup , c'est génial mon problème est complètement résolu ! mille merci


Qu'est ce que ça veut dire que le code doit être optimisé ?

Re,

Pas besoin d'ouvrir une nouvelle instance d'Excel dans la mesure ou il est déja actif

Tu dois revoir cette partie de de code

Désolé , Je ne comprend pas ! le code marche à merveille est ce qu'il va me poser des problèmes plus tard ?

Re,

Tu as clos le sujet, mais ton code doit-être optimisé.

Apparemment tu lances une nouvelle instance d'Excel alors qu'il est déja ouvert (2 Excels ouverts en même temps).

Pas le temps ce soir pour moi, mais le forum pourra intervenir si tu décoches la validation du sujet.

Cdlt.

Je comprend pas beaucoup mais en tous cas merci beaucoup pour vos efforts


a propos Je n'ai qu'un seul excel ouvert dans lequel j'ai la macro (c'est à dire pour l'exemple c'est le fichier destinataire ) que je vais lancer en appuyant sur le bouton !

Rechercher des sujets similaires à "importer tableau fichier"