[vba] Ouvrir un fichier avec le début d'un nom variable

AntoineM

XLDnaute Junior
Bonjour à tous,

Je suis entrain de créer un fichier excel d'inventaire pour mon entreprise.
Malheureusement je bloque sur une étape !

J'ai besoin d'activer un classeur déja ouvert dont le nom est variable.
Le nom de ce classeur se compose comme ca :
"LIST111_jj.mm.aaaa_hh.mm.csv"
Avec le jj.mm.aaaa et hh.mm qui correspondent à l'heure de création de ce fichier d'extraction.

J'ai brouillonné un bout de code :confused:

Code:
Sub Ouverture()

Dim Chemin As String
Dim Part As String
Dim Chem2 As String
'Chemin = "N:\PARTAGES\03-ExtractionsTmp\"
Chemin = "N:\PARTAGES\03-ExtractionsTmp\"
Part = Range("E1").Value
Chem2 = Dir(Chemin & Part & "*.csv")

'Ouverture du fichier
Workbooks.Open Filename:=Chemin & Dir(Chemin & Part & "*.csv"), Local:=True

End Sub

Dans ma cellule E1 se trouve une concatenation de texte qui me permet d'obtenir "LIST111_jj.mm.aaaa_hh.m" car je ne voulais pas le dernier chiffre des minutes.

Le code fonctionne bien pour ouvrir le fichier, mais je ne sais pas comment l'activer pour réccupérer des données à l'intérieur ou réccupérer les données tout simplement :(

Merci d'avance à tous ceux qui prendront le temps de me lire,

Antoine
 

Pièces jointes

  • Classeur1.xlsx
    8.9 KB · Affichages: 51
  • Classeur1.xlsx
    8.9 KB · Affichages: 77
  • Classeur1.xlsx
    8.9 KB · Affichages: 81
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : [vba] Ouvrir un fichier avec le début d'un nom variable

BOnjour ,

Donc lorsque ton fichier est ouvert ( ou bleu ;-)) ,

un principe de transfert peut être comme ceci :

Thisworkbook est l'objet classeur contenant le code.

Le fait d'ouvrir un classeur le rend actif donc devient activeworkbook

un exemple pour rappatrier les colonnes A à E de la ligne 1

Code:
Sub Ouverture()

Dim Chemin As String, Part As String, Chem2 As String

Chemin = "N:\PARTAGES\03-ExtractionsTmp\"
Part = 'Range("E1").Value
Chem2 = Dir(Chemin & Part & "*.csv")

'Ouverture du fichier
Workbooks.Open Filename:=Chemin & Chem2, Local:=True
ThisWorkbook.Sheets("Feuil1").Range("A1:E1") = ActiveWorkbook.ActiveSheet.Range("A1:E1").Value
End Sub
 

AntoineM

XLDnaute Junior
Re : [vba] Ouvrir un fichier avec le début d'un nom variable

Merci pour ta réponse,

C'est effectivement ce que je recherche.

Cependant j'aimerais bien comprendre ton bout de code,

Mon fichier "Inventaire.xlsx" et le fichier qui contient mes macros, l'une d'elle permet d'ouvrir le classeur "LIST111_jj.mm... .csv" dont je me servirais uniquement pour copier coller des donnée (colonne A à E en plus :) ).

Du coup,
A quoi correspond ThisWorkbook et ActiveWorkbook.

Car pour lancer ma macro, je clique sur un bouton que j'ai mis sur mon classeur "Inventaire.xlsx". Du coup celui-ci passe actif je suppose? Alors comment faire.

Je peux activer mon classeur en utilisant ce code :
Code:
Dim Wbk As Workbook
    
For Each Wbk In Application.Workbooks
    If Left(Wbk.Name, 8) = "LIST111_" Then
        Wbk.Activate
        Exit For
    End If
Next Wbk

Mais après cela m'obligerais a passer par le presse papier avec un Selection.copy et Selection.paste
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : [vba] Ouvrir un fichier avec le début d'un nom variable

et bien donc :

Il faut vraiment te sortir de la tête cette histoire d'activation classeur, pas besoin de l'activer pour copier


moi , je passerais le nom du fichier csv en variable publique

Dans un module , il suffit de déclarer :

public Nom_Csv as string

lors de l'open
Code:
Workbooks.Open Filename:=Chemin & Chem2, Local:=True
Nom_csv = activeworkbook.Name



Code:
sub Bouton

ThisWorkbook.Sheets("Feuil1").Range("A1:E1") = Workbooks(nom_Csv).ActiveSheet.Range("A1:E1").Value

end sub
 

Dranreb

XLDnaute Barbatruc
Re : [vba] Ouvrir un fichier avec le début d'un nom variable

Bonjour tous.
moi , je passerais le nom du fichier csv en variable publique
Moi , je passerais le fichier csv en variable publique

Dans un module , il suffit de déclarer :

Public FicCsv As Workbook

lors de l'open
Code vba:
Set FicCsv = Workbooks.Open(Filename:=Chemin & Chem2, Local:=True)





Code vba:
Sub Bouton

ThisWorkbook.Sheets("Feuil1").Range("A1:E1") = FicCsv.ActiveSheet.Range("A1:E1").Value

end sub
 

Discussions similaires

Statistiques des forums

Discussions
314 644
Messages
2 111 528
Membres
111 189
dernier inscrit
Laurent.