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

Résolu
cs_Jacky7 Messages postés 63 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 22 juin 2011 - 19 mai 2008 à 22:49
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 mai 2008 à 16:30
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

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 mai 2008 à 16:30
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)
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 mai 2008 à 03:00
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)
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
20 mai 2008 à 08:32
Jimy

Pensez: Réponse acceptée
'**********************************************
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
20 mai 2008 à 08:37
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jacky7 Messages postés 63 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 22 juin 2011 3
20 mai 2008 à 16:12
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
0