Création classeur vba

Résolu
Sorus -  
Polux31 Messages postés 7219 Statut Membre -
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

9 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  4. Sorus
     
    J'ai pris le code de bidouilleu et sa marche niquel,
    merci pour vos réponses.
    a+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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
      1. Bidouilleu_R Messages postés 1209 Statut Membre 296 > Polux31 Messages postés 7219 Statut Membre
         
        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
      2. Polux31 Messages postés 7219 Statut Membre 1 204 > Bidouilleu_R Messages postés 1209 Statut Membre
         
        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
  7. Sorus
     
    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
  8. Anonyme
     
    Ok merci je ne pensais pas qu'il fallait le chemin complet et l'extension,
    projet contient une chaine de caractere.
    Merci
    A+
    0
  9. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  10. Anonyme
     
    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