Menu

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

Messages postés
1
Date d'inscription
jeudi 14 mars 2019
Dernière intervention
14 mars 2019
- - Dernière réponse : Patrice33740
Messages postés
7672
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
15 mars 2019
- 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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
7672
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
15 mars 2019
1661
0
Merci
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)


Cordialement
Patrice
Commenter la réponse de Patrice33740