Problème pour récupérer des données dans 1 fichier excel fermé

Fermé
max9292 Messages postés 1 Date d'inscription jeudi 14 mars 2019 Statut Membre Dernière intervention 14 mars 2019 - 14 mars 2019 à 11:16
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 14 mars 2019 à 15:02
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

Configuration: Windows / Firefox 65.0
A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 14 mars 2019 à 15:14
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)


0