Importe données d'un fichier Excel dans un autre fichier Excel

Bonjour,

Je dois réaliser une application VBA me permettant de lire les données d'un fichier excel pour les importer dans un autre fichier excel. J'ai réussis à réaliser cette application pour copie et coller les information d'un fichiers textes(CSV), mais cependant je n'arrive pas a réussir pour les fichiers excel.

Je vous joins mon fichier ainsi que mon code

Mon code est le suivant :

Dim ligne_debut As Integer:
Dim colonne_debut As Integer:
Dim ligne_fin As Integer:
Dim colonne_fin As Integer:
Dim ligne_enCours As Integer:
Dim colonne_enCours As Integer:

Private Sub exporter_Click()
Dim nom_fichier As String

ligne_debut = 2: 'signifie que l'importation des données se fera en cellule B2
colonne_debut = 2:
ligne_enCours = ligne_debut: colonne_enCours = colonne_debut

Cells.Clear

For i = 0 To liste_fichiers.ListCount - 1
lecture (liste_fichiers.List(i))

Next i

traitement
nom_fichier = Application.GetSaveAsFilename(fileFilter:="Text Files (*.txt),*.txt")
sortie.Value = nom_fichier
ecriture (nom_fichier)

End Sub

Private Sub fermer_Click()

End Sub

Private Sub importer_Click()
Dim fichier_choisi As String

fichier_choisi = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "Selectionner un fichier CSV")

If (LCase(fichier_choisi) <> "faux" And fichier_choisi <> "0") Then
liste_fichiers.AddItem (fichier_choisi)
End If


End Sub

Private Sub UserForm_Click()

End Sub

Private Sub lecture(fichier As String)
Dim depart As Integer, position As Integer
Dim texte As String, tampon As String

Open fichier For Input As #1

Do While Not EOF(1)

Line Input #1, texte
depart = 1: position = 1
Do While (position <> 0)

position = InStr(depart, texte, ";", 1)
If position = 0 Then
tampon = Mid(texte, depart)
Sheets("import").Cells(ligne_enCours, colonne_enCours).Value = tampon
Exit Do
Else
tampon = Mid(texte, depart, position - depart)
End If

Sheets("import").Cells(ligne_enCours, colonne_enCours).Value = tampon
depart = position + 1
colonne_enCours = colonne_enCours + 1
Loop

colonne_enCours = colonne_debut
ligne_enCours = ligne_enCours + 1

Loop

Close #1

End Sub

Merci de votre aide,

CR

94classeur1.xlsm (15.58 Ko)

Bonjour

De facon plus claire, mon projet est le suivant

Mise en contexte: Je suis chargé de réalisé un fichier excel permettant de récupérer les données d'un autre fichier excel, les collés et faire plusieurs page de calcul via ces données.

Problématique: J'aimerais faciliter l'importation de cette liste d'outillage par un bouton "sélectionner" qui ouvre une fenêtre permettant de sélectionner le fichier afin d'avoir son chemin, j'ai suivi qui permettait de le faire avec un fichier .txt ou .csv, j'aimerais maintenant l'adapter à un fichier .xlsx et ensuite, une fois selectionner, grâce à un bouton importer, copier coller ce fichier contenant uniquement une feuille, dans la feuille "Liste outillage" du fichier.

J'espère que la problématique est assez claire.

Bonjour,

Voici un essai à tester avec un code standard trouvé sur internet, qui a priori, devrait répondre à votre besoin :

Sub Utilisation_FileDialog_Ouvrir()

    Dim objOuvrir As FileDialog
    Dim objFichiers As FileDialogSelectedItems
    Dim Wb As Workbook

    Set objOuvrir = Application.FileDialog(msoFileDialogOpen)

    With objOuvrir 'Affiche la fenêtre "Ouvrir"
        .Filters.Clear 'Efface les filtres existants.
        .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm" 'Définit une liste de filtres pour le champ "Type de fichiers".
        .Show
        Set objFichiers = .SelectedItems 'Définit les fichiers sélectionnés
    End With

    If not objFichiers.Count = 1 Then Exit Sub 'On sort si aucun fichier n'a été sélectionné

    Application.ScreenUpdating = False

        Set Wb = Workbooks.Open(objFichiers(1))

        'traitement

        Wb.Close False

    Application.ScreenUpdating = True

End Sub

Sinon, il suffisait de modifier votre ligne comme ceci :

Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx",,"Sélectionner un fichier Excel")

Cdlt,

Bonjour,

Ok merci j'ai reussis.

Comment choisir quel feuille du fichier copié maintenant ? Par exemple je veux copié la feuille 3 ?

Merci de votre aide

Copier, c'est-à-dire ? en créant un nouvel onglet sur le classeur destinataire ?

Dim wbsource as workbook, wbdest as workbook '<<<<MODIF A FAIRE

'....code

Set wbdest = thisworkbook 'classeur exécutant où sera collée la feuille '<<< ajouter
Set wbsource = Workbooks.Open(objFichiers(1)) '<<< MODIF

wbsource.sheets(3).copy after:=wbdest.worksheets(wbdest.worksheets.count) 'copie feuille 3 source à la fin du classeur dest
wbsource.Close False

Bonjour,

Je me suis mal exprimé pardon. En gros je recupère les infos de la feuille 1 par defaut, comment récupérer celle de la feuille 3 par exemple

Cdlt

Ici, avec mon dernier code, vous récupérez la feuille à la position 3 (entière) du fichier sélectionné sur la boite de dialogue sur votre fichier courant (elle se place en dernière position).

Bonjour,

Je ne veux pas la récupérer, je veux copier son contenu pour la coller dans l'onglet de mon choix dans l'autre fichier,

Cdlt

Et bien, expliquez moi précisément votre besoin, en détaillant les éléments significatifs (index de la feuille dont le contenu est à copier, nom de la feuille de destination, éventuellement plage de destination), comme ça on pourra tomber juste sans avoir à réévaluer le besoin.

Bonjour,

Excusez moi si je ne suis pas claire, je reprend depuis le début.

Disons que le document Excel dont je veux importer certaines informations est composé de 3 feuilles(le fichier s'appelle jules). Celui dont je veux coller ces informations est composé de 4 feuilles( le fichier s'appelle Paul)

Mon code actuel me permet de récupérer les informations de la première feuille du fichier jules pour les coller dans la première feuille du fichier Paul. Cela est fonctionnel.

Maintenant je veux pouvoir copié les informations de la feuilles 3(appelé Villes) du fichier Jules pour la coller dans la feuille 2(appelé informations) du fichier Paul.

Je pense avoir été plus claire,

Mon code est actuellement le suivant :

Sub Rectangleàcoinsarrondis1_Cliquer()
On Error GoTo Fin
With Application
                .ScreenUpdating = False
                .Calculation = xlCalculationManual
            End With
'déclarer les variable
Dim wb As Workbook
Dim sh As Worksheet
Dim n As Long
Dim I As Long
Dim j As Long
Dim dsh As Worksheet
Dim arr

'Affecter une valeur à la variable
Set sh = ThisWorkbook.Sheets("Armoire")

'Déterminer la dernire ligne vide dans le fichier de destination (la collonne R)
ligne_collage = sh.Range("A" & Application.Rows.Count).End(xlUp).Row + 1

'déclarer les variable

'application pour ouvrir les fichier
arr = Application.GetOpenFilename(filefilter:="excel files, *.xls*", Title:="open excel files", MultiSelect:=True)

'effacer le contenu des collonne
sh.Range("A3:BZ5000").ClearContents

For I = LBound(arr) To UBound(arr)

ligne_collage = sh.Range("A" & Application.Rows.Count).End(xlUp).Row + 2

'Affecter une valeur- le classeur source
Set wb = Workbooks.Open(arr(I))

'la feuille dans le classeur source
Set dsh = wb.Sheets(1)

'nombre de ligne à copier dans le tableau dans la feuille source
nbl_copier = dsh.Range("B" & Application.Rows.Count).End(xlUp).Row - 2

 'copier et coller le tableau dans la feuille source
 dsh.Range("A3:A" & nbl_copier + 2).Copy sh.Range("A" & ligne_collage)
 dsh.Range("B3:B" & nbl_copier + 2).Copy sh.Range("B" & ligne_collage)
 dsh.Range("C3:C" & nbl_copier + 2).Copy sh.Range("C" & ligne_collage)
 dsh.Range("D3:D" & nbl_copier + 2).Copy sh.Range("D" & ligne_collage)
 dsh.Range("E3:E" & nbl_copier + 2).Copy sh.Range("E" & ligne_collage)
 dsh.Range("F3:F" & nbl_copier + 2).Copy sh.Range("F" & ligne_collage)
 dsh.Range("G3:G" & nbl_copier + 2).Copy sh.Range("G" & ligne_collage)
 dsh.Range("H3:H" & nbl_copier + 2).Copy sh.Range("H" & ligne_collage)
 dsh.Range("I3:I" & nbl_copier + 2).Copy sh.Range("I" & ligne_collage)
 dsh.Range("J3:J" & nbl_copier + 2).Copy sh.Range("J" & ligne_collage)
 dsh.Range("K3:K" & nbl_copier + 2).Copy sh.Range("K" & ligne_collage)
 dsh.Range("L3:L" & nbl_copier + 2).Copy sh.Range("L" & ligne_collage)
 dsh.Range("M3:M" & nbl_copier + 2).Copy sh.Range("M" & ligne_collage)
 dsh.Range("N3:N" & nbl_copier + 2).Copy sh.Range("N" & ligne_collage)
 dsh.Range("O3:O" & nbl_copier + 2).Copy sh.Range("O" & ligne_collage)
 dsh.Range("P3:P" & nbl_copier + 2).Copy sh.Range("P" & ligne_collage)
 dsh.Range("Q3:Q" & nbl_copier + 2).Copy sh.Range("Q" & ligne_collage)
 dsh.Range("R3:R" & nbl_copier + 2).Copy sh.Range("R" & ligne_collage)
 dsh.Range("S3:S" & nbl_copier + 2).Copy sh.Range("S" & ligne_collage)
 dsh.Range("T3:T" & nbl_copier + 2).Copy sh.Range("T" & ligne_collage)
 dsh.Range("U3:U" & nbl_copier + 2).Copy sh.Range("U" & ligne_collage)
 dsh.Range("V3:V" & nbl_copier + 2).Copy sh.Range("V" & ligne_collage)
 dsh.Range("W3:W" & nbl_copier + 2).Copy sh.Range("W" & ligne_collage)
 dsh.Range("X3:X" & nbl_copier + 2).Copy sh.Range("X" & ligne_collage)
 dsh.Range("Y3:Y" & nbl_copier + 2).Copy sh.Range("Y" & ligne_collage)
 dsh.Range("Z3:Z" & nbl_copier + 2).Copy sh.Range("Z" & ligne_collage)

 dsh.Range("AA3:AQ" & nbl_copier + 2).Copy sh.Range("AA" & ligne_collage)
 dsh.Range("AB3:AB" & nbl_copier + 2).Copy sh.Range("AB" & ligne_collage)
 dsh.Range("AC3:AC" & nbl_copier + 2).Copy sh.Range("AC" & ligne_collage)
 dsh.Range("AD3:AD" & nbl_copier + 2).Copy sh.Range("AD" & ligne_collage)
 dsh.Range("AE3:AE" & nbl_copier + 2).Copy sh.Range("AE" & ligne_collage)
 dsh.Range("AF3:AF" & nbl_copier + 2).Copy sh.Range("AF" & ligne_collage)
 dsh.Range("AG3:AG" & nbl_copier + 2).Copy sh.Range("AG" & ligne_collage)
 dsh.Range("AH3:AH" & nbl_copier + 2).Copy sh.Range("AH" & ligne_collage)
 dsh.Range("AI3:AI" & nbl_copier + 2).Copy sh.Range("AI" & ligne_collage)
 dsh.Range("AJ3:AJ" & nbl_copier + 2).Copy sh.Range("AJ" & ligne_collage)
 dsh.Range("AK3:AK" & nbl_copier + 2).Copy sh.Range("AK" & ligne_collage)
 dsh.Range("AL3:AL" & nbl_copier + 2).Copy sh.Range("AL" & ligne_collage)
 dsh.Range("AM3:AM" & nbl_copier + 2).Copy sh.Range("AM" & ligne_collage)
 dsh.Range("AN3:AN" & nbl_copier + 2).Copy sh.Range("AN" & ligne_collage)
 dsh.Range("AO3:AO" & nbl_copier + 2).Copy sh.Range("AO" & ligne_collage)
 dsh.Range("AP3:AP" & nbl_copier + 2).Copy sh.Range("AP" & ligne_collage)
 dsh.Range("AQ3:AQ" & nbl_copier + 2).Copy sh.Range("AQ" & ligne_collage)
 dsh.Range("AR3:AR" & nbl_copier + 2).Copy sh.Range("AR" & ligne_collage)
 dsh.Range("AS3:AS" & nbl_copier + 2).Copy sh.Range("AS" & ligne_collage)
 dsh.Range("AT3:AT" & nbl_copier + 2).Copy sh.Range("AT" & ligne_collage)
 dsh.Range("AU3:AU" & nbl_copier + 2).Copy sh.Range("AU" & ligne_collage)
 dsh.Range("AV3:AV" & nbl_copier + 2).Copy sh.Range("AV" & ligne_collage)
 dsh.Range("AW3:AW" & nbl_copier + 2).Copy sh.Range("AW" & ligne_collage)
 dsh.Range("AX3:AX" & nbl_copier + 2).Copy sh.Range("AX" & ligne_collage)
 dsh.Range("AY3:AY" & nbl_copier + 2).Copy sh.Range("AY" & ligne_collage)
 dsh.Range("AZ3:AZ" & nbl_copier + 2).Copy sh.Range("AZ" & ligne_collage)

 dsh.Range("BA3:BQ" & nbl_copier + 2).Copy sh.Range("BA" & ligne_collage)
 dsh.Range("BB3:BB" & nbl_copier + 2).Copy sh.Range("BB" & ligne_collage)
 dsh.Range("BC3:BC" & nbl_copier + 2).Copy sh.Range("BC" & ligne_collage)
 dsh.Range("BD3:BD" & nbl_copier + 2).Copy sh.Range("BD" & ligne_collage)
 dsh.Range("BE3:BE" & nbl_copier + 2).Copy sh.Range("BE" & ligne_collage)
 dsh.Range("BF3:BF" & nbl_copier + 2).Copy sh.Range("BF" & ligne_collage)
 dsh.Range("BG3:BG" & nbl_copier + 2).Copy sh.Range("BG" & ligne_collage)
 dsh.Range("BH3:BH" & nbl_copier + 2).Copy sh.Range("BH" & ligne_collage)
 dsh.Range("BI3:BI" & nbl_copier + 2).Copy sh.Range("BI" & ligne_collage)
 dsh.Range("BJ3:BJ" & nbl_copier + 2).Copy sh.Range("BJ" & ligne_collage)
 dsh.Range("BK3:BK" & nbl_copier + 2).Copy sh.Range("BK" & ligne_collage)
 dsh.Range("BL3:BL" & nbl_copier + 2).Copy sh.Range("BL" & ligne_collage)
 dsh.Range("BM3:BM" & nbl_copier + 2).Copy sh.Range("BM" & ligne_collage)
 dsh.Range("BN3:BN" & nbl_copier + 2).Copy sh.Range("BN" & ligne_collage)
 dsh.Range("BO3:BO" & nbl_copier + 2).Copy sh.Range("BO" & ligne_collage)
 dsh.Range("BP3:BP" & nbl_copier + 2).Copy sh.Range("BP" & ligne_collage)
 dsh.Range("BQ3:BQ" & nbl_copier + 2).Copy sh.Range("BQ" & ligne_collage)
 dsh.Range("BR3:BR" & nbl_copier + 2).Copy sh.Range("BR" & ligne_collage)
 dsh.Range("BS3:BS" & nbl_copier + 2).Copy sh.Range("BS" & ligne_collage)
 dsh.Range("BT3:BT" & nbl_copier + 2).Copy sh.Range("BT" & ligne_collage)

wb.Close False

 Next I
   With Application
                .ScreenUpdating = True
                .Calculation = xlCalculationAutomatic
            End With

Fin:
End Sub

Excusez moi pour les messages précedent,

Cdlt

Pas la peine de s'excuser autant, c'est pas grave...

Alors c'est clair mais il demeure juste la question de la référence de la plage à copier et celle de la plage à recevoir. Alors dans le doute, je vous propose un essai assez générique que vous pourrez adapter selon votre besoin précis :

Sub Utilisation_FileDialog_Ouvrir()

Dim objOuvrir As FileDialog
Dim objFichiers As FileDialogSelectedItems
Dim wbsource as workbook, wbdest as workbook

Set objOuvrir = Application.FileDialog(msoFileDialogOpen)

With objOuvrir 'Affiche la fenêtre "Ouvrir"
    .Filters.Clear 'Efface les filtres existants.
    .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm" 'Définit une liste de filtres pour le champ "Type de fichiers".
    .Show
    Set objFichiers = .SelectedItems 'Définit les fichiers sélectionnés
End With

If not objFichiers.Count = 1 Then Exit Sub 'On sort si aucun fichier n'a été sélectionné

Application.ScreenUpdating = False

Set wbdest = thisworkbook 'classeur exécutant où sera collée la feuille
Set wbsource = Workbooks.Open(objFichiers(1))

wbsource.sheets("Villes").usedrange.copy destination:=wbdest.Sheets("informations").range("A1") '<<<<ADAPTER
wbsource.Close False

Application.ScreenUpdating = True

End Sub

C'est un début...

Et je retouche un petit peu votre autre macro pour l'alléger :

Sub Rectangleàcoinsarrondis1_Cliquer()

Dim wb As Workbook
Dim sh As Worksheet, dsh As Worksheet
Dim n&, I&, j&
Dim arr

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'application pour ouvrir les fichier
arr = Application.GetOpenFilename(filefilter:="excel files, *.xls*", Title:="open excel files", MultiSelect:=True)
if typename(arr) = "Boolean" then exit sub

'On Error GoTo Fin
Set sh = ThisWorkbook.Sheets("Armoire") 'Affecter une valeur à la variable

With sh
    ligne_collage = .Range("A" & .Rows.Count).End(xlUp).Row + 1 '<<<< ???? (colonne R ?) premiere non vide en A
    .Range("A3:BZ" & .rows.count).ClearContents 'effacer le contenu des colonnes
    For I = LBound(arr) To UBound(arr)
        ligne_collage = .Range("A" & .Rows.Count).End(xlUp).Row + 2
        Set wb = Workbooks.Open(arr(I)) 'Affecter une valeur- le classeur source
        Set dsh = wb.Sheets(1) 'la feuille dans le classeur source
        nbl_copier = dsh.Range("B" & dsh.Rows.Count).End(xlUp).Row 'derniere ligne tableau dans la feuille source
        dsh.Range("A3:BT" & nbl_copier).Copy .Range("A" & ligne_collage) 'copier et coller le tableau dans la feuille source
        wb.Close False
        Set dsh = Nothing
        Set wb = Nothing
    Next I
End with

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

Fin:
End Sub

Merci pour votre retouche de maccro, la votre est bien plus maitrisé que la mienne ahah..

Concernant l'autre partie, il me reste juste a définir la plage de reception des données?

Merci de votre aide

Oui, enfin les 2 plages. Si ce n'est pas toute la zone utilisée que vous voulez copier, alors il faudra remplacer usedrange par la range à cibler. Et pour la plage de destination, il faut juste adapter. En vous inspirant de votre première macro, ça devrait aller je pense.

Bonjour,

Merci pour votre aide,

J'ai ajouté votre code dans le même sub que l'autre. Du coup quand je lance en cliquant sur mon bouton le volée pour choisir mon fichier va s'ouvrir deux fois. Comment l'adapter facilement ? les codes etant différent il faut tout changer !

Autre chose, le programme fonctionne mais ne copie que jusqu'a la colone AK alors qu'elle va jusqu'a BZ. J'ai pourtant completer le range comme ceci Range("A3:BZ5000"). Merci de votre aide

Bonjour,

Oui, c'est normal parce que votre problème initial concernait la procédure avec l'onglet Villes. J'ai donc considéré qu'il s'agissait de 2 procédures distinctes.

La première procédure se comporte indifféremment avec les fichiers sélectionnés et va prendre les données de la feuille 1. La seconde est plus précise car elle prend les données de la feuille Villes (n°3). Il y a plusieurs options :

AVEC UNE SEULE BOITE DE DIALOGUE (sans sélectionner le fichier Jules) :

- si vous connaissez le nom du fichier (Jules dans votre exemple) et qu'il ne changera pas, alors on peut se passer de boite de dialogue et importer les données directement en ciblant son chemin (ce serait l'idéal),

- s'il s'agit d'un fichier émanant d'un modèle de fichiers périodiques et évolutifs, alors c'est plus compliqué mais toujours possible si ces fichiers ont un modèle commun (une partie du chemin et une partie du nom - ex : "C:\2019\Jules 2019.xlsx", "C:\2020\Jules 2020.xlsx").[s=co-95b3d7][s=co-4f81bd][/s][/s]

AVEC UNE SEULE BOITE DE DIALOGUE (en sélectionnant le fichier Jules) :

- sinon, s'il n'y a pas de dénominateur commun mais que vos fichiers de la première procédure ne contiennent qu'un unique onglet, on peut dire que si nombre d'onglets > 1 alors on prend les données de l'onglet Villes.

AVEC 2 BOITES DE DIALOGUE :

- sinon, si on arrive pas à trouver une solution parmi les précédentes, je peux réorganiser le code mais je pense qu'il faudra faire avec 2 boites de dialogue...

Pour la copie, je ne peux pas m'avancer pour l'instant car je ne sais pas comment vous avez modifié le code. Dans la nouvelle procédure, on avait :

wbsource.sheets("Villes").usedrange.copy destination:=wbdest.Sheets("informations").range("A1") '<<<<ADAPTER

J'avais prévu de copier la zone utilisée (et de coller en A1 de la destination). Si la zone utilisée s'arrête en AK, c'est normal. Si vous voulez aller jusqu'à BZ, il faut mettre (c'est un exemple car je ne sais pas quelles lignes vous prendrez) :

wbsource.sheets("Villes").range("A1:BZ5000").copy destination:=wbdest.Sheets("informations").range("A1") '<<<<ADAPTER

Dans votre ancienne procédure :

dsh.Range("A3:BT" & nbl_copier).Copy .Range("A" & ligne_collage) 'copier et coller le tableau dans la feuille 

J'ai juste compacté les quelques 60 lignes de code répétant l'opération de copier/coller pour chaque colonne en une seule. Je ne crois pas avoir modifié quoi que ce soit.

Mais si vous voulez prendre jusqu'à BZ, alors modifiez ainsi :

dsh.Range("A3:BZ" & nbl_copier).Copy .Range("A" & ligne_collage) 'copier et coller le tableau dans la feuille 

Mais il n'y a aucune raison de se retrouver sans les colonnes AL à BT, à moins que vous ayez changé quelque chose.

Bonjour,

A l"aide de votre aide j'ai réalisé le code suivant qui me semble fonctionnel ! Qu'en pensez vous ?

Merci encore,

CR

Sub Rectangleàcoinsarrondis1_Cliquer()

Dim objOuvrir As FileDialog
Dim objFichiers As FileDialogSelectedItems
Dim wbsource As Workbook, wbdest As Workbook

Set objOuvrir = Application.FileDialog(msoFileDialogOpen)

With objOuvrir 'Affiche la fenêtre "Ouvrir"
    .Filters.Clear 'Efface les filtres existants.
    .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm" 'Définit une liste de filtres pour le champ "Type de fichiers".
    .Show
    Set objFichiers = .SelectedItems 'Définit les fichiers sélectionnés
End With

Worksheets("Armoires").Range("A2:BZ5000").ClearContents
Worksheets("Supports + Foyers").Range("A2:BZ5000").ClearContents

If Not objFichiers.Count = 1 Then Exit Sub 'On sort si aucun fichier n'a été sélectionné

Application.ScreenUpdating = False

Set wbdest = ThisWorkbook 'classeur exécutant où sera collée la feuille
Set wbsource = Workbooks.Open(objFichiers(1))

wbsource.Sheets("Armoire").UsedRange.Copy Destination:=wbdest.Sheets("Armoires").Range("A1") '<<<<ADAPTER
wbsource.Sheets("Support + Foyer").UsedRange.Copy Destination:=wbdest.Sheets("Supports + Foyers").Range("A1")
wbsource.Close False

Application.ScreenUpdating = True

Fin:
End Sub

Bonjour,

Oui, sur le papier, ça parait pas mal. Après, je n'ai pas vu les fichiers mais si ça fonctionne pour l'instant, c'est très bien, vous pourrez toujours apporter des améliorations quand vos besoins évolueront et se préciseront.

Rechercher des sujets similaires à "importe donnees fichier"