IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Vérifier l'existence d'un dossier, pouvez-vous trouver l'erreur dans mon code ?


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 57
    Points : 39
    Points
    39
    Par défaut Vérifier l'existence d'un dossier, pouvez-vous trouver l'erreur dans mon code ?
    Bonjour,

    je débute en vba ce qui explique que je sèche actuellement.

    J'ai sur un formulaire les éléments suivants :
    AutoDossier : textbox qui affiche un formatage pour un nom de dossier en reprenant les valeurs de 3 champs (ClienteID, NomC et Prenom)
    Dossier : champs recevant la valeur générée dans le textbox précédent après le click sur le bouton cmdCreatDossier (code sur click ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cmdCreatDossier_Click()
    Dim MyDossier
    MyDossier = "c:\temp\ID_" & Me.ClienteID & "_" & Me.NomC & "_" & Me.Prenom
    If Dir(MyDossier) <> "" Then
    Me![Dossier] = Me![AutoDossier]
    Else
     MkDir MyDossier
     Me![Dossier] = Me![AutoDossier]
     End If
    End Sub
    J'arrive sans problème à générer le formatage du dossier (AutoDossier) et je peux créer le dossier sur le disque dur. Par contre, si le dossier existe déjà, j'ai une erreur 75, le dossier existe déjà sur c'est bien cool mais la ligne If Dir... doit justement vérifier l'existence de ce dossier.
    S'il existe il doit juste copier la valeur du formatage dans Dossier (Me![Dossier] = Me![AutoDossier])

    bref ca ne marche pas.

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Bonjour
    voilà comment je fais pour sauvegarder une dorsale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Dim fso As Object
        Dim strCurrent, strDest As String
        Dim strChemin As String
     
        strChemin = CurrentProject.path & "\Sauvegarde"
        If Len(Dir(strChemin, vbDirectory)) = 0 Then
     
            Dim Msg, Style, Title, Response, MyString
            Msg = "Le répertoire SAUVEGARDE n'existe pas !" _
            & vbCrLf & "Voulez-vour le créer ?"
            ' Définit le message.
            Style = vbYesNo + vbQuestion + vbDefaultButton2          ' Définit les boutons.
            Title = "Sauvegarde"    ' Définit le titre.
     
                    ' Affiche le message.
                    Response = MsgBox(Msg, Style, Title, Help, Ctxt)
                    If Response = vbYes Then    ' L'utilisateur a choisi Oui.
                        MkDir strChemin
                    Else    ' L'utilisateur a choisi Non.
                        Exit Function
                    End If
     
        End If
     
     
     
     
        Set fso = CreateObject("Scripting.FileSystemObject")
     
        strCurrent = DLookup("[Chemin de la base source]", "CHEMIN")
     
        strDest = strChemin & "\test_data " & Format(Now, "yyyy mm dd hh nn ss") & ".mdb"
     
        fso.CopyFile strCurrent, strDest
     
        Set fso = Nothing
     
     
        MsgBox "Sauvegarde effectuée dans le répertoire :" _
        & vbCrLf & strChemin, vbInformation + vbOKOnly, "Sauvegarde."
     
    End Function

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Ceci n'est pas trés académique, mais il ne manquait pas grand chose pour une bonne fin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cmdCreatDossier_Click()
    Dim MyDossier
    MyDossier = "c:\temp\ID_" & Me.ClienteID & "_" & Me.NomC & "_" & Me.Prenom
    If Dir(MyDossier, vbDirectory) <> "" Then
    Me![Dossier] = Me![AutoDossier]
    Else
     MkDir MyDossier
     Me![Dossier] = Me![AutoDossier]
     End If
    End Sub
    Un peu plus habituel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub cmdtest_Click()
    On Error Resume Next
     Dim strDossier As String
      strDossier = "c:\temp\ID_" & Me.ClienteID & "_" & Me.NomC & "_" & Me.Prenom
        'Créer un répertoire dans le dossier "c:\temp"
        'On vérifie au préalable si le dossier existe déjà
       If Dir(strDossier, vbDirectory) <> "" Then
         MsgBox "Le dossier " & strDossier & " existe déjà"
        'Me![Dossier] = Me![AutoDossier]
         'Ceci nous donne juste le N° d'enregistrement
         'Il est concevable quelque chose de plus "parlant"
         Me.Dossier = Me.AutoDossier & " " & Me.AutoDossier.Column(1) & _
         " " & Me.AutoDossier.Column(2)
        Exit Sub
       End If
      MkDir strDossier
     Me.Dossier = Me.AutoDossier & " " & Me.AutoDossier.Column(1) & _
     " " & Me.AutoDossier.Column(2)
    End Sub
    Il faut être certain que ta liste déroulante correspond à l'enregistrement de ton formulaire.
    Pour ceci cette liste se trouve dans l'en tête de ton formulaire. Aprés mise à jour de cette denière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub AutoDossier_AfterUpdate()
    ' Rechercher l'enregistrement correspondant au contrôle.
        Dim rs As Object
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[ClienteID] = " & Str(Nz(Me![AutoDossier], 0))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub
    Cordialement.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    Merci pour vos réponses

    effectivement je n'étais pas loin, maintenant ca marche nickel

    La version "Un peu plus habituel" du code est un peu plus compliquée pour moi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. vérifier l'existence d'un dossier
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/07/2009, 18h32
  2. Vérifier l'existence d'un dossier dans Inbox
    Par krhyme dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 24/04/2008, 01h07
  3. Réponses: 6
    Dernier message: 08/06/2007, 11h38
  4. Réponses: 22
    Dernier message: 28/01/2007, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo