Ouvrir un fichier Excel ayant une extension particulière
Résolu/Fermé
Blackjack23
Messages postés
7
Date d'inscription
samedi 5 décembre 2015
Statut
Membre
Dernière intervention
17 janvier 2016
-
Modifié par NHenry le 1/01/2016 à 17:00
Blackjack23 Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 17 janvier 2016 - 2 janv. 2016 à 15:39
Blackjack23 Messages postés 7 Date d'inscription samedi 5 décembre 2015 Statut Membre Dernière intervention 17 janvier 2016 - 2 janv. 2016 à 15:39
A voir également:
- Ouvrir un fichier Excel ayant une extension particulière
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier docx ? - Guide
- Liste déroulante excel - Guide
5 réponses
NHenry
Messages postés
15112
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 avril 2024
330
1 janv. 2016 à 17:01
1 janv. 2016 à 17:01
Arrives-tu déjà à trouver le nom du fichier qui t'intéresse ?
Gloops1
Messages postés
314
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
27 septembre 2023
11
Modifié par Gloops1 le 1/01/2016 à 17:51
Modifié par Gloops1 le 1/01/2016 à 17:51
Bonjour,
Ah j'avais mal lu, le problème est d'effectuer la sélection du fichier parmi ceux trouvés.
Pour faire cela en exploitant le code écrit ci-dessus, il faut créer une boîte de dialogue avec une liste déroulante.
Peut-être que ceci peut aider :
http://boisgontierjacques.free.fr/pages_site/formulairebases.htm#Lescontroles
Cela étant dit, il est plus habituel de faire sélectionner le fichier avec la boîte de dialogue système de sélection de fichier pour ouverture :
Application.GetOpenFileName
Au besoin ensuite consulter l'aide de Workbooks.Open pour voir si il y a quelque chose à dire d'autre que le nom du fichier (cela pour réagir au titre : fichier Excel ayant une extension particulière).
Souvent on met le nom du fichier dans une variable pour le cas où on ait un autre traitement à faire dessus avant l'ouverture.
Sinon on pourrait concevoir le code :
mais avec ceci le cas où l'utilisateur a cliqué sur annuler est plus difficile à gérer proprement, d'où le passage par une variable chaîne de caractères.
Ah j'avais mal lu, le problème est d'effectuer la sélection du fichier parmi ceux trouvés.
Pour faire cela en exploitant le code écrit ci-dessus, il faut créer une boîte de dialogue avec une liste déroulante.
Peut-être que ceci peut aider :
http://boisgontierjacques.free.fr/pages_site/formulairebases.htm#Lescontroles
Cela étant dit, il est plus habituel de faire sélectionner le fichier avec la boîte de dialogue système de sélection de fichier pour ouverture :
Application.GetOpenFileName
Au besoin ensuite consulter l'aide de Workbooks.Open pour voir si il y a quelque chose à dire d'autre que le nom du fichier (cela pour réagir au titre : fichier Excel ayant une extension particulière).
Souvent on met le nom du fichier dans une variable pour le cas où on ait un autre traitement à faire dessus avant l'ouverture.
Dim strCheminFichier As String strCheminFichier = Application.GetOpenFileName() If Nz(strCheminFichier, "")<>"" WorkBooks.Open strCheminFichier End IF
Sinon on pourrait concevoir le code :
WorkBooks.Open Application.GetOpenFileName()
mais avec ceci le cas où l'utilisateur a cliqué sur annuler est plus difficile à gérer proprement, d'où le passage par une variable chaîne de caractères.
Blackjack23
Messages postés
7
Date d'inscription
samedi 5 décembre 2015
Statut
Membre
Dernière intervention
17 janvier 2016
1 janv. 2016 à 21:42
1 janv. 2016 à 21:42
pour information, le nom du fichier est connu partiellement avant de lancer la recherche, les 6 premiers chiffres sont connus, seule la seconde partie associée au format "date" n'est pas connue:
EX: 543764_03_12_2015 >> n'ayant pas la date précise de l'enregistrement "03_12_2015", je ne peux lancer cette recherche que sur la base "543764".
La recherche se fait dans plusieurs sous dossiers et plusieurs centaines de fichiers au même format.
Je voulais seulement pouvoir utiliser une Msgbox, y renseigner les 6 premiers chiffres seulement et arriver au final à ouvrir le fichier avec sa date associée mais ça ne marche pas.
le numéro à 6 chiffres correspond à un numéro de série et est unique.
EX: 543764_03_12_2015 >> n'ayant pas la date précise de l'enregistrement "03_12_2015", je ne peux lancer cette recherche que sur la base "543764".
La recherche se fait dans plusieurs sous dossiers et plusieurs centaines de fichiers au même format.
Je voulais seulement pouvoir utiliser une Msgbox, y renseigner les 6 premiers chiffres seulement et arriver au final à ouvrir le fichier avec sa date associée mais ça ne marche pas.
le numéro à 6 chiffres correspond à un numéro de série et est unique.
Gloops1
Messages postés
314
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
27 septembre 2023
11
2 janv. 2016 à 08:56
2 janv. 2016 à 08:56
Bonjour,
A vérifier avec la doc : le filtre est à fournir dans le premier argument de GetOpenFileName.
Dim NumSer As String
NumSer = InputBox("Entrez le numéro de série : ")
strCheminFichier = GetOpenFileName("Fichiers de série " + NumSer, NumSer + "*.*")
Si on veut faire un contrôle de validité sur le numéro de série on peut faire une boucle mais on obtiendra un meilleur résultat en créant un formulaire de saisie (à la place de InputBox).
A vérifier avec la doc : le filtre est à fournir dans le premier argument de GetOpenFileName.
Dim NumSer As String
NumSer = InputBox("Entrez le numéro de série : ")
strCheminFichier = GetOpenFileName("Fichiers de série " + NumSer, NumSer + "*.*")
Si on veut faire un contrôle de validité sur le numéro de série on peut faire une boucle mais on obtiendra un meilleur résultat en créant un formulaire de saisie (à la place de InputBox).
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
2 janv. 2016 à 09:10
2 janv. 2016 à 09:10
Bonjour,
Pour chercher un fichier, je t'ai déjà répondu ici:
https://forums.commentcamarche.net/forum/affich-32891349-comment-eviter-les-doublons-de-fichiers-au-format-date#1
il suffit juste de l'adapter comme ceci:
Pour chercher un fichier, je t'ai déjà répondu ici:
https://forums.commentcamarche.net/forum/affich-32891349-comment-eviter-les-doublons-de-fichiers-au-format-date#1
il suffit juste de l'adapter comme ceci:
Dim chemin As Variant Dim nom, result As String chemin = "C:\Documents and Settings\" nom = Application.InputBox("Entrez le numéro de série") result = chemin & Dir(chemin & "\\" & nom & "*") On Error Resume Next 'si pas de fichier existant Workbooks.Open result 'on ouvre le classeur si existant
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Blackjack23
Messages postés
7
Date d'inscription
samedi 5 décembre 2015
Statut
Membre
Dernière intervention
17 janvier 2016
2 janv. 2016 à 15:39
2 janv. 2016 à 15:39
Merci pour tout,
j'ai adapté le code de façon à pour aller ouvrir un fichier sans avoir le sous répertoire connu (parmi plusieurs sous répertoires existants) et ça fonctionne:
Voici le code
Sub import_Click()
'Ne pas ouvrir complètement la fenêtre pour copier les données
Application.ScreenUpdating = False
'rechercher dans tous les sous dossiers la fiche correspondante (fiche ou colis)
With Application.FileSearch
.NewSearch
.LookIn = "C:\Documents and Settings\xxxxxxxx" 'répertoire de recherche
.SearchSubFolders = True 'inclure les sous-dossiers
.Filename = Application.InputBox("Entrez le numéro du colis:", "IMPORT DES DONNEES") 'nom du fichier à ouvrir
.MatchTextExactly = True
.FileType = msoFileTypeExcelWorkbooks 'fichiers de type excel
If .Execute = 0 Then
MsgBox "Aucun colis correspondant." 'Si aucun colis correspondant alors message et sortie
Exit Sub
ElseIf .Execute = 1 Then 'si un colis alors
Workbooks.Open .FoundFiles(1) 'ouvrir la fiche du colis
Else
MsgBox "Vous devez saisir un numéro de colis!" ‘ Message si inputbox non renseigné et sortie
Exit Sub
End If
End With
'copie des données en partant de la fiche recherchée initialement
Sheets("xxxxxxxxx").Select ‘ouverture de la feuille où sont les données à copier
ActiveSheet.Range("A2:W2").Select
Selection.Copy
classeur1 = ActiveWorkbook.Name 'donner un nom au fichier afin de pouvoir le refermer plus tard
‘Dans le fichier déjà ouvert, dans lequel est cette macro (fichier : toto)
Workbooks("toto.xls").Activate
Sheets("blabla").Select ‘feuille blabla
'a partir de la ligne indiquée et vide, coller les données de la fiche
Range("A13").Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Select
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'refermer la fiche ouverte
Workbooks(classeur1).Activate
Workbooks(classeur1).Close
Application.ScreenUpdating = True
End Sub
j'ai adapté le code de façon à pour aller ouvrir un fichier sans avoir le sous répertoire connu (parmi plusieurs sous répertoires existants) et ça fonctionne:
Voici le code
Sub import_Click()
'Ne pas ouvrir complètement la fenêtre pour copier les données
Application.ScreenUpdating = False
'rechercher dans tous les sous dossiers la fiche correspondante (fiche ou colis)
With Application.FileSearch
.NewSearch
.LookIn = "C:\Documents and Settings\xxxxxxxx" 'répertoire de recherche
.SearchSubFolders = True 'inclure les sous-dossiers
.Filename = Application.InputBox("Entrez le numéro du colis:", "IMPORT DES DONNEES") 'nom du fichier à ouvrir
.MatchTextExactly = True
.FileType = msoFileTypeExcelWorkbooks 'fichiers de type excel
If .Execute = 0 Then
MsgBox "Aucun colis correspondant." 'Si aucun colis correspondant alors message et sortie
Exit Sub
ElseIf .Execute = 1 Then 'si un colis alors
Workbooks.Open .FoundFiles(1) 'ouvrir la fiche du colis
Else
MsgBox "Vous devez saisir un numéro de colis!" ‘ Message si inputbox non renseigné et sortie
Exit Sub
End If
End With
'copie des données en partant de la fiche recherchée initialement
Sheets("xxxxxxxxx").Select ‘ouverture de la feuille où sont les données à copier
ActiveSheet.Range("A2:W2").Select
Selection.Copy
classeur1 = ActiveWorkbook.Name 'donner un nom au fichier afin de pouvoir le refermer plus tard
‘Dans le fichier déjà ouvert, dans lequel est cette macro (fichier : toto)
Workbooks("toto.xls").Activate
Sheets("blabla").Select ‘feuille blabla
'a partir de la ligne indiquée et vide, coller les données de la fiche
Range("A13").Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Select
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'refermer la fiche ouverte
Workbooks(classeur1).Activate
Workbooks(classeur1).Close
Application.ScreenUpdating = True
End Sub