Création classeur vba

Résolu/Fermé
Sorus - 23 sept. 2009 à 09:03
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 23 sept. 2009 à 12:21
Bonjour,

J'aimerais créer un nouveau classeur uniquement si celui ci n'existe pas, le probleme est que je ne sais pas comment tester si le fichier existe car je suppose qu'un simple test sur le fichier ne renverra pas vrai ou faux mais qu'il y'a une fonction spécifique pour ceci..

merci
A voir également:

9 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
23 sept. 2009 à 09:28
Tiens un cadeau...


Sub test()
chemin = "C:\DATA\"
fichier = "essai.txt"

If isFileExist(chemin + fichier) Then
'existe
'fais ce que tu veux...
Else
'n'existe pas
'
End If
End Sub


' voici la fonction de test
' le principe ...essayer de lire un fichier s'il provoque l'erreur 53 --> pas de fichier

Function isFileExist(filename As String)
Dim NumFichier As Integer, Errnum As Integer
Err.Clear
On Error Resume Next
NumFichier = FreeFile()
Open filename For Input Lock Read As #NumFichier
Close NumFichier
Errnum = Err
On Error GoTo 0
Select Case Errnum
Case 0
isFileExist = True
Case 53
isFileExist = False

End Select

End Function


A+
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 sept. 2009 à 10:38
Bonjour,

Une autre astuce :

Public Function isFileExist(ByVal pFullPathFile As String) As Boolean

    If Dir(pFullPathFile, vbHidden) <> "" Then
        isFileExist= True
    Else
        isFileExist= False
    End If
    
End Function


;o)
1
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
23 sept. 2009 à 11:01
ActiveWorkbook.SaveAs "Synthese " & Projet

je ne sais pas ce qu'il y a dans Projet mais ....

voici la syntaxe
Chemin doit contenir quelque chose comme "C:\Data\" ...par exemple
et nom_fichier doit contenir "lenomdufichier.xls"

ce qui donne
Dim Chemin as sting
Chemin="C:\Data"

ActiveWorkbook.SaveAs Chemin & "\Synthese " & Projet & ".xls"
1
J'ai pris le code de bidouilleu et sa marche niquel,
merci pour vos réponses.
a+
0

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

Posez votre question
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
23 sept. 2009 à 10:45
Ok! Polux31...
je te l'accorde la tienne est mieux présentée, plus courte, plus simple ... et ça marche c'est donc meilleur!

mais la mienne marche aussi... je sais plus pourquoi j'avais écris ce truc là.
Je t'accorde un bon point et mission accomplie.

reste plus qu'à avoir merci et résolu .
A+
R
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 sept. 2009 à 11:22
Re,

Je n'ai présenté ça que comme une autre astuce, qui est d'utiliser la fonction Dir() et vbHidden.
En aucun cas je n'ai remis en cause ta proposition.

;o)
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289 > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
23 sept. 2009 à 11:29
ne t'inquiète ... aucune offense de ma part plutôt un grand respect..

même entre les lignes du VBA j'arrive à voir qui sait et qui apprend.

Toi tu sais.

Je préfère te compter parmi mes "hepeurs" préférés.

ca marche?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012
23 sept. 2009 à 12:21
Oula ... je n'apportais qu'une précision ... je ne suis nullement froissé. T'inquiète, ça marche pas, ça court pour moi ^^

Il faut partir du principe que l'on ne sait rien ou que l'on sait peu de chose. Celui qui détient le savoir, n'est pas de ce monde ou appartient aux illuminés divins ... et moi, je suis de ce monde et ne prétends pas appartenir à la seconde catégorie .. ^^

Comme je l'ai déjà dit, pour un problème, il n'y a pas de solution meilleure qu'une autre, il y a une solution ou des solutions pertinentes, tant que le résultat attendu est correct.

Bon app. @+

;o)
0
Juste une autre question,
j'aimerais ainsi renommer le fichier s'il existe, voici mon code

ActiveWorkbook.SaveAs "Synthese " & Projet


Mais sa me dit juste que le fichier existe déjà et si je veux l'enregistrer, or il n'existe pas et quand je l'enregistre impossible de le trouver..
0
Ok merci je ne pensais pas qu'il fallait le chemin complet et l'extension,
projet contient une chaine de caractere.
Merci
A+
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
23 sept. 2009 à 11:12
Note aussi que du fait que tu as enregistré ton classeur

il doit y avoir un fichier excel sans extension quelque pat sur ton disque dur.
en fait

il se trouve à thisworkbook.path

tu peux aussi le retrouver avec l'explorateur windows.... je dis ça car dans 6 mois tu te demanderas à quoi il sert ce fichier

;)
0
Oui c'est ce que j'ai fait j'me suis servi du path pour le retrouver et le virer xD
Merci pour vos réponses
0