Pb lors de la vérification d'un fichier excel "dir"

[Résolu]
Signaler
Messages postés
63
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
22 juin 2011
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonsoir à tous,


J'ai un problème lorsque je veux tester la présence d'un fichier excel, je m'explique :
Je demande à mon code de vérifier la présence d'un fichier excel "MonClasseur" avec la fonction dir :


Si il est inexistant, je le crée sinon je l'ouvre mais on dirai que mon prog reste dans la boucle où le fichier n'existe pas et fait que réécrire par dessus.

Mon problème est que lorsque le fichier est crée, le code ne le voit pas et il en crée un nouveau qui efface sans cesse l'ancien.

Voila mon bout de code qui gère cela :

If Dir("C:\bureau\Copie (6) de Copie de test programme avec 1 entrée\MonClasseur.xls") = "" Then
    MsgBox "le fichier n'existe pas"
    oExcel.Visible = True
    a.Workbooks.Add
    With a.ActiveWorkbook.Worksheets(1)
    End With
    
    LigneVide = oWk.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
    oWk.Sheets(1).Range("A" & LigneVide) = Text2
    Text4 = ("A" & LigneVide)
                                                         
    oExcel.DisplayAlerts = False
    oWk.SaveAs App.Path & "\MonClasseur.xls"
    oWk.Close False
    oExcel.Quit
    Set oWk = Nothing
    Set oExcel = Nothing


    Else    'C'est ici que mon code ne va jamais ?
    MsgBox "le fichier existe"
    oExcel.Visible = True
    Workbooks.Open App.Path & "\MonClasseur.xls"
   
    LigneVide = oWk.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
    Text4 = ("A" & LigneVide)
 
    oExcel.DisplayAlerts = False
      


End If
 
 End If

Je pense avoir oublié ou mal écrit quelque chose
Est-ce que quelqu'un pourrait m'aider svp ?
Merci
Jack.

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Re
C'est surtout chiant le jour où le nom de ton répertoire change : il te faudra le modifier dans tout ton programme !
Solution 1 :
Utiliser App.Path si le répertoire est celui dans lequel se trouve le programme
Solution 2 :
Créer une variable globale à ton projet (définie en Public dans un module) sChemin par exemple et lui attribuer ton chemin biscornu.
Ensuite, dans ton programme, utilise ta variable à la place du chemin "en dur" :
   Workbooks.Open sChemin & "\MonClasseur.xls"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés





<hr />

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Ce qui m'intrigue, c'est que tu testes dans la commande DIR un répertoire écrit de toute pièce, alors que tu génères un nouveau fichier dans App.Path.
Pourquoi ne pas tester App.Path aussi dans le DIR ?
Quand la MsgBox affiche "le fichier n'existe pas" : Que vaut App.Path ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
Jimy

Pensez: Réponse acceptée
'**********************************************
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
ARG! Ce textBox...

Je te proposais donc d'aller voir ce post:

http://www.vbfrance.com/infomsg_ERREUR-APPLICATION_1133209.aspx

Il y a une fonction pour tester l'existance des fichiers en se passant de DIR, elle est actuellement prevu pour les fichiers texte, mais pour ma part je l'ai adapté pour les fichiers Access, et tu pourras donc l'adapter aux fichiers Excel.

Jimy
Messages postés
63
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
22 juin 2011
3
Salut Jack,

Effectivement mon code était mal écrit, j'ai corrigé les erreurs (j'ai écrit le chemin en toute lettre je ne sais pas si c'est grave) et il marche maintenant.
 
Voila ce que j'ai fait :

If Dir("C:\bureau\Copie (6) de Copie de test programme avec 1 entrée\MonClasseur.xls") = "" Then
   
    MsgBox "le fichier n'existe pas"
    oExcel.Visible = True
    a.Workbooks.Add
    With a.ActiveWorkbook.Worksheets(1)
    End With
    Set oWk = oExcel.Workbooks.Add
    oWk.Sheets(1).Range("A1") = Text2
   
Else


    MsgBox "le fichier existe"
    oExcel.Visible = True
    Workbooks.Open "C:\bureau\Copie (6) de Copie de test programme avec 1 entrée\MonClasseur.xls"
    Set oWk = ActiveWorkbook
    LigneVide = oWk.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
    oWk.Sheets(1).Range("A" & LigneVide) = Text2
    Text4 = ("A" & LigneVide)
   
End If
    oWk.SaveAs ("C:\bureau\Copie (6) de Copie de test programme avec 1 entrée\MonClasseur.xls")
    oExcel.DisplayAlerts = False
    oWk.Close False
    oExcel.Quit
    Set oWk = Nothing
    Set oExcel = Nothing
   
   


End If