Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/09/2011, 18h02   #1
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
Par défaut Rechercher et ouvrir un fichier dans un dossier sous condition

Bonjour

Via un code vba je tente de faire une recherche de fichier dans un dossier excel via un inputbox dans lequel on met le nom du fichier recherché. Le code fonctionne pour le cas ou le fichier est présent dans le dossier

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Sub open_file()
 
Dim opened_trade As String
 
opened_trade = InputBox("Entrer la reference recherché")  ‘
 
ChDir "C:\test\dossier1"    ‘définition du chemin d’accès
 
Workbooks.Open Filename:=opened_trade
 
 
End Sub
J’aimerai pouvoir établir une condition qui prend en compte l’éventualité que le fichier n’existe pas, une condition du type

Code :
1
2
3
4
5
IF le fichier existe dans le dossier THEN 
Open le fichier 
ELSE le fichier n’existe pas dans le dossier THEN 
MsgBox ‘’ aucun fichier trouvé ‘’
END IF
Je n’arrive pas à définir cette condition
Comment puis-je faire ?

Merci d’avance
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 18h35   #2
Membre actif
 
Avatar de Duddy
 
Homme Marc
Agent de maitrise
Inscription : novembre 2007
Messages : 243
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Agent de maitrise
Secteur : Service public

Informations forums :
Inscription : novembre 2007
Messages : 243
Points : 186
Points : 186
Bonjour le forum,

J'utilise cette fonction:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
'*******************************************************************************************
'***** Recherche si le fichier existe ******************************************************
'*******************************************************************************************
Public Function FichierExiste(ByVal CheminCompletfichier As String) As Boolean
    FichierExiste = False
    If Dir(CheminCompletfichier, vbHidden) <> "" Then
        FichierExiste = True
    End If
End Function
'---------------------------------------------------------------------------------------------------------------------------------------
'*************************************************************************************************
'---------------------------------------------------------------------------------------------------------------------------------------
Que tu peux utiliser dans ta condition ainsi:
Code :
1
2
3
4
5
IF FichierExiste("C:\....\tonfichier.xlsx") THEN 
Open le fichier 
ELSE
MsgBox ‘’ aucun fichier trouvé ‘’
END IF
__________________
Bon courage à toi.
Duddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 19h41   #3
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Tu peux aussi procéder ainsi :


Code :
1
2
3
4
5
6
 Dim FSO As Object, Fichier As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Fichier = "c:\temp\test.xls"
    If FSO.fileexists(Fichier) = True Then
        Workbooks.Open Fichier
    End If
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 10h48   #4
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
Bonjour

Merci beaucoup pour vos retours respectifs en fait dans le code j’utilise une inputbox pour insérer un fichier recherché
J’ai donc en fonction de vos idées procéder de la manière suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub  test_extfich()
 
 
Dim FSO As Object, Fichier As Variant, j as string
 
    Set FSO = CreateObject("Scripting.FileSystemObject")
 
 j = InputBox("please insert the option reference") ‘utilisation de l’inputbox pour insérer le nom de fichier recherché
 
    Fichier = "C:\test\dossier_test  & " \ " & j & " ‘concaténation de l’extension au fichier inséré dans inputbox ‘’j’’
    If FSO.fileexists(Fichier) = True Then
        Workbooks.Open Fichier
    ElseIf FSO.fileexists(Fichier) = False Then
    MsgBox ("fichier non trouvé ")
    End If
 
 
End Sub
Malheureurement j’ai une erreur 13 au niveau de la ligne

Code :
Fichier = "C:\test\dossier_test  & " \ " & j & "
Est le type de variable déclaré qui pose problème (string) j’ai essayé avec un variant ca donne la même chose ?

Merci pour votre aide
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 11h53   #5
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Et comme ça?

Code :
Fichier = "C:\test\dossier_test  & "\" & j & "
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h10   #6
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
Bonjour

L’erreur type 13 disparaît bien par contre la condition ne fonctionne pas :

Disons que si un fichier j = 2 existe dans le dossier, la msgbox renvoyé par la condition est celle qui stipule que le fichier n’existe pas. J’ai l’impression que la concaténation n’est pas prise en compte ?
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h22   #7
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie :

Code :
Fichier = "C:\test\dossier_test\" & J
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h37   #8
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 256
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 256
Points : 2 979
Points : 2 979
Bonjour,

les doubles quotes sont mal positionnées (il manque " apres test:

Tu écris :
Code :
Fichier = "C:\test\dossier_test  & " \ " & j & "
Je penses que tu devrais écrire :
Code :
Fichier = "C:\test\dossier_test\ " & j
car & " après j est également étrange. (il manque la double quote de fermetture.

un string est délimité de part et d'autres par "
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h08   #9
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
Bonjour

Merci pour vos retours, malheureusement j'ai toujours la condition relative à la non existence du fichier quand celui est pourtant existant.

C’est bizarre… j’ai crée un fichier ‘’TESTMAC’’ dans le chemin Fichier et lorsque je rentre en ’’dur’’ :

Code :
Fichier = "C:\test\dossier_test\TESTMAC"
La condition relative à la non existence est encore renvoyé, voici le code complet :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub open_trade2()
 
 
Dim FSO As Object, Fichier As String
 
    Set FSO = CreateObject("Scripting.FileSystemObject")
 
 
     Fichier = "C:\test\dossier_test\TESTMAC"
 
    If FSO.fileexists(Fichier) = True Then
        Workbooks.Open Fichier
    ElseIf FSO.fileexists(Fichier) = False Then
    MsgBox ("fichier non trouvé")
    End If
 
End sub
...
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h13   #10
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Heu, il n'a pas d'extension, ton fichier ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h23   #11
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
Si si, le nom du dossier est ‘’dossier_test’’ qui comprend une extension à plusieurs fichiers dont fait partie TESTMAC, j’ai juste testé ce chemin direct vers le fichier TESTMAC pour savoir si la concaténation utilisée était en cause, normalement étant donné que je mets un chemin « direct » sur un fichier existant la macro ne devrait pas me renvoyé un statut non existant (false) non ?
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h31   #12
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
J'aurais dû être plus précis; ton fichier s'appelle bien "TESTMAC", pas "TESTMAC.xls" ou une autre extension ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h39   #13
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
le fichier s'appelle bien TESTMAC
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h46   #14
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 256
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 256
Points : 2 979
Points : 2 979
Citation:
Envoyé par Daniel.C Voir le message
Désolé, il fallait lire "il n'a pas d'extension, ton fichier ?"
Salut Daniel.C,

j'ai moi aussi l'impression d'après les réponses de Volubiliss qu'il y a de sa part une mauvaise compréhension de son code.

J'en veux pour preuve ce ligne extraite de son code et surtout le commentaire.

Code :
Fichier = "C:\test\dossier_test  & " \ " & j & " ‘concaténation de l’extension au fichier inséré dans inputbox ‘’j’’
Il n'y a ici concatenation d'aucune extension mais du contenu d'une variable sensée contenir un nom de fichier complet (contenu qui n'est d'ailleurs par vérifié).

Volubiliss, je pense que tu devrais consacrer un peu de temps à lire les tutos de base de la programmation en vba car tu ne comprends pas ce que tu fais.

------------Edit---------
Nouvelle confirmation par Volubiliss lui-même:
Citation:
le fichier s'appelle bien TESTMAC
Et bien alors Volubiliss,
le code ci-dessous n'est pas prêt de marcher.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h53   #15
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
J'ai recréé ton environnement, mêmes fichier et dossiers. La macro ouvre bien le classeur, ici. Quelle version d'Excel as-tu ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h59   #16
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
Je concède que je ne suis pas un pro de vba mais de là dire que je ne comprends pas ce que je fais, c’est un peu dure quand même
J’ai des fichiers identifiés de 1 à 100 inclus dans un dossier nommé X que j’interroge via un inputbox comment composer la recherche dans la dénomination du chemin Fichier ? Ou comment dois-e construire le code si je suis totalement dans le faux ?

Merci

ma version excel est la 2003
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h24   #17
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Ne le prends pas mal, on ne peut pas connaître le niveau de celui qui pose la question.
Essaie d'exécuter cette macro :


Code :
1
2
3
Sub test2()
msgbox = Dir("C:\test\dossier_test\TESTMAC")
End Sub
Qu'est-ce que tu obtiens ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h30   #18
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu!....

bonjour

il faut preciser l'extention
un exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub truc()
    Dim nomfichier As String
    'on appelle le inputbox pour taper le titre recherché
    nomfichier = Application.InputBox("Enter a nom de fichier")
    'une fois cliquer sur ok ou annuler  on sort de la sub
    If nomfichier = "" Then Exit Sub
    'sinon!!!
    fichier = "C:\test\dossier_test\" & nomfichier & ".xls"   'ou autre extention
    'on teste si le fichier existe
    If Dir(fichier) <> "" Then
        'si il existe alors
        Workbooks.Open fichier
        'si il n'existe pas alors
    Else
        MsgBox "le fichier est introuvable"
    End If
End Sub
au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/09/2011, 15h32   #19
Futur Membre du Club
 
BRAHIM TAHIRI
Inscription : juin 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : BRAHIM TAHIRI

Informations forums :
Inscription : juin 2010
Messages : 51
Points : 16
Points : 16
non je le prend pas mal, je suis tout à fais conscient de mon niveau très très sommaire en vba !
j'ai lancé le test2 j'ai un message d'erreur :

Citation:
Un appel de fonction dans la partie gauche de l'affectation doit renvoyer une valeur de type Variant ou Object.
Merci pour ton aide
volubiliss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h40   #20
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

L'extension n'est pas obligatoire, même si pratiquement on en met à tous les fichiers, ne serait-ce que pour ouvrir un classeur depuis l'explorer.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h24.


 
 
 
 
Partenaires

Hébergement Web