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 :

Problème d'un Code VBA pour créer un répertoire


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut Problème d'un Code VBA pour créer un répertoire
    Bonjour,

    J'ai un formulaire avec lequel je peux créer des répertoires en appuyant. Le chemin des répertoires est dans un autre formulaire "Paramétres" .
    J'ai un problème avec mon code VBA concernant le chemin des répertoires.
    Il me classe les répertoires dans un chemin quelconque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MkDir "Chemin.Value" & Numéro.Value & " - " & NAffaire.Value
    Formulaire "Créer une Affaire"

    Formulaire "Paramètre"


    Merci d'avance

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Salut,
    Tout d'abord il faudrait que tu nous montre ton code parce qu'on peut pas te dire où il y a une erreur si tu nous le montre pas.
    C'est quoi exactement ta question ?
    Et qu'est ce que tu veux faire exactement ?
    Voilà avec ces informations déjà ce sera plus facile de t'aider...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Voilà le code complet:
    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
        If Dir("Chemin.Value" & Numéro.Value & " - " & NAffaire.Value,
    vbDirectory) > "" Then
              MsgBox ("Cette Affaire existe déjà")
        Else
            MkDir "Chemin.Value" & Numéro.Value & " - " & NAffaire.Value
            MkDir "Chemin.Value" & Numéro.Value & " - " & NAffaire.Value & "\ESQ"
            MkDir "Chemin.Value" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Secrétariat"
            MkDir "Chemin.value" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Autocad"
           End If
     
    On Error GoTo Err_Créer_Click
     
        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "AFFAIRE"
        DoCmd.Close
        DoCmd.OpenForm stDocName, , , stLinkCriteria
     
    Exit_Créer_Click:
        Exit Sub
     
    Err_Créer_Click:
        MsgBox Err.Description
        Resume Exit_Créer_Click
     
    End Sub
    "Chemin.value", c'est censé etre le chemin dans lequel sera stocké les répertoires.Le problème, c'est qu'il stock les répertoires dans "E:\Mes documents", ce qui n'est pas le chemin mis dans le formulaire "Parametre"
    Est ce que quelqu'un pourrai m'aidé à corriger ce code?
    Merci d'avance.

  4. #4
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Est-ce que tu es sûr que la valeur de la chaîne de caractère "chemin" se termine par le caractère "\"?

    si non, ton tu devra modifier les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MkDir "Chemin.Value" & Numéro.Value & " - " & NAffaire.Value
    MkDir "Chemin.Value" & Numéro.Value & " - " & NAffaire.Value & "\ESQ"
    MkDir "Chemin.Value" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Secrétariat"
    MkDir "Chemin.value" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Autocad"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MkDir "Chemin.Value" & "\" & Numéro.Value & " - " & NAffaire.Value
    MkDir "Chemin.Value" & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ"
    MkDir "Chemin.Value" & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Secrétariat"
    MkDir "Chemin.value" & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Autocad"
    Je lance la piste!!!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Ca ne marche toujours pas. J'avais deja penssé à mettre le \ dans le formulaire "Parametre" mais c'était sans succés. Idem en le mettant dans le code VBA.
    Je pense que c'est le ".Value" dans "Chemin.value " qui ne va pas.

  6. #6
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    Oups .... j'ai pas été vite sur ce coup là ...

    Mais enlève les guillemets qui encadre "chemin.value" ...

    c'est fort probablement le problème ...
    simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MkDir Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value
    MkDir Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ"
    MkDir Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Secrétariat"
    MkDir Chemin.value & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Autocad"
    Et à mon avis, ca devrait fonctionner...


  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Toujours pas,cette fois il ne me créer rien.
    Par contre j'ai essayé de créer une zone de liste de la Table "Paramètre" dans le Formulaire "Créer une affaire", il me créer les répertoires mais dans le chemin "E:\" .
    En elevant " & "\" " dans ke code,il me les crée dans " E:\Mes document". Et le pire c'est que meme si je ne met aucun chemin dans le Formulaire "Parametre", il créer les répertoires.
    Je ne comprends plus rien.

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonsoir,

    Ton problème vient de la façon dont tu récupères le chemin de ton répertoire...

    Tout d'abord, dans ton code, pendant le temps du débogage, mets une msgbox qui affiche le paramètre (le nom de ton chemin).

    Ensuite, si ton formulaire est affiché à l'écran (ce qui ne me semble pas une bonne idée), tu peux effectivement passer ton chemin en variable, avec Me.Chemin, etc... Mais ce n'est pas la solution vraiment adéquate...

    L'idée de la table paramètre est très bonne

    Le formulaire basé sur cette table pour modifier le chemin aussi

    Maintenant, pour récupérer le chemin en variable, intéresse toi à la fonction DLookup... C'est à dire que tu vas aller rechercher directement la valeur dont tu as besoin dans la table Paramètres, sans passer par le formulaire.

    Regarde dans l'aide et fais des recherches sur le forum, les exemples sont très nombreux.

    Courage, tu tiens le bon bout

    Domi2

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Je pense que je suis au bout, mais la corde est coupée.
    J'arrive pas.Est ce que quelqu'un pourrai me donner un début du code ?
    Merci d'avance.

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Un début de code?

    Voilà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim strDirPath As String
    strDirPath = Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value
    MsgBox strDirPath
    Il faudrait arrêter de coder "au petit bonheur la chance".
    Quand quelque chose ne fonctionne pas comme on voudrait, on en analyse les causes possibles.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Ca ne marche toujours pas.
    Voici le code :
    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
        Dim varX As Variant
        varX = DLookup("[Chemin]", "PARAMETRE")
     
        Dim strDirPath As String
        strDirPath = "Chemin.value"
        MsgBox strDirPath
     
        If Dir(Numéro.Value & " - " & NAffaire.Value, vbDirectory) > "" Then
            MsgBox ("Cette Affaire existe déjà")
        Else
        MkDir Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value
        MkDir Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ"
        MkDir Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Secrétariat"
        MkDir Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Autocad"
     
           End If
    Tout d'abord, il me met "Chemin.value" comme chemin. Ensuite, il faut que j'enlève " & "\" " pour qu'il crée les répertoires et enfin, il crée les répertoires dans "C:\Documents and Settings\X\Mes documents", ce qui n'est pas le chemin indiqué dans le formulaire "Parametre".
    Je n'y arrive vraiment pas. Est ce que quelqu'un peut m'aider svp ?
    J'en ai vraiment besoin pour avancer dans mon projet.

    Merci d'avance.

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par AlainTech
    Il faudrait arrêter de coder "au petit bonheur la chance".
    Je te donne un code et tu le modifies...

    Qu'affiche le code que je t'ai donné?

    A quoi te sers varX?

    D'où vient Numéro.Value?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    1ere erreur: "Erreur d'éxecution '424' " , Objet requis
    Je ressaye en mettant chemin.value entre guillemets.



    "varX", c'était simplement pour tester la fonction DloockUp mais ca ne marche pas pour l'instant.
    Numéro.value, c'est le Numéro de l'affaire qu'il va récuperer dans le formulaire.
    Les répertoires vont se nommé par exemple : 898 - JPD ; Le numéro de l'affaire suivie du nom de l'affaire.

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par cfidko
    1ere erreur: "Erreur d'éxecution '424' " , Objet requis
    Je ressaye en mettant chemin.value entre guillemets.
    C'est exactement ça que j'appelle programmer au petit bonheur la chance!
    Si tu mets des guillemets, tu vas obtenir la chaîne de caractères "Chemin.Value".
    C'est ce qu'on voit dans le MsgBox.
    Le message d'erreur n'est pas là pour essayer de le contourner mais pour dire où se situe l'erreur.
    Dans ton cas, il dit qu'il ne connait pas l'objet Chemin.

    Et ça me paraît logique car tu ne dis pas à quel Form ce contrôle appartient.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    J'ai trouver le code pour atteindre le controle d'un autre formulaire mais j'arrive pas à récuperer le récuperer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![PARAMETRE]![MaZoneDeText]

  16. #16
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si tu nous donnais le vrai code que tu utilises, tu ne penses pas qu'on s'en sortirait mieux?

    Ta zone de texte ne s'appelle-elle pas chemin?

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Voici le code en entier :

    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
    Private Sub Créer_Click()
     
        Chemin.Value = Forms![PARAMETRE]![Chemin]
        Dim strDirPath As String
        strDirPath = Chemin.Value & "\" & Numéro.Value & " - " & NAffaire.Value
        MsgBox strDirPath
     
        If Dir(Chemin.Value & Numéro.Value & " - " & NAffaire.Value, vbDirectory) > "" Then
            MsgBox ("Cette Affaire existe déjà")
        Else
            MkDir Chemin.Value & Numéro.Value & " - " & NAffaire.Value
        End If
     
            MkDir Chemin.Value & Numéro.Value & " - " & NAffaire.Value & "\ESQ"
     
            MkDir Chemin.Value & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Secrétariat"
     
            MkDir Chemin.Value & Numéro.Value & " - " & NAffaire.Value & "\ESQ\Autocad"
     
    On Error GoTo Err_Créer_Click
     
        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "AFFAIRE"
        DoCmd.Close
        DoCmd.OpenForm stDocName, , , stLinkCriteria
     
    Exit_Créer_Click:
        Exit Sub
     
    Err_Créer_Click:
        MsgBox Err.Description
        Resume Exit_Créer_Click
     
    End Sub
    Il me met un erreur :



    La zone texte s'appelle effectivement Chemin.

  18. #18
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Vu l'erreur :
    Ton formulaire se nomme bien PARAMETRE ?
    Est-il toujours bien ouvert quand la procédure Créer_Click() est appellée ?

    Si la procédure Créer_Click() se trouve dans le formulaire PARAMETRE tu peux simplifier l'écriture du code par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Créer_Click()
     
        Chemin.Value = Me.Chemin 
    ....

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Points : 31
    Points
    31
    Par défaut
    Ouais il s'appel toujours PARAMETRE.
    Non, il n'est pas ouvert quand la procédure Créer_Click() est appellée et il ne doit pas etre ouvert.
    la procédure Créer_Click() ne se trouve pas dans le formulaire "PARAMETRE "mais dans le formulaire "Créer une nouvelle Affaire".

  20. #20
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Si tu veux lire le contenu d'un champ d'un formulaire, y faut que celui-ci soit ouvert, obligé, sinon faut trouver une autre soluce....
    - Passer le chemin dans le formulaire "Créer une nouvelle Affaire" avant que le formulaire PARAMETRE ne se ferme
    - En variable Global (à éviter à mon avis...)
    - Laisser le formulaire PARAMETRE ouvert

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Code vba pour créer des éléments de formulaires
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2014, 09h00
  2. [XL-2010] Problème de compréhension de code VBA pour application
    Par twenty29 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/07/2013, 07h56
  3. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  4. [XL-2007] problème dans un code VBA pour determiner le nombre de valeur
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/05/2011, 19h50
  5. Réponses: 3
    Dernier message: 06/09/2005, 10h27

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