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

Access Discussion :

Récupérer tous les enregistrements et créer un dossier pur chacun d'eux


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Récupérer tous les enregistrements et créer un dossier pur chacun d'eux
    Bonsoir.
    J'ai un formulaire nommé "Elèves", avec un champ "NOM" et un champ "Prénom" ... entre autre.
    Je souhaiterais récupérer, un par un, tous les noms et prénoms de ce formulaire, et créer un dossier nommé "NOM_Prénom".

    J'ai fait une fois de plus un bidouillage, qui marche, mais qui m'a généré quelques erreurs. Et je pense qu'il a certainement une meilleure alternative.

    J'ai deux erreurs :
    • le compteur se bloque à un moment donné, j'ai donc fait une gestion d'erreur pour sortir de la Boucle. Alternative qui marche ... mais pas très satisfaisante
    • et quand les nom sont composés d'espace, style VAN DE BROOK Laurent ... cela ne me crée pas le dossier VAN DE BROOK_Laurent, mais VAN => Mkdir ne gère pas les espaces (d'où la présence du tiret bas d'ailleurs entre le nom et le prénom).


    Voici mon code et quelle alternative pourrait être envisagée ?
    Merci par avance. Bonne soirée.

    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
     
    Sub CreerTousLesDossiersEleves()
    Dim Chemin, Commande, NomPrenomDossier  As String
    Dim nbEnregistrement As Integer
     
    nbEnregistrement = DCount("*", "Eleves") - 1
    MsgBox nbEnregistrement
    DoCmd.GoToRecord , , acFirst
    'MsgBox nb
     
    'Crée d'un seul coup tous les répertoires
    For i = 1 To nbEnregistrement
    NomPrenomDossier = Nom.Value & "_" & Prénom.Value
    Chemin = Application.CurrentProject.Path & "\" & AnneeScolaire & "\" & "ESS" & "\" & NomPrenomDossier
    On Error GoTo GestionErreur
    DoCmd.GoToRecord , , acNext
     
    Commande = Environ("comspec") & " /c mkdir " & Chemin
    Shell Commande, 0
    Next i
     
    GestionErreur:
    DoCmd.GoToRecord , , acFirst
    On Error Resume Next
     
    End Sub

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 871
    Points : 3 451
    Points
    3 451
    Par défaut
    Bonjour Zutalor,

    Voici un code plus simple et qui tient en compte les espaces. Il va parcourir la table qui contient les informations que tu désires et ensuite créer le répertoire dans celui de l'application.
    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
    Private Sub mkD()
    On Error GoTo GestionErreurs
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rst As DAO.Recordset
        Dim strDossier As String, strSQL As String, strRep As String
     
        strSQL = "SELECT TaTable.* FROM TaTable;" 'En choisissant la table désirée
        strRep = CurrentProject.Path
        Set rst = db.OpenRecordset(strSQL)
        While rst.EOF = False
            strDossier = "\" & rst("LeNomDuChampNom") & " " & rst("LeNomDuChampPrénom") 'Ici ce sont les deux champs qui contiennent les informations nom et prénom
            MkDir strRep & strDossier
            rst.MoveNext
        Wend
        rst.Close
        Set rst = Nothing
        Set db = Nothing
     
    Exit Sub
    GestionErreurs:
        Select Case Err.Number
            Case 75 'le dossier existe déjà
            Resume Next
        Case Else
            MsgBox "Erreur dans fuCopierFichier" & " " & Err.Number & " " & Err.Description
            Exit Sub
        End Select
    End Sub
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bnjr Robert.

    Effectivement, cela marche beaucoup mieux.
    Par contre, une dernière question : je souhaite enregistrer le document dans le chemin suivant :

    Répertoire Courant (currrentProject.Path)/2014-2015/ESS/

    Comment puis je créer au préalable ce dossier précis ? Car pour que ça fonctionne, il faut que je le crée manuellement. Je souhaiterais le créer en VBA, svp.

    Merci bcp en tout cas.

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 871
    Points : 3 451
    Points
    3 451
    Par défaut
    Bonjour Zutalor,

    Remplace la ligne 8 par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strRep = CurrentProject.Path & "\2014-2015"
    puis ajoute à la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MkDir strRep
    strRep = strRep & "\ESS"
    MkDir strRep
    et finalement le reste du code.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Faut vraiment être bête. La solution était si simple !
    Ca fonctionne à merveille, sans erreur et bien plus rapidement.
    Merci encore.
    Excellente fin de soirée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/03/2012, 15h16
  2. Récupérer tous les enregistrements avec SQLite
    Par 304bl dans le forum Android
    Réponses: 4
    Dernier message: 04/02/2012, 12h52
  3. [WD-2003] Ouvrir tous les fichiers word d'un dossier et les enregistrer sous .html
    Par pierre008 dans le forum VBA Word
    Réponses: 3
    Dernier message: 22/06/2010, 11h02
  4. Réponses: 1
    Dernier message: 12/09/2007, 11h42
  5. Réponses: 4
    Dernier message: 16/08/2007, 14h33

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