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 :

Importation d'images et insertion automatique dans un formulaire (plus de1000 photos)


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de Nephyline
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 96
    Points
    96
    Par défaut Importation d'images et insertion automatique dans un formulaire (plus de1000 photos)
    Bonjour,

    J'ai lu et déjà utiliser le tuto de Cafeine sur la gestion de photo par formulaire mais aujourd'hui, je souhaite créer un bouton dans mon formulaire pour importer des images depuis un dossier et y affecter un enregistrement à chaque fichier. En fait, je voudrais créer un équivalent à la fonction Fichier > Importer des enregistrements... > dossier... de FileMaker.

    Les dossiers en question contiennent plusieurs centaines, voire milliers de photos et vous comprenez que la saisie des photos une par une puisse être fastidieuse.

    Est-ce quelqu'un pourrait m'aider, s'il vous plaît ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pourrais-tu détailler un peu plus les fonctionnalités que tu recherches.



    Starec

  3. #3
    Membre régulier Avatar de Nephyline
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 96
    Points
    96
    Par défaut
    Je souhaite, lorsque l'utilisateur clique sur un bouton de commande, qu'il puisse choisir un dossier contenant les jpeg et que celles-ci se chargent automatiquement dans un cadre image prévu à cet effet, créant une nouvelle fiche (un nouvel enregistrement) pour chaque fichier jpeg.
    Une fois insérées, il peut dès lors compléter les quelques champs en rapport avec la photo de chaque enregistrement, lui faisant gagner un temps certain de saisie.

    Je ne sais pas si c'est beaucoup plus clair

  4. #4
    Membre régulier Avatar de Nephyline
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 96
    Points
    96
    Par défaut
    Personne n'a d'idée pour automatiser l'importation de lien vers les photos ?

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Veux-tu importé les photos dans la base ou seulement les référencer ?

    Voici du code pour parcourir un répertoire en Access et obtenir la liste des fichiers qu'il contient. Désolé mais, je ne sais pas ajouter une photo dans une base par code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim f as string
    f=dir("C:\tonCheminPhoto\*.jpg")
    do while f<>""
      debug.print f:'Affiche le nom du fichier
      f=dir():'Retourne une chaîne vide si il n'y a plus de fichier qui correspond à la sélection.
    loop
    Regarde l'aide associé à Dir() pour les options disponibles.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre régulier Avatar de Nephyline
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 96
    Points
    96
    Par défaut
    Je souhaite importer les liens vers les photos, autrement dit, les référencer.

    Merci Marot, je vais explorer la piste que tu me proposes !

  7. #7
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bonjour.

    Pourquoi ne pas stocké dans la base de données le "chemin+nom" de ton fichier dans une chaine de caractère?
    Ensuite sur ton formulaire utiliser un objet "Image" dans lequel tu changera le propriété "picture".

    Cela donnerait quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dim f as string
    Dim STR_Query as string 'contien les chaines Sql
    f=dir("C:\tonCheminPhoto\*.jpg")
    do while f<>""
      'debug.print f:'Affiche le nom du fichier
      STR_Query = "INSERT INTO TaTable ('ChampCheminDuFichier') VALUES ('C:\tonCheminPhoto\"& f: &".jpg')"
      Docmd.RunSql STR_Query 'on éxecute l'insertion
      f=dir():'Retourne une chaîne vide si il n'y a plus de fichier qui correspond à la sélection.
    loop
     
    ...
     
    'Quand tu veu afficher l'image sur ton formulaire
    Me.Image0.Picture = "CheminEtNomDeTaPhoto"
    Rien n'est rien!!! ... Tout est quelque chose!!!

    Petits liens utiles :
    -Chaine de connexion : http://www.connectionstrings.com/
    -ADO et ADO.net : Tuto ADO et ADO.net

  8. #8
    Membre régulier Avatar de Nephyline
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 96
    Points
    96
    Par défaut
    Si des personnes rencontrent le même problème, voici une solution que j'ai réussi à bidouiller en récupérant des codes ici et là :

    1. Dans un premier formulaire avec deux boutons :
    Le premier bouton sélectionne le répertoire où aller chercher les photos dont l'adresse complète vient s'ajouter dans le champ prévu à cet effet dans la table. Ici, j'ai un peu triché et cacher un champ texte indépendant appelé txt_SelectFolder) de façon à pouvoir récupérer l'adresse absolue des images.
    Le second bouton ouvre le formulaire avec les fiches ajoutées à la suite les unes des autres, chacune contenant les images du répertoire indiqué précédemment.

    2. Le formulaire ouvert avec les enregistrements offre la possibilité d'éditer les informations pour chacune des fiches

    Voici donc le code dans un module

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Option Compare Database
     
      Private Const BIF_RETURNONLYFSDIRS = 1
      Private Const BIF_DONTGOBELOWDOMAIN = 2
     
      Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
      Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
          ByVal lpBuffer As String) As Long
      Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
          ByVal lpString2 As String) As Long
     
      Private Type BrowseInfo
          hWndOwner As Long
          pIDLRoot As Long
          pszDisplayName As Long
          lpszTitle As Long
          ulFlags As Long
          lpfnCallback As Long
          lParam As Long
          iImage As Long
      End Type
     
      Public Function SelectFolder(Titre As String, Handle As Long) As String
     
      Dim lpIDList As Long
      Dim strBuffer As String
      Dim strTitre As String
      Dim tBrowseInfo As BrowseInfo
     
      strTitre = Titre
      With tBrowseInfo
          .hWndOwner = Handle
          .lpszTitle = lstrcat(strTitre, "")
          .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
      End With
     
      lpIDList = SHBrowseForFolder(tBrowseInfo)
     
      If (lpIDList) Then
          strBuffer = String(260, vbNullChar)
          SHGetPathFromIDList lpIDList, strBuffer
          SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
      End If
     
      End Function
     
    Public Function FileExistDir(strDir As String, strTable As String, strField As String)
     
        Dim intFile As Integer
        Dim strFile As String
     
        intFile = 0: strFile = ""
     
        With Application.FileSearch
            .LookIn = strDir: .Filename = "*.*"
            If .Execute > 0 Then
                For intFile = 1 To .FoundFiles.Count
                    strFile = .FoundFiles(intFile)
                    strFile = Right(strFile, Len(strFile) - (Len(strDir) + 1))
                    CurrentDb.Execute "INSERT INTO [" & strTable & "] " _
                        & "([" & strField & "])" _
                        & "SELECT """ & strDir & "\" & strFile & """ ;"
                Next
            End If
        End With
     
    End Function
    Et voici le code du premier bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub btn_AjoutPhoto_Click()
     
        Me.txt_SelectFolder.Value = SelectFolder("Sélectionnez un répertoire :", Me.hwnd)
        Call FileExistDir(Me.txt_SelectFolder, "Photos", "AdressePhoto")
     
    End Sub
    Il y a peut-être plus simple, mais ça fonctionne pour moi.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/08/2009, 21h25
  2. Utilisation de l'insertion automatique dans Word
    Par Kingoo dans le forum Débuter
    Réponses: 1
    Dernier message: 04/07/2008, 18h43
  3. pb insertion automatique dans bd
    Par nicocaine dans le forum Windows
    Réponses: 1
    Dernier message: 26/07/2007, 15h02
  4. Réponses: 2
    Dernier message: 18/03/2007, 19h02
  5. Réponses: 1
    Dernier message: 25/10/2006, 18h06

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