Ouverture fichier
Tequillaman
-
tequillaman -
tequillaman -
Bonjour,
Je souhaite ouvrir un fichier dont je ne connais que partiellement le nom.
Voila mon code
Dim chemin as string
Chemin = " x:\doc\"
Workbooks.open filename:=chemin & menu.saisie.text & "*.xls*"
Menu.saisie.text c'est le champs du userform utilisé pour taper le nom du fichier
J'ai une erreur a chaque fois a cause des * qui se mettent dans le nom au lieu de servir a accepter que le nom du fichier continu.
Si je saisi doc1 il recherche doc1*.xls* alors que je veut doc1_fab.xlsx
Merci pour vos lumières
Je souhaite ouvrir un fichier dont je ne connais que partiellement le nom.
Voila mon code
Dim chemin as string
Chemin = " x:\doc\"
Workbooks.open filename:=chemin & menu.saisie.text & "*.xls*"
Menu.saisie.text c'est le champs du userform utilisé pour taper le nom du fichier
J'ai une erreur a chaque fois a cause des * qui se mettent dans le nom au lieu de servir a accepter que le nom du fichier continu.
Si je saisi doc1 il recherche doc1*.xls* alors que je veut doc1_fab.xlsx
Merci pour vos lumières
A voir également:
- Ouverture fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
4 réponses
Bonjour,
Y a un message d'erreur ou pas ???
Rectification, pas possible d'ouvrir un fichier avec le nom incomplet
Y a un message d'erreur ou pas ???
Rectification, pas possible d'ouvrir un fichier avec le nom incomplet
Bonjour à tous,
Si la 1ère partie du nom est connu, voici une macro qui va t'afficher le nom de tous les fichier commençant par ce nom dans un répertoire que tu auras choisi. Ensuite avec un double clic tu pourras ouvrir le classeur qui t’intéresse.
Mettre dans la feuille où vont s'afficher les données:
Dans un module standard:
Insérer un UserForm y mettre un bouton avec ce code:
Voir le fichier exemple:
http://www.cjoint.com/c/FDDqB41cWQQ
@+ Le Pivert
Si la 1ère partie du nom est connu, voici une macro qui va t'afficher le nom de tous les fichier commençant par ce nom dans un répertoire que tu auras choisi. Ensuite avec un double clic tu pourras ouvrir le classeur qui t’intéresse.
Mettre dans la feuille où vont s'afficher les données:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
nom = Target.Value
If Range("C1") = "" Then Exit Sub
chemin = Range("C1") & "\"
Workbooks.Open chemin & nom 'on ouvre le classeur si existant
End Sub
Dans un module standard:
Option Explicit Public chemin As String, nom As String
Insérer un UserForm y mettre un bouton avec ce code:
Option Explicit
Private Sub CommandButton1_Click()
'Nécessite d'activer la référence "Microsoft Scripting RunTime"
'allez dans Outils Références et cocher "Microsoft Scripting RunTime"
Dim Fso As Scripting.FileSystemObject
Dim FileItem As Scripting.File
Dim Tableau()
Dim Plage As Range
Dim m As Integer, i As Integer
Dim z As Byte, Valeur As Byte
Dim Cible As Variant
SelectionDossier_source
nom = Application.InputBox("Entrez le nom")
nom = Dir(chemin & "\\" & nom & "*")
Range("C1") = chemin & "\"
'Boucle sur les fichiers
Do
m = m + 1
ReDim Preserve Tableau(1 To 2, 1 To m)
Tableau(1, m) = nom
Set Fso = CreateObject("Scripting.FileSystemObject")
Set FileItem = Fso.GetFile(chemin & "\" & nom)
'Récupère la date de création
Tableau(2, m) = Left(FileItem.DateCreated, 10)
'Pour récupérer la date de dernière modification
'Tableau(2, m) = Left(FileItem.DateLastModified, 10)
'Pour récupérer la taille du fichier
'Tableau(2, m) = Left(FileItem.Size, 10)
nom = Dir
Loop Until nom = ""
'---Trie les fichiers par ordre décroissant de création ---
Do
Valeur = 0
For i = 1 To m - 1
If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
For z = 1 To 2
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next z
Valeur = 1
End If
Next i
Loop While Valeur = 1
'--- Transfère les données dans la feuille de calcul ---
Set Plage = Worksheets("Feuil1").Range("A1")
Set Plage = Plage.Resize(UBound(Tableau(), 2), UBound(Tableau()))
Plage = Application.Transpose(Tableau())
Worksheets("Feuil1").Columns("A:B").AutoFit
End Sub
Sub SelectionDossier_source()
With Application.FileDialog(msoFileDialogFolderPicker)
'Définit un titre pour la boîte de dialogue
.Title = "Choisissez le dossier des classeurs à rechercher"
'Affiche la boîte de dialogue
.Show
'Affiche le nom du dossier sélectionné
If .SelectedItems.Count > 0 Then
chemin = .SelectedItems(1)
End If
End With
End Sub
Voir le fichier exemple:
http://www.cjoint.com/c/FDDqB41cWQQ
@+ Le Pivert
Voici un autre exemple, ouvre le classeur aux modifications les plus récentes:
http://www.cjoint.com/c/FDEgIuFbyUQ
http://www.cjoint.com/c/FDEgIuFbyUQ
Merci pour ta réponse mais je voudrais que ce soit transparent pour les utilisateurs. donc je voudrais que si il écrit dans le userform 61117, que sa poursuive ma macro et que sa ouvre le fichier 61117 9lnw33.xlsx, que ma macro copie les données voulue et referme le fichier après. de plus, je peut avoir des fichiers en xls ou xlsx c'est pour cela que je voulais utiliser l'asterisk.
mon code fonctionne si je tape le nom complet et que mon fichier est bien un .xlsx
mais j'ai des fichiers .xls
Private Sub Valider_Click()
Dim CHEMIN As String
Dim FICHIER As String
CHEMIN = "C:\Users\xx\Documents\premiers tests\test recup\test\New folder\"
FICHIER = CHEMIN & menu.saisie.Text & ".xlsx"
' Dim choix
' vérification de l'existance du fichier
If Dir(FICHIER) = "" Then
' message erreur si il n'existe pas
MsgBox "le fichier est introuvable"
' Si ok ouverture du fichier
Else
Workbooks.Open Filename:=FICHIER
' copie et colle cellules
Sheets("RESUM").Select
Range("A2,B2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2,m2,n2,o2,p2,q2,r2,s2,t2,u2,v2,w2,x2,y2,Z2").Select
Selection.Copy
Windows("test.xls").Activate
Range("A65000").End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Pour fermer le fichier .xls
Workbooks(menu.saisie.Text & ".xlsx").Close SaveChanges:=False
End If
End Sub
mon code fonctionne si je tape le nom complet et que mon fichier est bien un .xlsx
mais j'ai des fichiers .xls
Donc, avoir le nom complet...