XL 2013 Importer nom d'un fichier source

Leguyl

XLDnaute Occasionnel
Bonjour à tou(te)s,

J'ai un template dans lequel j'importe, via VBA, les données d'un autre fichier (fichier source) que je sélectionne dans un répertoire donné pour récupérer certaines colonnes d'un tableau.

À ce niveau, tout se passe bien, je peux ensuite effectuer tous les calculs nécessaires dans le template. Mais je dois, également, dans une cellule de celui-ci, mettons D2, importer le nom du fichier source sans le modifier et je ne vois pas vraiment comment faire.

Une solution ou une idée à me soumettre ?

Bonne journée,
Leguyl
 
Solution
C
Re,

Pourquoi faire si compliqué 🤪 !?
VB:
WkbDest.Worksheets("Import").[NomFichier].Value =
WkbSrc.Worksheets("Caractéristiques").Range("NomFichier").Value

Ou
VB:
WkbDest.Worksheets("Import").[NomFichier].Value =
WkbSrc.Name

@+
C

Compte Supprimé 979

Guest
Bonjour Leguyl

Sans fichier est sans code VBA 🤔 heuuuu... voyons voir
BouleDeCristal.jpg


😜
 

Leguyl

XLDnaute Occasionnel
Bonjour BrunoM45,

Mééeuh elle fait peur la dame derrière la boule de cristal 🤪

Vrai que sans un fichier source ni le template, ce n'est pas simple mais il y a tellement de données dans la source que j'ai peur d'oublier de virer certaines choses qui ne peuvent apparaître ici.

J'ai fait un test en modifiant la copie d'une source (ce que j'aimerais éviter pour ne pas devoir modifier tous les fichiers sources) et en insérant la formule suivante pour afficher son nom :

VB:
=STXT(CELLULE("nomfichier");CHERCHE("[";CELLULE("nomfichier"))+1;CHERCHE("]";CELLULE("nomfichier"))-CHERCHE("[";CELLULE("nomfichier"))-1)

Jusque là, pas de souci, le nom du fichier source s'affiche bien dans la cellule que j'ai nommé NomFichier.

Mais lorsque j'importe le contenu de cette cellule dans mon template, c'est le nom du fichier template qui s'affiche. Avec un PasteSpecial xlPasteValues, c'est pourtant bien la valeur qui est sensée être collée dans le template, non ?

VB:
Sub ImportData()
    
    Application.ScreenUpdating = False 'désactive le rafraichissement de l'écran
    
    Call Réinit 'appel à la fonction de réinitialisation
    
    Dim WkbSrc, WkbDest As Workbook, ShtDest As Worksheet
    Dim Nom_Fichier As Variant
    
    Set WkbDest = ThisWorkbook
            
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm")
    If Nom_Fichier <> False Then
        Set WkbSrc = Workbooks.Open(Nom_Fichier)
        WkbSrc.Activate
    End If
          
    '--------------------------------------------------------'
    ' Copie des données depuis la source vers la destination '
    '--------------------------------------------------------'
    
    With WkbSrc.Worksheets("Coordonnées")
        .Range("NomClient").Copy
    End With
    
    WkbDest.Worksheets("Import").[NomClient].PasteSpecial xlPasteValues
    
    With WkbSrc.Worksheets("Coordonnées")
        .Range("NumChantier").Copy
    End With
    
    WkbDest.Worksheets("Import").[NumChantier].PasteSpecial xlPasteValues
       
    With WkbSrc.Worksheets("Caractéristiques")
        .Range("NomFichier").Copy
    End With
    
    WkbDest.Worksheets("Import").[NomFichier].PasteSpecial xlPasteValues
    

    '----------------------------------------------------------------'
    ' Copie des colonnes utiles du tableau vers celui de destination '
    '----------------------------------------------------------------'
        
...    

End Sub
 
C

Compte Supprimé 979

Guest
Re,

Pourquoi faire si compliqué 🤪 !?
VB:
WkbDest.Worksheets("Import").[NomFichier].Value =
WkbSrc.Worksheets("Caractéristiques").Range("NomFichier").Value

Ou
VB:
WkbDest.Worksheets("Import").[NomFichier].Value =
WkbSrc.Name

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 310
Membres
102 859
dernier inscrit
Diallokass