Problème pour récupérer des données dans 1 fichier excel fermé
max9292
Messages postés
1
Statut
Membre
-
Patrice33740 Messages postés 8400 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8400 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis sous Excel 2016 et j'ai un problème pour récupérer les données à partir d'un fichier excel fermé.
En effet, j'ai un fichier source DDdj3Iojvex_source.xls dans lequel je souhaite extraire une plage de données pour les recopier dans un autre fichier. Celui-ci contient un bouton avec la macro suivante (que j'ai repris de ce site) :
Sub ImporterDonneesSansOuvrir()
Dim Chemin As String, Fichier As String
Chemin = "C:\Users\HDDinner\Documents"
Fichier = "DDdj3Iojvex_source.xls"
ThisWorkbook.Names.Add "plage", _
RefersTo:="='" & Chemin & "[" & Fichier & "]Feuil1'!$A$1:$F$10"
With Sheets("Feuil1")
.[A1:F10] = "=plage"
.[A1:F10].Copy
Sheets("Feuil1").Range("A1").PasteSpecial xlPasteValues
.[A1:F10].Clear
End With
End Sub
J'ai un souci avec cette partie du code -> ThisWorkbook.Names.Add "plage"
Pouvez-vous m'indiquer à quoi cela correspond?
Merci par avance pour votre aide
Je suis sous Excel 2016 et j'ai un problème pour récupérer les données à partir d'un fichier excel fermé.
En effet, j'ai un fichier source DDdj3Iojvex_source.xls dans lequel je souhaite extraire une plage de données pour les recopier dans un autre fichier. Celui-ci contient un bouton avec la macro suivante (que j'ai repris de ce site) :
Sub ImporterDonneesSansOuvrir()
Dim Chemin As String, Fichier As String
Chemin = "C:\Users\HDDinner\Documents"
Fichier = "DDdj3Iojvex_source.xls"
ThisWorkbook.Names.Add "plage", _
RefersTo:="='" & Chemin & "[" & Fichier & "]Feuil1'!$A$1:$F$10"
With Sheets("Feuil1")
.[A1:F10] = "=plage"
.[A1:F10].Copy
Sheets("Feuil1").Range("A1").PasteSpecial xlPasteValues
.[A1:F10].Clear
End With
End Sub
J'ai un souci avec cette partie du code -> ThisWorkbook.Names.Add "plage"
Pouvez-vous m'indiquer à quoi cela correspond?
Merci par avance pour votre aide
Configuration: Windows / Firefox 65.0
1 réponse
-
Bonjour,
Cette ligne crée une plage nommée, nommée plage.
C'est inutile et cela risque de générer une erreur si il existe déjà une plage nommée ainsi.
De façon générique, j'aurais écrit :
Sub ImporterDonneesSansOuvrir() Dim destination As Range Dim chemin$, fichier$, formule$, plage$ ' Définir la source chemin = "C:\Users\HDDinner\Documents" fichier = "DDdj3Iojvex_source.xls" plage = "$A$1:$F$10" ' Définir la destination (par exemple C4:H13 ) With Worksheets(1) Set destination = .Range("C4") With .Range(plage) Set destination = destination.Resize(.Rows.Count, .Columns.Count) End With End With ' Lire le fichier fermé formule = "='" & chemin & "\[" & fichier & "]Feuil1'!" & plage With destination .FormulaArray = formule .Value = .Value End With End Sub
L'inconvénient de cette méthode est qu'il faut connaître le nom de la feuille source (dans l'exemple Feuil1)