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 :

Existence de fichier


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Par défaut Existence de fichier
    Bonjour à tous !
    Venant de m'inscrire sur ce forum, je vous salue !
    Je fais régulièrement des recherches sur différents sujets, souvent mes solutions viennent de ce forum, mais là je n'ai rien trouvé....
    J'expose mon problème :

    Je créé une base de données de gestion de stock pour une entreprise près de chez moi, sous access (on m'a pas laissé le choix :-/ ).

    Donc j'ai une table STOCK contenant mes produits, ainsi que différents champs : Code (qui contient mon code produit, c'est donc ma clé primaire), et Photo (qui contient donc un lien hypertexte vers une photo).
    (Je vous épargne les autres champs qui ne sont pas liés à cette question... ^^

    Cette base de données est amené à être assez grande (plus ou moins 45 000 produits...) et donc, remplir les liens hypertextes pour la photo de chaque produit n'est pas concevable. Les noms des photos sont identiques au code produit (avec ".JPG" derrière évidement) et stockées dans un dossier " \photos\ " se trouvant au même emplacement que ma BdD. J'ai donc écrit un code VBA qui me permet de remplir automatiquement chaque liens hypertexte en fonction du code produit...
    Jusque là tout va bien, mais il y a des produits qui ne seront pas en photo... Et donc, pour éviter un message d'erreur quand on clique sur le lien (dans un formulaire ou autre) je souhaite modifier mon code pour que : si la photo existe, je met le liens hypertexte, et si elle n'existe pas, je le laisse vide...

    Mon code VBA pour l'ajout des liens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        chemin = Application.CurrentProject.Path
        Requete_ajout_photo = "UPDATE STOCKS SET PHOTO = ""Afficher la photo#" & Application.CurrentProject.Path & "\photos\"" & STOCKS.CODE & "".jpg ""WHERE STOCKS.PHOTO IS NULL;"
     
        DoCmd.RunSQL (Requete_ajout_photo)
    J'ai bien trouvé des pistes pour vérifier l'existence d'un fichier, mais je n'arrive pas à les exploiter...

    Merci à ceux qui prendront le temps de lire, et pourquoi pas de m'aider :-)

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Par défaut
    Bon bah j'ai trouvé au final, après deux jours de galère, c'est fait...

    Il faut dire que je ne suis pas le roi du VBA non plus, mais je poste ma solution au cas où d'autres galériens cherche quelque chose du même style ^^

    Alors, tout d'abord, la fonction pour vérifier si le fichier existe (prise sur un autre site, c'est vrai ! ^^), à mettre dans les modules (Insertion => Module ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Function existeFileFSO(ByVal fichier As String) As Boolean
        Set fs = CreateObject("Scripting.FileSystemObject")
        existeFileFSO = fs.FileExists(fichier)
        Set fs = Nothing
        End Function
    Et ensuite, ma procédure lors du click sur le bouton de MàJ :

    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
     
    Private Sub b_maj_photos_Click()
        Dim Requete_ajout_photo As String
        Dim CodeStock1 As DAO.Recordset
        Dim AdresseFile As String
     
        DoCmd.SetWarnings False
     
        Set CodeStock1 = CurrentDb.OpenRecordset("SELECT STOCKS.CODE FROM STOCKS")
        CodeStock1.MoveFirst
        While CodeStock1.EOF <> True
            If existeFileFSO(Application.CurrentProject.Path & "\photos\" & CodeStock1!CODE & ".jpg") = True Then
                Requete_ajout_photo = "UPDATE STOCKS SET PHOTO = ""Afficher la photo#" & Application.CurrentProject.Path & "\photos\" & CodeStock1!CODE & ".jpg ""WHERE STOCKS.PHOTO IS NULL AND STOCKS.CODE = """ & CodeStock1!CODE & """;"
     
                DoCmd.RunSQL (Requete_ajout_photo)
                CodeStock1.MoveNext
            Else
                CodeStock1.MoveNext
            End If
        Wend
        DoCmd.SetWarnings True
    End Sub
    Et ça tourne !
    Voilà, si j'ai pu aider des gens, je suis content, sinon.... bah je suis content aussi ^^

    Et si il y en a qui voient comment nettoyer mon code peut être.... Je ne sais pas si il est très propre vu que je ne m'y connais pas en VBA, ça ne peut que m'en apprendre...

    edit : Je passe le sujet en "résolu" :-)

  3. #3
    Membre confirmé
    Homme Profil pro
    Employer
    Inscrit en
    Août 2015
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Employer
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 127
    Par défaut Vous vez un petit exemple pour votre code
    Bonjour,

    J'ai le même problème, seluement j'ai prie le nom des photo la clef primaires des étudiants.

    J'arrive pas a faire marcher, vous n'avez pas un petit exemple a me le passer pour le tester ?

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Bonjour,

    Un petit exemple qui pourrait aider. Il est possible d'utiliser une fonction personnalisée telle que celle-ci dans une requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public DossierPhoto As String
    Public CheminPhoto As String
     
    Public Function AdrPhoto(kId As Long)
        CheminPhoto = DossierPhoto & kId & ".jpg"
        If Dir(CheminPhoto) = "" Then
            AdrPhoto = DossierPhoto & "0.jpg"
        Else
            AdrPhoto = CheminPhoto
        End If
    End Function
    A adapter.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Homme Profil pro
    Employer
    Inscrit en
    Août 2015
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Employer
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 127
    Par défaut Merci
    Bonsoir,

    Je vous remerci de l'exemple, je vais le fusionner a mon projet.

    Merci

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

Discussions similaires

  1. vérifier existance des fichiers
    Par big1 dans le forum Windows
    Réponses: 3
    Dernier message: 05/06/2007, 14h18
  2. Test de l'existence de fichiers
    Par michel99 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/02/2007, 13h10
  3. Condition sur existence de fichier sur le disque dur
    Par manshoon dans le forum Langage
    Réponses: 3
    Dernier message: 10/05/2006, 10h58
  4. Réponses: 7
    Dernier message: 05/01/2006, 02h06
  5. [LG]pour l'existence des fichiers en pascal
    Par mister_dsg dans le forum Langage
    Réponses: 8
    Dernier message: 04/12/2003, 23h14

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