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 :

Liaisons VBA Dorsale/ Frontale


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut Liaisons VBA Dorsale/ Frontale
    Bonjour à tous,

    J’essaie de faire fonctionner un code pris sur la FAQ mais je n’y arrive pas entièrement. En fait il s’agit de rétablir la liaison des tables avec le VBA Dorsale/Fontale
    La liaison des tables se fait sans souci particulier.

    Code progressBar:
    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
    Private Sub Form_Timer()
    lngProg = lngProg + 1
    ProgressBar.Width = Int(lngProg * Bar.Width / 100)
    ProgressDroite.Caption = lngProg & " %"
    If ProgressBar.Width + ProgressBar.Left >= ProgressGauche.Left Then
        ProgressGauche.Visible = True
        ProgressGauche.Width = (ProgressBar.Width + _
            ProgressBar.Left) - ProgressGauche.Left
        ProgressGauche.Caption = lngProg & " %"
       End If
    DoCmd.RepaintObject acForm, Me.Name
    If lngProg = 100 Then
        TimerInterval = 0: lngProg = 0
        'btnTest.Caption = "&Lancer le test de la barre"
        'remise à zéro du temps pour la minuterie
        Me.TimerInterval = 0
        'Test si la bdd à bouger en testant le chemin de liaison des tables
        If Not (GetLinkedDBName("tblAdherents") = CurrentProject.Path & "\Serveur\Data Gestion des Syndiqués.mdb") Then
            'Appel Fonction permettant de lier les tables
            If LierTables(CurrentProject.Path & "\Données\Data Gestion des Syndiqués.mdb") = False Then GoTo err_Maj
            'Appel Fonction permettant de mettre à jour le chemin des images
            If MAJ_Photos(CurrentProject.Path & "\Photos\", "tblAdherents", "AdhPhoto") = False Then GoTo err_Maj
             'Répertoire d'installation des photos
        'strRepertoirePhotos = strRepertoirePhotos & "Photos\"
            'message ok
            MsgBox "Vous êtes connecté à Gestion des Syndiqués", , "Connection"
        'End If
        'Fermeture du Splash
        DoCmd.Close
        'Ouverture Formulaire
        DoCmd.OpenForm "frmAdherents"
        Exit Sub
     
    err_Maj:
        MsgBox "Une erreur c'est produite pendant la mise à jour des tables et de images", vbExclamation, "Mise à jour"
     
        DoCmd.Close
        DoCmd.OpenForm "frmPassword"
    End If
    End If
    End Sub

    Mon problème réside sur l’affichage des photos dans mon formulaire ainsi que la fonction insérer photos.

    Message d’erreur Affichage photo : Une fois les liaisons rétablies la photo qui était présente dans le champ photo s’affiche normalement, en revanche quand je passe à l’enregistrement suivant et que le champ photo est vide il devrait m’afficher la photo Blank.jpg, or là le message suivant s’affiche : Erreur d’exécution 2220 Microsoft Access ne peut pas ouvrir le fichier Blank.jpg

    Code affichage photo :
    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
    Private Sub Form_Current()
    'Affichage de la photo et de son libellé - Gestion d'erreurs
        If IsNull(Me.AdhPhoto.value) Then
                    Me.Image21.Picture = strRepertoirePhotos & "Blank.jpg"
                     'Me.LibellePhoto = "Photo non disponible"
            Else
                Me.Image21.Picture = strRepertoirePhotos & Me.AdhPhoto.value
                    'Me.LibellePhoto = Left(Me.AdhPhoto.value, InStr(Me.AdhPhoto.value, ".") - 1)
        End If
        Exit Sub
    GestionErreur:
        Select Case Err.Number
        Case 2114
            'Cas d'un type de fichier photo non supporté
            MsgBox "Le format de l'image n'est supporté par le contrôle image ", vbCritical + vbOKOnly, "Essai EPI"
            Me.Image21.Picture = strRepertoirePhotos & "Blank.jpg"
            'Me.LibellePhoto = "Photo non disponible"
        Case 2220
            'Cas d'un emplacement non valide du fichier image
            MsgBox "Le fichier image n'a pas été trouvé à l'emplacement indiqué : " & vbCrLf & _
                    Me.AdhPhoto.value, vbCritical + vbOKOnly, "
            Me.Image21.Picture = strRepertoirePhotos & "Blank.jpg"
            'Me.LibellePhoto = "Photo non disponible"
        Case Else
            ' tout autre cas d'erreur
            MsgBox "Erreur inattendue : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, ""
        End Select
        Err.Clea
    End Sub

    Quand à la fonction insérer photo le message suivant : Erreur de compilation Type d’argument ByRef incompatible

    Code function :
    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
    Function InsererPhoto()
     '--------------------------------------------------------------------------------------------
        ' Projet        : Gestion des photos
        ' Appel         :
        ' Auteur        : Domi2
        ' Version       : 1.0 - 26.07.2007
        ' Révision      : -
        ' Commentaires  : Permet d'enregistrer le nom de la photo dans la table
        ' Lien          :
        '--------------------------------------------------------------------------------------------
     
        'Ouverture de la boîte de dialogue Ouvrir fichier. On ne récupère que le nom du fichier.
        'Paramètre : 1 pour récupérer le nom du chemin complet
        'Paramètre : 2 pour récupérer uniquement le nom de fichier
        NomPhoto = OuvrirFichier(Me.hwnd, "Choisir une photo pour cet Adhérent", 2, "Fichier .jpg", "jpg", strRepertoirePhotos)
     
        'Récupération et stockage du chemin du fichier dans le champ PlongeePhoto
        If NomPhoto <> "" Then
     
        Me.AdhPhoto.value = NomPhoto
     Else
         Exit Function
     End If
     
        'Affichage de la photo
        Me.Image21.Picture = strRepertoirePhotos & Me.AdhPhoto.value
     
        'Modification du libellé de la photo
        'Me.LibellePhoto = Left(Me.AdhPhoto.value, InStr(Me.AdhPhoto.value, ".") - 1)
     
    'End Select
    End Function

    Si quelqu'un peut m'aider à y voir plus clair
    Merci

  2. #2
    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
    Bonjour,

    Visiblement, il manque des parties de codes.

    On dirait tout de même que tu as un problème avec ta variable "strRepertoirePhotos".

    Ce que je fais dans ces cas-là, c'est d'afficher des Msgbox au endroits stratégiques de mon code, ou d'utiser Debug.Print

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox strRepertoirePhotos
    Ce n'est peut-être pas très pro mais ça te permettra d'afficher les chemins aux photos et de voir si c'est conforme à tes attentes.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Apparement c'est bien le strRepertoirePhoto qui pose problème la difficulté c'est que je ne vois pas comment le solutionner.

    Faut-il créer un table paramètres avec le chemin de l'image Blank et mofidier le code de l'affichage?

    Et au niveau de ByRef j'ai essayé ça mais sans résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function InsererPhoto(ByRef i As Integer)
    Msg: L'expression entrée comporte une fonction dont le nombre d'arguments n'est pas correct

    Merci de votre aide

  4. #4
    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
    Bonjour,

    Et quelle est la valeur retournée par ta variable strRepertoirePhoto ?

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  5. #5
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Domi2 Voir le message
    Bonjour,
    Et quelle est la valeur retournée par ta variable strRepertoirePhoto ?
    Domi2
    Aucune où alors j'ai mal placé le msgbox

  6. #6
    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
    Re,

    Visiblement, tu as plusieurs modules...

    Ta variable est bien déclarée comme Public quelque part ?

    Tu lui assignes correctement sa valeur ?

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  7. #7
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Il y a ça 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
    Function MAJ_Photos(strChemin As String, strTable As String, strChamp As String) As Boolean
     
    On Error GoTo err_Module
     
    'Déclaration des variables
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim strFichier As String
     
        'initialisation de la Fnction
        MAJ_Photos = False
     
        'Instance de la bdd et Recordset
        Set db = CurrentDb()
        Set rst = db.OpenRecordset(strTable)
     
        'Test si pointeur en début du Recordset
        If Not rst.BOF Then
            'Place le pointeur sur le Premier enregistrement du Recordset
            rst.MoveFirst
        End If
     
        'Test si le chemin posède \ à la fin, si non on l'ajoute
        If Not Right(strChemin, 1) = "\" Then
            strChemin = strChemin & "\"
        End If
     
        'Boucle tant que l'on est pas passé dans chaque enregistrements
        While Not rst.EOF
            'Extraction du nom de l'image avec son extension
            strFichier = Right(rst(strChamp).value, Len(rst(strChamp).value) - InStrRev(rst(strChamp).value, "\", -1, 1))
            'Passe en mode édition
            rst.Edit
            'Changement du chemin du champ de la table
            rst(strChamp).value = strChemin & strFichier
            'Met à jour
            rst.Update
            'Enregistrement suivant
            rst.MoveNext
        Wend
     
        'Procédure ok
        MAJ_Photos = True
        'On sort de la Fonction
        Exit Function
     
    err_Module:
     
        'affiche erreur
        MsgBox Err.Number & vbCrLf & Err.Description
        'Procédure Nok
        MAJ_Photos = False
     
    End Function

  8. #8
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Bon j'ai utilisé le code de Caféine Gestion des Photos par formulaire il fonctionne et m'affiche bien la photo Blank.jpg. En revanche le strRepertoirePhoto n'existe plus je pense qu'il est remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Image21.Picture = CurrentProject.Path & "\Photos\blank.jpg"
    Par contre la function insérer photo ne fonctionne toujours pas.

  9. #9
    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
    Re,

    Ben, je ne vois pas bien le rapport...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Current()
    'Affichage de la photo et de son libellé - Gestion d'erreurs
        If IsNull(Me.AdhPhoto.value) Then
                    Me.Image21.Picture = strRepertoirePhotos & "Blank.jpg"
                     'Me.LibellePhoto = "Photo non disponible"
            Else
                Me.Image21.Picture = strRepertoirePhotos & Me.AdhPhoto.value
                    'Me.LibellePhoto = Left(Me.AdhPhoto.value, InStr(Me.AdhPhoto.value, ".") - 1)
        End If
        Exit Sub
    Dans ta Sub Sur activation, tu n'assignes pas de valeur à ta variable strRepertoirePhotos.

    C'est donc que tu dois le faire ailleurs...

    Dans la section déclaration d'un module, tu devrais avoir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Compare Database
    Option Explicit
     
    'Déclaration de la variable
    Public strRepertoirePhotos As String
    Puis, dans une Sub ou fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strRepertoirePhotos = "C:\Mon chemin vers les photos"
    ou toute autre possiblité d'assigner une valeur, en passant par une fonction par exemple...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  10. #10
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Tu as surement raison, avec le tuto de caféine remanié dans mon appli l'affichage est correct et la function adaptée d'insertion de la photo fonctionne également voir 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
    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
    Function InsererPhoto()
     
    ' Bouton d'ajout - modification de photo
    Dim strLink As String
     
    ' Gestion des erreurs
    On Error GoTo Catch01
     
    ' récupération du chemin physique de la photo
    '  par la boite de dialogue
    strLink = OuvrirUnFichier(Me.hwnd, _
                             "Sélectionner une photo pour l'adhérent : " & Me.AdhNomprenom, _
                             1)
     
    ' si la boite renvoie une adresse non nulle
    If Len(strLink) > 0 Then
        ' tentative d'affichage de la photo
        Me.Image21.Picture = strLink
        Me.AdhPhoto = strLink
    End If
     
    'DisplayPhoto
    'Exit Sub
     
    Catch01:
    Select Case Err.Number
        Case 2114
            'Cas d'un type de fichier photo non supporté ...
            '  on sort de la procédure
            MsgBox "Le format de l'image n'est supporté par le contrôle image Picture", vbCritical + vbOKOnly, "Application Photos"
            'Exit Sub
        Case 2220
            'Cas d'un emplacement non valide du fichier image
            MsgBox "Le fichier image n'a pas été trouvé à l'emplacement indiqué : " & vbCrLf & _
                    Me.AdhPhoto, vbCritical + vbOKOnly, "Application Photos"
            'Exit Sub
        Case Else
            ' tout autre cas d'erreur
            'MsgBox "Erreur inattendue : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Application Photos"
    End Select
     
    End Function
    Code affichage:
    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
    Private Sub Form_Current()
    ' L'événement Activation (Current) se produit lorsque le focus passe à un enregistrement
    '  donné pour en faire l'enregistrement en cours, ou lorsque le formulaire est
    '  Actualisé ou en Actualisation.
     
    ' si le nom du salarié est non vide : on visualise un enregistrement
    '  sinon cela indique que nous sommes sur un enregistrement vierge, donc en cours de saisie.
    '  Me.Caption : gère le titre du formulaire.
    'If Len(Me.Nom) > 0 Then
        'Me.Caption = "Détails pour le salarié : " & Me.Nom & " - " & Me.Prénom
    'Else
        'Me.Caption = "Saisie d'un nouveau salarié"
    'End If
     
    ' Gestion des erreurs
    On Error GoTo Catch02
     
    ' si la photo n'est pas définie, on affiche la photo blank.jpg
    ' CurrentProject.Path : est le chemin de l'application
    If Len(Me.AdhPhoto) > 0 Then
        Me.Image21.Picture = Me.AdhPhoto
    Else
        Me.Image21.Picture = CurrentProject.Path & "\Photos\blank.jpg"
    End If
     
    'DisplayPhoto
     
    Exit Sub
     
    Catch02:
    Select Case Err.Number
        Case 2114
            'Cas d'un type de fichier photo non supporté ...
            MsgBox "Le format de l'image n'est supporté par le contrôle image Picture", vbCritical + vbOKOnly, "Application Photos"
            Me.Image21.Picture = CurrentProject.Path & "\Photos\blank.jpg"
            Me.AdhPhoto = vbNullString
        Case 2220
            'Cas d'un emplacement non valide du fichier image
            MsgBox "Le fichier image n'a pas été trouvé à l'emplacement indiqué : " & vbCrLf & _
                    Me.AdhPhoto, vbCritical + vbOKOnly, "Application Photos"
            Me.Image21.Picture = CurrentProject.Path & "\Photos\blank.jpg"
            Me.AdhPhoto = vbNullString
        Case Else
            ' tout autre cas d'erreur
            MsgBox "Erreur inattendue : " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Application Photos"
    End Select
    Err.Clear
     
    End Sub
    Le 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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    Option Compare Database
    Option Explicit
     
    'Déclaration de l'API
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                       "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
     
     'Structure du fichier
    Private Type OPENFILENAME
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        lpstrFilter As String
        lpstrCustomFilter As String
        nMaxCustFilter As Long
        nFilterIndex As Long
        lpstrFile As String
        nMaxFile As Long
        lpstrFileTitle As String
        nMaxFileTitle As Long
        lpstrInitialDir As String
        lpstrTitle As String
        flags As Long
        nFileOffset As Integer
        nFileExtension As Integer
        lpstrDefExt As String
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End Type
     
     'Constantes
    Private Const OFN_READONLY = &H1
    Private Const OFN_OVERWRITEPROMPT = &H2
    Private Const OFN_HIDEREADONLY = &H4
    Private Const OFN_NOCHANGEDIR = &H8
    Private Const OFN_SHOWHELP = &H10
    Private Const OFN_ENABLEHOOK = &H20
    Private Const OFN_ENABLETEMPLATE = &H40
    Private Const OFN_ENABLETEMPLATEHANDLE = &H80
    Private Const OFN_NOVALIDATE = &H100
    Private Const OFN_ALLOWMULTISELECT = &H200
    Private Const OFN_EXTENSIONDIFFERENT = &H400
    Private Const OFN_PATHMUSTEXIST = &H800
    Private Const OFN_FILEMUSTEXIST = &H1000
    Private Const OFN_CREATEPROMPT = &H2000
    Private Const OFN_SHAREAWARE = &H4000
    Private Const OFN_NOREADONLYRETURN = &H8000
    Private Const OFN_NOTESTFILECREATE = &H10000
     
    Private Const OFN_SHAREFALLTHROUGH = 2
    Private Const OFN_SHARENOWARN = 1
    Private Const OFN_SHAREWARN = 0
     
     
    Public Function OuvrirUnFichier(Handle As Long, _
                                    Titre As String, _
                                    TypeRetour As Byte, _
                                    Optional TitreFiltre As String, _
                                    Optional TypeFichier As String) As String
     'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
    la boîte de dialogue de sélection d'un fichier.
     'Explication des paramètres
        'Handle = le handle de la fenêtre (Me.Hwnd)
        'Titre = Titre de la boîte de dialogue
        'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
            '1 = Chemin complet + Nom du fichier
            '2 = Nom fichier seulement
        'TitreFiltre = Titre du filtre
            'Exemple: Fichier Access
            'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
        'TypeFichier = Extention du fichier (Sans le .)
            'Exemple: MDB
            'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
     
    Dim StructFile As OPENFILENAME
    Dim sFiltre As String
     
     'Construction du filtre en fonction des arguments spécifiés
    If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
      sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
    End If
    sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
     
     
     'Configuration de la boîte de dialogue
      With StructFile
        .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
        .hwndOwner = Handle 'Identification du handle de la fenêtre
        .lpstrFilter = sFiltre 'Application du filtre
        .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
        .nMaxFile = 254 'Taille maximale du fichier
        .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
        .nMaxFileTitle = 254  'Taille maximale du nom du fichier
        .lpstrTitle = Titre 'Titre de la boîte de dialogue
        .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
      End With
     
      If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
        Select Case TypeRetour
          Case 1: OuvrirUnFichier = Trim$(StructFile.lpstrFile)
          Case 2: OuvrirUnFichier = Trim$(StructFile.lpstrFileTitle)
        End Select
      End If
     
    End Function
    Est-ce correct?
    Maintenant je vais essayer de déplacer la base pour tester la mise à jour.

  11. #11
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Je viens de tester le déplacement de la base tout fonctionne les liaisons se mettent à jour automatiquement ainsi que les chemins des photos.

    Soucis 1 : quand la base est déplacée la fonction inserer photo ne se souvient pas de l'emplacement des photos elle ouvre le repertoire mes documents de l'ordi. Il faut en insérer au moins une donc aller la chercher et ensuite tout rentre dans l'autre même si on ferme la base.

    Soucis 2 : En fonction de l'endroit ou l'on transfère la base les chemins des photos s'allongent et il arrive qu'ils soient trop long. Peut t-on les raccourcir et n'afficher dans la table que le nom de la photo et son extension.

  12. #12
    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
    Re,

    Soucis 1 :

    Essaie de corriger la ligne d'appel, avec quelquechose de ce genre (pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strLink = OuvrirUnFichier(Me.hwnd, _
                             "Sélectionner une photo pour l'adhérent : " & Me.AdhNomprenom, CurrentProject.Path)

    Soucis 2

    En revenir à un chemin de photos "relatif" assigné à une variable...

    Une variable de type string n'est pas limitée en nombre de caractères (enfin si, mais la place sera suffisante)...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  13. #13
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Domi2 Voir le message
    Re,

    Soucis 1 :

    Essaie de corriger la ligne d'appel, avec quelquechose de ce genre (pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strLink = OuvrirUnFichier(Me.hwnd, _
                             "Sélectionner une photo pour l'adhérent : " & Me.AdhNomprenom, CurrentProject.Path)
    Soucis 2

    En revenir à un chemin de photos "relatif" assigné à une variable...

    Une variable de type string n'est pas limitée en nombre de caractères (enfin si, mais la place sera suffisante)...

    Domi2

    Souci 1 : ca ne marche pas
    Souci 2 : Je ne comprends pas

  14. #14
    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
    Re,

    Soucis 1

    Ce code fonctionne parfaitement pour moi (testé). Il m'ouvre bien systématiquement la boîte de dialogue dans le répertoire courant de l'appli.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomPhoto = OuvrirFichier(Me.hwnd, "Choisir une photo", 2, "Fichier .jpg", "jpg", CurrentProject.Path)
    Maintenant, je ne sais pas où tu as mis tes photos...

    Soucis 2

    Ben, c'est faire exactement comme dans ce que tu nous a montré au début de la discussion... J'ai pas mieux...

    Ou alors, installer ton appli systématiquement proche de la racine et non dans "C:\Mes documents....blabla....blablabla".

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  15. #15
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Domi2 Voir le message
    Re,

    Soucis 1

    Ce code fonctionne parfaitement pour moi (testé). Il m'ouvre bien systématiquement la boîte de dialogue dans le répertoire courant de l'appli.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomPhoto = OuvrirFichier(Me.hwnd, "Choisir une photo", 2, "Fichier .jpg", "jpg", CurrentProject.Path)
    Ca marche pas il me répond erreur de compilation sub ou function non définie.
    Maintenant, je ne sais pas où tu as mis tes photos...
    Elles sont au même niveau que l'appli dans un repertoire photos

    Soucis 2

    Ben, c'est faire exactement comme dans ce que tu nous a montré au début de la discussion... Il faut tout reprendre ? J'ai pas mieux...

    Ou alors, installer ton appli systématiquement proche de la racine et non dans "C:\Mes documents....blabla....blablabla".

    Domi2

  16. #16
    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
    Re,

    Soucis 1

    Ma fonction à moi s'appelle OuvrirFichier et la tienne OuvrirUnFichier... A adapter donc... Et compléter avec le nom de ton répertoire "Photos".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentProject.Path & "\TonRepertoire"
    Soucis 2

    Il faut tout reprendre ?
    Toi seul peux répondre à cette question

    Mais j'ai quand même des interrogations. Tout cela me semble manquer de "vision" au niveau du déploiement.

    Au début de la discussion, tu parles de base Frontale/Dorsale. C'est donc que ton appli est scindée, c'est parfait...

    J'en déduis donc que tu vas l'utiliser en réseau...

    Alors pourquoi mettre les photos dans un sous-répertoire de ta base frontale. Personnellement, je n'y trouve pas de sens, elles ne seront pas partagées par l'ensemble des utilisateurs...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  17. #17
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    =Domi2;2946249]Re,

    Soucis 1

    Ma fonction à moi s'appelle OuvrirFichier et la tienne OuvrirUnFichier... A adapter donc... Et compléter avec le nom de ton répertoire "Photos".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentProject.Path & "\TonRepertoire"
    Je suis d'accord avec toi mais je l'accroche où le code ci-dessus?
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strLink = OuvrirFichier(Me.hwnd, CurrentProject.Path & "\Photos")
    Je patauge complètement!

  18. #18
    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
    Oui,

    C'est ça... Attention au nombre d'arguments...

    Colle simplement ma ligne après le = , et vérifies que le nom de la fonction appelée correspond bien à la tienne (OuvrirUnFichier).

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  19. #19
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Bon je décroche rien ne marche;
    J'ai remis comme au début du post la fonction insérer ne marche plus, la fonction supprimer photo non plus et bien sûr il n'affiche plus la photo blank.jpg. J'abandonne

Discussions similaires

  1. Erreur VBA sur Base Dorsale - Frontale
    Par guepard25 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/10/2014, 15h28
  2. Réponses: 1
    Dernier message: 08/07/2014, 14h22
  3. [AC-2010] Dorsale/frontale problèmes liaisons
    Par marg0t dans le forum Sécurité
    Réponses: 3
    Dernier message: 29/08/2013, 10h50
  4. Gestion Dorsale/Frontale erreur code
    Par surrounded dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/08/2007, 14h53
  5. runtime dorsal/frontal table liée
    Par willytito dans le forum Runtime
    Réponses: 2
    Dernier message: 01/02/2007, 11h39

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