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 :

Renommage de fichiers dans un répertoire depuis une table Access


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Renommage de fichiers dans un répertoire depuis une table Access
    Bonjour

    J'aimerais renommer des fichiers pdf qu'une boucle Access me génère,
    Je n'arrive pas à nommer directement les fichier avec le bon nom de pays, il me sort le fichier avec l'idpays, ce n'est pas très pratique pour retrouver un pays parmis les 180 fichiers.
    du coup, le fichier s'appelle Fiche_156 (par exemple au lieu de Fiche_France)

    Quelqu'un aurait une fonction qui me permettrait de comparer le nom du fichier dans le répertoire avec celui stocké dans ma table et renommer ce fichier avec le nouveau nom correspondant à l'idpays qui est stocké ?

    Ma table est composée :
    Pays | idpays | Source | AncienNom | NomFichierPDF (pour le nouveau nom)
    France | 156 | RSA |FICHE_156 | FICHE_France
    Nom : 2024-03-21 09_49_39-Window.jpg
Affichages : 81
Taille : 14,4 Ko

    Le répertoire est C:\Users\Public\Documents (en local)
    Nom : 2024-03-21 09_49_09-Window.jpg
Affichages : 73
Taille : 10,1 Ko


    Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 263
    Points : 19 428
    Points
    19 428
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Vous pouvez consulter ce lien :

    https://www.developpez.net/forums/d2...er-fonctionne/

    mais il faut aussi parcourir un recordset pour récupérer le nom de chaque fiche.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci pour la réponse mais çà n'est pas vraiment le fonctionnement que je souhaite.
    Mon idée est de lire le nom existant et de le renommer d’après la correspondance que j'ai déclaré dans la table Access.

    L'exemple que vous me donnez ne fait que supprimer les parenthèses du nom du fichier photo.. pas de lien avec la lecture d'une table etc..
    Je ne suis pas DEV VBA, je ne maîtrise pas assez pour en déduire un fonctionnement sur lequel me baser.

    Merci de votre aide, si vous avez d'autre infos

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Je n'arrive pas à nommer directement les fichier avec le bon nom de pays, il me sort le fichier avec l'idpays
    ne serait-ce pas plus simple de modifier le code ? peux-tu le poster ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 263
    Points : 19 428
    Points
    19 428
    Billets dans le blog
    63
    Par défaut
    je constate que vous n'avez pas passé beaucoup de temps pour étudier mes propositions.

    C'est dommage..

    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
    Dim dossier As string
    Dim rst As DAO.recordset
     
    dossier = "C:\Users\Public\Documents (en local)\"
     
    set rst = currentdb.openrecordset("Tab_IdPays")
     
    do until rst.eof
        ancienNom = dossier & rst!AncienNom
        nouveauNom = dossier & rst!NomFichierPdf
     
        Name ancienNom As nouveauNom
     
        rst.movenext
    Loop
     
    rst.close
    set rst = Nothing
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    ne serait-ce pas plus simple de modifier le code ? peux-tu le poster ?
    '-------------
    Voici le code actuel qui génère les pdf avec le nommage sur l'idpays, ce serait plus simple sans doute quand on sait le faire lol pour moi c'est un peu compliqué

    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
    Private Sub IMPRIME_FULL_Click()
    Dim rst As DAO.Recordset
     
    Set rst = Me.RecordsetClone  'cet objet est propre au form et report
    rst.MoveFirst
    While Not rst.EOF
        'imprimePdf rst.Fields("idpays").Value 'je passe la valeur de la clef unique à la procédure
         imprimePdf rst.Fields("idpays").Value
        rst.MoveNext
    Wend
    Set rst = Nothing 'parce que quand on ouvre qq chose on le libère
    End Sub
     
    Private Sub imprimePdf(idpays As Long)
     
    'Enregistre les modifs qu'il pourrait y avoir avant de générer la fiche
    Refresh
    ' Permet d'ouvrir l'état de la fiche Pays en cours pour édition en Pdf
    ' ICI  "idpays=" idpays on passe la valeur pour que le report n'affiche que ce pays.
    'DoCmd.OpenReport "Fiche Pays HLV en masse", acViewReport, , "idpays=" & idpays, acWindowNormal
    DoCmd.OpenReport "Fiche Pays HLV en masse", acViewReport, , "idPays=" & idpays, acWindowNormal
    'CheminPDF = définit où sont stockés les fiches PDF en local pour être rapide à la génération
    CheminPDF = "C:\Users\Public\Documents"
    'NomPDF = définit le nommage du fichier PDF qu'on génére FICHE_ + le pays et l'extention .pdf
    NomPDF = "FICHE_" & idpays & ".pdf"
    'Ouvre l'Etat et génère la Fiche pdf et referme l'état, le fichier est enregistré directement dans le répertoire CheminPDF
    DoCmd.OutputTo acOutputReport, , "PDF", CheminPDF & NomPDF, False, "", , acExportQualityPrint
    DoCmd.Close acReport, "Fiche Pays HLV en masse"
    '-------------------------------------
     
    End Sub

  7. #7
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par User Voir le message
    je constate que vous n'avez pas passé beaucoup de temps pour étudier mes propositions.

    C'est dommage..

    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
    Dim dossier As string
    Dim rst As DAO.recordset
     
    dossier = "C:\Users\Public\Documents (en local)\"
     
    set rst = currentdb.openrecordset("Tab_IdPays")
     
    do until rst.eof
        ancienNom = dossier & rst!AncienNom
        nouveauNom = dossier & rst!NomFichierPdf
     
        Name ancienNom As nouveauNom
     
        rst.movenext
    Loop
     
    rst.close
    set rst = Nothing
    ------------------
    Merci pour ce code mais je ne sais où je dois le mettre ..
    est ce que c'est un bouton qui appelle ce code ou est ce que je dois l'ajouter à la suite de la génération des fiches ?
    Je ne suis pas doué...
    J'ai créé un bouton et mis ce code dasn une procédure... mais ca plante

    Nom : 2024-03-21 16_12_53-Microsoft Visual Basic pour Applications - RSA Fiche Pays - TEST IMP [arrêt].jpg
Affichages : 53
Taille : 14,9 Ko
    merci de votre temps

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomPDF = "FICHE_" & idpays & ".pdf"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomPDF = "FICHE_" & pays & ".pdf"
    à ajouter en paramètre ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomPDF = "FICHE_" & idpays & ".pdf"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomPDF = "FICHE_" & pays & ".pdf"
    à ajouter en paramètre ...

    ---------------------
    Merci pour cette réponse, c'est ce que j'avais tenté mais cà ne fonctionne pas.
    quand je fais pays au lieu de idpays, il ne génère qu'une seule fiche qui s'appelles toujours pareil avec le 1er nom de pays et ensuite ca écracse les données autant de fois qu'il y a de pays dans la meme fiche... soit 180 fois et à la fin je n'ai qu'une seule fiche qui s'appelle AA avec les données du dernier pays ZZ

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    il faut passer pays en 2ème paramètre:
    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
    Private Sub IMPRIME_FULL_Click()
    Dim rst As DAO.Recordset
     
    Set rst = Me.RecordsetClone 'cet objet est propre au form et report
    rst.MoveFirst
    While Not rst.EOF
    	'je passe la valeur de la clef unique à la procédure
    	imprimePdf rst.Fields("idpays"), rst.Fields("pays")
    	rst.MoveNext
    Wend
    Set rst = Nothing 'parce que quand on ouvre qq chose on le libère
    End Sub
     
    Private Sub imprimePdf(idpays As Long, Pays as string)
     
    'Enregistre les modifs qu'il pourrait y avoir avant de générer la fiche
    Refresh  '<== pas à sa place ici, cela doit se faire dans le formulaire avant la boucle ...
    ' Permet d'ouvrir l'état de la fiche Pays en cours pour édition en Pdf
    ' ICI "idpays=" idpays on passe la valeur pour que le report n'affiche que ce pays.
    'DoCmd.OpenReport "Fiche Pays HLV en masse", acViewReport, , "idpays=" & idpays, acWindowNormal
    DoCmd.OpenReport "Fiche Pays HLV en masse", acViewReport, , "idPays=" & idpays, acWindowNormal
    'CheminPDF = définit où sont stockés les fiches PDF en local pour être rapide à la génération
    CheminPDF = "C:\Users\Public\Documents"
    'NomPDF = définit le nommage du fichier PDF qu'on génére FICHE_ + le pays et l'extention .pdf
    NomPDF = "FICHE_" & Pays & ".pdf"
    'Ouvre l'Etat et génère la Fiche pdf et referme l'état, le fichier est enregistré directement dans le répertoire CheminPDF
    DoCmd.OutputTo acOutputReport, , "PDF", CheminPDF & NomPDF, False, "", , acExportQualityPrint
    DoCmd.Close acReport, "Fiche Pays HLV en masse"
    '-------------------------------------
     
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    autre solution, un simple recherche du nom avec la fonction Dlookup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomPDF = "FICHE_" & Dlookup("Pays","tab_IdPays","Id=" & Idpays) & ".pdf"
    cela aurait l'avantage de ne pas modifier les paramètres de imprimePdf
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    il faut passer pays en 2ème paramètre:
    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
    Private Sub IMPRIME_FULL_Click()
    Dim rst As DAO.Recordset
     
    Set rst = Me.RecordsetClone 'cet objet est propre au form et report
    rst.MoveFirst
    While Not rst.EOF
    	'je passe la valeur de la clef unique à la procédure
    	imprimePdf rst.Fields("idpays"), rst.Fields("pays")
    	rst.MoveNext
    Wend
    Set rst = Nothing 'parce que quand on ouvre qq chose on le libère
    End Sub
     
    Private Sub imprimePdf(idpays As Long, Pays as string)
     
    'Enregistre les modifs qu'il pourrait y avoir avant de générer la fiche
    Refresh  '<== pas à sa place ici, cela doit se faire dans le formulaire avant la boucle ...
    ' Permet d'ouvrir l'état de la fiche Pays en cours pour édition en Pdf
    ' ICI "idpays=" idpays on passe la valeur pour que le report n'affiche que ce pays.
    'DoCmd.OpenReport "Fiche Pays HLV en masse", acViewReport, , "idpays=" & idpays, acWindowNormal
    DoCmd.OpenReport "Fiche Pays HLV en masse", acViewReport, , "idPays=" & idpays, acWindowNormal
    'CheminPDF = définit où sont stockés les fiches PDF en local pour être rapide à la génération
    CheminPDF = "C:\Users\Public\Documents"
    'NomPDF = définit le nommage du fichier PDF qu'on génére FICHE_ + le pays et l'extention .pdf
    NomPDF = "FICHE_" & Pays & ".pdf"
    'Ouvre l'Etat et génère la Fiche pdf et referme l'état, le fichier est enregistré directement dans le répertoire CheminPDF
    DoCmd.OutputTo acOutputReport, , "PDF", CheminPDF & NomPDF, False, "", , acExportQualityPrint
    DoCmd.Close acReport, "Fiche Pays HLV en masse"
    '-------------------------------------
     
    End Sub
    '------------------------------------
    MERRRRRRRRRRRRRRRRRRRRRRCCCCCCCCCCCCCIIIIIIIIIIIIIII
    Ca fonctionne parfaitement merci beaucoup !!!

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Ca fonctionne parfaitement merci beaucoup !!!
    et bien de rien !!!
    Si tu penses avoir eu toutes les réponses, pense à cliquer sur
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. [AC-2016] INSERT d'une table dans MS SQL depuis une table dans ACCESS
    Par stargates01 dans le forum VBA Access
    Réponses: 8
    Dernier message: 08/02/2021, 17h27
  2. Réponses: 9
    Dernier message: 04/09/2015, 13h15
  3. [MySQL] Récupérer une balise <img> dans un article depuis une table MySQL
    Par GeDeon35 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 22/09/2011, 15h20
  4. [AC-2010] Insérer une image dans un email depuis une table ?
    Par zeubest dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/11/2010, 15h48
  5. Fichier dans un champ d'une table
    Par BOUBOU81 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 09/10/2006, 17h02

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