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 :

Comment maintenir une police après l'avoir enregistrée ? [AC-2013]


Sujet :

Access

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Comment maintenir une police après l'avoir enregistrée ?
    Salut membres du forum !
    Voici un code source de Developpez.com:
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    Option Compare Database
    Option Explicit
     
    Public Type Police
      Nom As String
      Taille As Long
      Souligne As Boolean
      Italique As Boolean
      Gras As Boolean
      Barre As Boolean
      Couleur As Long
    End Type
     
    Const LOGPIXELSY = 90
    Const FW_NORMAL = 400
    Const FW_GRAS = 700
    Const DEFAULT_CHARSET = 1
    Const OUT_DEFAULT_PRECIS = 0
    Const CLIP_DEFAULT_PRECIS = 0
    Const DEFAULT_QUALITY = 0
    Const DEFAULT_PITCH = 0
    Const FF_ROMAN = 16
    Const CF_PRINTERFONTS = &H2
    Const CF_SCREENFONTS = &H1
    Const CF_BOTH = (CF_SCREENFONTS Or CF_PRINTERFONTS)
    Const CF_EFFECTS = &H100&
    Const CF_FORCEFONTEXIST = &H10000
    Const CF_INITTOLOGFONTSTRUCT = &H40&
    Const CF_LIMITSIZE = &H2000&
    Const CF_NOSCRIPTSEL = &H800000
    Const REGULAR_FONTTYPE = &H400
    Const LF_FACESIZE = 32
    Const GMEM_MOVEABLE = &H2
    Const GMEM_ZEROINIT = &H40
     
     
     
    Private Type CHOOSEFONT
            lStructSize As Long
            hwndOwner As Long
            hdc As Long
            lpLogFont As Long
            iPointSize As Long
            flags As Long
            rgbColors As Long
            lCustData As Long
            lpfnHook As Long
            lpTemplateName As String
            hInstance As Long
            lpszStyle As String
            nFontType As Integer
            MISSING_ALIGNMENT As Integer
            nSizeMin As Long
            nSizeMax As Long
    End Type
    Private Type LOGFONT
      lfHeight As Long
      lfWidth As Long
      lfEscapement As Long
      lfOrientation As Long
      lfWeight As Long
      lfItalic As Byte
      lfUnderline As Byte
      lfStrikeOut As Byte
      lfCharSet As Byte
      lfOutPrecision As Byte
      lfClipPrecision As Byte
      lfQuality As Byte
      lfPitchAndFamily As Byte
      lfFaceName As String * 31
    End Type
     
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
    ByVal nIndex As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function CHOOSEFONT Lib "comdlg32.dll" Alias "ChooseFontA" (pChoosefont As CHOOSEFONT) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
     
     
    Public Function ChoisirPolice(Handle As Long, PoliceParDefaut As Police) As Police
        Dim Boite As CHOOSEFONT, LaPolice As LOGFONT, hMem As Long, pMem As Long
        Dim resultat As Long, Retour As Police
        '*****************************************
        'definit la police par defaut à afficher
        LaPolice.lfStrikeOut = PoliceParDefaut.Barre
        LaPolice.lfWeight = IIf(PoliceParDefaut.Gras, FW_GRAS, FW_NORMAL)
        LaPolice.lfItalic = PoliceParDefaut.Italique
        LaPolice.lfUnderline = PoliceParDefaut.Souligne
        LaPolice.lfHeight = -PoliceParDefaut.Taille * GetDeviceCaps(GetDC(Handle), LOGPIXELSY) / 72
        If PoliceParDefaut.Nom = "" Then PoliceParDefaut.Nom = "Tahoma"
        LaPolice.lfFaceName = PoliceParDefaut.Nom & vbNullChar  'Nom de la police par defaut
        '******************************************
        ' Creer une structure LOGFont en memoire.
        hMem = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(LaPolice))
        'Verouille et recupere le pointeur vers la structure
        pMem = GlobalLock(hMem)
        'Copie la structure
        CopyMemory ByVal pMem, LaPolice, Len(LaPolice)
        'Initialise la boite de dialogue
        Boite.lStructSize = Len(Boite)
        Boite.hwndOwner = Handle
        'Affecte la police par defaut
        Boite.lpLogFont = pMem
        'defini la taille (10*La taille de la police)
        Boite.iPointSize = 120 'PoliceParDefaut.Taille * 10
        'Personalise la boite
        Boite.flags = CF_BOTH Or CF_EFFECTS Or CF_FORCEFONTEXIST Or _
           CF_INITTOLOGFONTSTRUCT Or CF_LIMITSIZE Or _
           CF_NOSCRIPTSEL
        'Fixe la couleur
        Boite.rgbColors = PoliceParDefaut.Couleur
        Boite.nFontType = REGULAR_FONTTYPE
        'Definit les tailles possibles
        Boite.nSizeMin = 6
        Boite.nSizeMax = 72
        'Ouvre la boite
        resultat = CHOOSEFONT(Boite)
        If resultat <> 0 Then
            CopyMemory LaPolice, ByVal pMem, Len(LaPolice)
            'Prepare le resultat
            Retour.Nom = Left(LaPolice.lfFaceName, InStr(LaPolice.lfFaceName, vbNullChar) - 1)
            Retour.Taille = Boite.iPointSize \ 10
            Retour.Couleur = Boite.rgbColors
            Retour.Gras = LaPolice.lfWeight > FW_NORMAL
            Retour.Italique = LaPolice.lfItalic
            Retour.Souligne = LaPolice.lfUnderline
            Retour.Barre = LaPolice.lfStrikeOut
         End If
        'libere la memoire
        resultat = GlobalUnlock(hMem)
        resultat = GlobalFree(hMem)
        ChoisirPolice = Retour
    End Function
    qui permet d'afficher la boîte de dialogue de police afin d'en une choisir grâce à un bouton de commande dont voici le 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
     
    Private Sub Commande2_Click()
    Dim P As Police
    'Recupere la police actuelle
    'pour alimenter les valeurs par
    'défaut de la boîte de dialogue
    With P
    .Barre = False
    .Couleur = Lbl_Texte.ForeColor
    .Gras = Lbl_Texte.FontBold
    .Italique = Lbl_Texte.FontItalic
    .Souligne = Lbl_Texte.FontUnderline
    .Taille = Lbl_Texte.FontSize
    .Nom = Lbl_Texte.fontname
    End With
    'Affiche la boite de dialogue
    P = ChoisirPolice(Me.hwnd, P)
    'Applique la nouvelle valeur au controle
    With Lbl_Texte
    'si taille=0 alors signife annuler
    If P.Taille <> 0 Then
    .ForeColor = P.Couleur
    .FontBold = P.Gras
    .FontItalic = P.Italique
    .fontname = P.Nom
    .FontUnderline = P.Souligne
    .FontSize = P.Taille
    End If
    End With
    End Sub
    Je constate qu'à chaque réouverture de cette application, l'ancienne police notamment "Tahoma" revient.
    Question:
    1- Comment enregistrer et maintenir le changement de la police choisie dans une zone de texte ?
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    as-tu essayer de voir si tu stockes l'info dans une table de paramètres et que tu exécutes la mise à jour dans une macro autoexec à l'ouverture de ta base ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonjour Jean-Philippe André !
    J'ai déjà une macro AutoExec qui se charge d'ouvrir le formulaire"frmSplashScreen" de ma base de données.
    En effet, comment dois je appeler le code dans la macro AutoExec ?
    Nom : CaptureAutExec.PNG
Affichages : 242
Taille : 17,0 Ko
    Je vous prie de bien vouloir m'en donner un exemple.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Avant ou après l'ouverture de ton splash screen, tu peux exécuter une macro qui fera la récupération de tes informations.

    Une table de paramètres peut être mise en place :
    https://jpcheck.developpez.com/tutor...es-initiation/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonjour membres du forum !
    J'ai reproduit l'exemple de table de paramètre du document de Jean-Philippe ANDRÉ https://jpcheck.developpez.com/tutor...es-initiation/.
    https://access.developpez.com/source...dlg#ChooseFont
    Pourriez vous m'indiquer comment pourrais-je concilier le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function GetParam(strWhat As String, strAs As String) As Variant
    Select Case LCase(strAs)
    Case "int":
    GetParam = CInt(Nz(DLookup("valeur", "_PARAMS_", "intitule='" & strWhat & "'"), 0))
    Case "dt"
    GetParam = CDate(Nz(DLookup("valeur", "_PARAMS_", "intitule='" & strWhat & "'"), #1/1/1950#))
    Case "db"
    GetParam = CDbl(Nz(DLookup("valeur", "_PARAMS_", "intitule='" & strWhat & "'"), 0))
    Case Else
    GetParam = Nz(DLookup("valeur", "_PARAMS_", "intitule='" & strWhat & "'"), "")
    End Select
    End Function
    et
    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 CmdChangerPolice_Click()
    Dim P As Police
    'Recupere la police actuelle
    'pour alimenter les valeurs par
    'défaut de la boîte de dialogue
    With P
    .Barre = False
    .Couleur = Valeur.ForeColor
    .Gras = Valeur.FontBold
    .Italique = Valeur.FontItalic
    .Souligne = Valeur.FontUnderline
    .Taille = Valeur.FontSize
    .nom = Valeur.FontName
    End With
    'Affiche la boite de dialogue
    P = ChoisirPolice(Me.hwnd, P)
    'Applique la nouvelle valeur au controle
    With Valeur
    'si taille=0 alors signife annuler
    If P.Taille <> 0 Then
    .ForeColor = P.Couleur
    .FontBold = P.Gras
    .FontItalic = P.Italique
    .FontName = P.nom
    .FontUnderline = P.Souligne
    .FontSize = P.Taille
    End If
    End With
    End Sub
    Voici la capture de la table de paramètres:
    Nom : Capture_PARAMS_1.PNG
Affichages : 186
Taille : 11,9 KoNom : Capture_PARAMS_2.PNG
Affichages : 169
Taille : 9,8 Ko
    Ensuite créé un Formulaire:
    Nom : Capture_Frm_PARAMS_3.PNG
Affichages : 192
Taille : 15,8 Ko
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    tu as les valeurs suivantes à prévoir dans ta table :
    Barre = False
    .Couleur
    .Gras
    .Italique
    .Souligne
    .Taille
    .nom

    Tu peux envisager de garder les booléens comme des valeurs numériques (0 faux / 1 ou -1 = vrai)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonsoir !
    Dois-je insérer les différentes valeurs que vous me suggérez dans le champ valeur ou bien en créer d'autres en les renommant ?
    Je vous signale que j'utilise Access 2013, j'apprends la programmation.
    Merci de bien vouloir m'aider encore plus.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Oui, pour chaque élément, tu auras un enregistrement dans ta table

    exemple
    intitule / valeur
    COULEUR / 65280 (vert)

    dans ton code tu pourras utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ForeColor = GetParam("COULEUR","db")
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Salut !

    J'ai essayé d'adapter le 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
    Private Sub CmdChangerPolice_Click()
    Dim P As Police
    'Recupere la police actuelle
    'pour alimenter les valeurs par
    'défaut de la boîte de dialogue
    With P
    .Barre = False
    '.Couleur = Valeur.ForeColor
    .Couleur = GetParam("Couleur", "db")
    '.Gras = Valeur.FontBold
    .Gras = GetParam("Gras", "db")
    '.Italique = Valeur.FontItalic
    .Italique = GetParam("Italique", "db")
    '.Souligne = Valeur.FontUnderline
    .Souligne = GetParam("Souligne", "db")
    '.Taille = Valeur.FontSize
    .Taille = GetParam("Taille", "db")
    '.nom = Valeur.FontName
    .nom = GetParam("nom", "db")
    End With
    'Affiche la boite de dialogue
    P = ChoisirPolice(Me.hwnd, P)
    'Applique la nouvelle valeur au controle
    With Valeur
    'si taille=0 alors signife annuler
    If P.Taille <> 0 Then
    .ForeColor = P.Couleur
    .FontBold = P.Gras
    .FontItalic = P.Italique
    .FontName = P.nom
    .FontUnderline = P.Souligne
    .FontSize = P.Taille
    End If
    End With
    End Sub
    = Pièce jointe

    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  10. #10
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Salut !
    J'aimerais mieux comprendre la table de paramètres si vous voudriez bien me donner un exemple pratique.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  11. #11
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    J'aimerais mieux comprendre la table de paramètres si vous voudriez bien me donner un exemple pratique.
    Bonjour membres du forum !
    Comment mettre en place une table de paramètres avec ses codes Vba Access ?
    Je souhaiterais avoir si vous voudriez bien un exemple pratique afin de me permettre d'avancer.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,
    As-tu suivi le tutoriel auquel tu fais référence ?

    De ta capture d'écran j'en déduis que tu as déjà fait
    https://jpcheck.developpez.com/tutor...tiation/#LIV-B
    as-tu ajouté des valeurs dans ta table, comme indiqué en
    https://jpcheck.developpez.com/tutor...tiation/#LIV-C ?

    En fin le code VBA est-il adapté ?
    https://jpcheck.developpez.com/tutor...ation/#LIV-E-2

    Je n'ai pas Access depuis mon travail, aussi il faut avancer sur ta propre BD pour le moment
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  13. #13
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonsoir membres du forum !
    Je ne me retrouve pas dans la méthode comment stocker les différents paramètres.
    J'ai vraiment besoin de coup de mains.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    as-tu ajouté des valeurs dans ta table, comme indiqué en
    https://jpcheck.developpez.com/tutor...tiation/#LIV-C ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  15. #15
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    tu as les valeurs suivantes à prévoir dans ta table :
    Barre = False
    .Couleur
    .Gras
    .Italique
    .Souligne
    .Taille
    .nom
    Tu peux envisager de garder les booléens comme des valeurs numériques (0 faux / 1 ou -1 = vrai)
    Bonjour Jean-Philippe André !
    Dans votre post ci dessus, voudriez vous me suggérer d'ajouter un champ dans la table pour chacune des valeurs ci dessus ?
    A+
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  16. #16
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Oui, pour chaque élément, tu auras un enregistrement dans ta table

    exemple
    intitule / valeur
    COULEUR / 65280 (vert)

    dans ton code tu pourras utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ForeColor = GetParam("COULEUR","db")
    Veuillez m'indiquer à quel niveau du code dois je prévoir le code ci dessus.
    Veuillez m'aider avec un exemple s'il vous plait.
    A+
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  17. #17
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    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 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour morobaboumar, Jean-Philippe André,

    Voici une façon de faire ce que tu veux avec le code de ton post # 1.

    Premièrement tu dois modifier la fonction "ChoisirPolice" ligne 84 de ton premier code. Les modifications commencent à la ligne 122 comme suit:
    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
        If resultat <> 0 Then
            CopyMemory LaPolice, ByVal pMem, Len(LaPolice)
            'Prepare le resultat
            Retour.Nom = Left(LaPolice.lfFaceName, InStr(LaPolice.lfFaceName, vbNullChar) - 1)
            'Inscrit dans la table des paramêtre le nom de la police
            SetGlobal "NomPolice", Retour.Nom
            Retour.Taille = Boite.iPointSize \ 10
            'Inscrit dans la table des paramêtre la taille de la police
            SetGlobal "TaillePolice", Retour.Taille
            Retour.Couleur = Boite.rgbColors
            'Inscrit dans la table des paramêtre la couleur de la police
            SetGlobal "CouleurPolice", Retour.Couleur
            Retour.Gras = LaPolice.lfWeight > FW_NORMAL
            'Inscrit dans la table des paramêtre le gras de la police
            SetGlobal "GrasPolice", Retour.Gras
            Retour.Italique = LaPolice.lfItalic
            'Inscrit dans la table des paramêtre l'italique de la police
            SetGlobal "ItaliquePolice", Retour.Italique
            Retour.Souligne = LaPolice.lfUnderline
            'Inscrit dans la table des paramêtre le souligné de la police
            SetGlobal "SoulignePolice", Retour.Souligne
            Retour.Barre = LaPolice.lfStrikeOut
            'Inscrit dans la table des paramêtre le barré de la police
            SetGlobal "BarrePolice", Retour.Barre
         End If
    Ma table des paramètres se nomme "T_Parameter" donc si tu veux conserver le nom "_PARAMS_" pour ta table il faudra que tu modifies partout dans les codes qui vont suivre. Tu dois avoir les lignes suivantes dans la table de paramètres:
    BarrePolice
    CouleurPolice
    GrasPolice
    ItaliquePolice
    NomPolice
    SoulignePolice
    TaillePolice

    Il faut modifier la fonction GetParam pour ajouter la valeur boolen pour modifier les valeurs gras, souligné et italique comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function GetParam(strWhat As String, strAs As String) As Variant
    Select Case LCase(strAs)
        Case "int":
            GetParam = CInt(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case "dt"
            GetParam = CDate(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case "db"
            GetParam = CDbl(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case "bo"
            GetParam = CBool(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case Else
            GetParam = DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'")
    End Select
    End Function
    Pour le bouton qui modifie les paramètres il n'y a pas de modification. Tu dois ajouter sur l'événement "Form_Load" du formulaire le code suivant:
    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
    Private Sub Form_Load()
    On Error GoTo gestion_err
     
        With lbl_Texte
            .ForeColor = GetParam("CouleurPolice", "db")
            .FontItalic = GetParam("ItaliquePolice", "bo")
            .FontName = GetParam("NomPolice", "str")
            .FontUnderline = GetParam("SoulignePolice", "bo")
            .FontSize = GetParam("TaillePolice", "int")
            .FontBold = GetParam("GrasPolice", "bo")
        End With
    Sortie:
    Exit Sub
    gestion_err:
        MsgBox Err.Description & Chr(13) & "Erreur # " & Err.Number
        Resume Sortie
    End Sub
    C'est ce code qui ira récupérer les paramètres que l'utilisateur aura choisi.

    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

  18. #18
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Salut Robert1957 !
    Merci d’avance !
    1°) - J’ai effectué les modifications telle que suggérée : » Premièrement tu dois modifier la fonction "ChoisirPolice" ligne 84 de ton premier code. Les modifications commencent à la ligne 122 ».
    2°) Renommé la table avec « T_Parameter «
    3°) – Dois-je ajouter de nouveaux champs avec les noms suivants :
    BarrePolice
    CouleurPolice
    GrasPolice
    ItaliquePolice
    NomPolice
    SoulignePolice
    TaillePolice ?

    Sinon, je ne comprends pas bien l’explication suivante :

    Tu dois avoir les lignes suivantes (vouliez dire lignes oubien champs) dans la table de paramètres :
    BarrePolice
    CouleurPolice
    GrasPolice
    ItaliquePolice
    NomPolice
    SoulignePolice
    TaillePolice.
    Je vous envoie les pièces afin de constater mes erreurs:
    Nom : CaptureTableDeParametresErr1.PNG
Affichages : 133
Taille : 38,7 Ko
    Nom : CaptureTableDeParametresErr2.PNG
Affichages : 139
Taille : 18,4 Ko
    Nom : CaptureTableDeParametresErr3.PNG
Affichages : 147
Taille : 18,4 Ko
    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  19. #19
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    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 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour morobaboumar,

    Je crois que c'est un problème de vocabulaire. Ajouter des champs dans une table veut dire ajouter des colonnes. Dans l'exemple ici les champs sont Intitule, Valeur et Description. Ajouter des lignes ou des enregistrements veut dire ceci:
    Nom : Lignes.PNG
Affichages : 151
Taille : 23,4 Ko

    Pour faire fonctionner le formulaire il faut dans le module "MduBoiteDialoguePolice" ce 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
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    Option Compare Database
    Option Explicit
     
    Public Type Police
      Nom As String
      Taille As Long
      Souligne As Boolean
      Italique As Boolean
      Gras As Boolean
      Barre As Boolean
      Couleur As Long
    End Type
     
    Const LOGPIXELSY = 90
    Const FW_NORMAL = 400
    Const FW_GRAS = 700
    Const DEFAULT_CHARSET = 1
    Const OUT_DEFAULT_PRECIS = 0
    Const CLIP_DEFAULT_PRECIS = 0
    Const DEFAULT_QUALITY = 0
    Const DEFAULT_PITCH = 0
    Const FF_ROMAN = 16
    Const CF_PRINTERFONTS = &H2
    Const CF_SCREENFONTS = &H1
    Const CF_BOTH = (CF_SCREENFONTS Or CF_PRINTERFONTS)
    Const CF_EFFECTS = &H100&
    Const CF_FORCEFONTEXIST = &H10000
    Const CF_INITTOLOGFONTSTRUCT = &H40&
    Const CF_LIMITSIZE = &H2000&
    Const CF_NOSCRIPTSEL = &H800000
    Const REGULAR_FONTTYPE = &H400
    Const LF_FACESIZE = 32
    Const GMEM_MOVEABLE = &H2
    Const GMEM_ZEROINIT = &H40
     
     
     
    Private Type CHOOSEFONT
            lStructSize As Long
            hwndOwner As Long
            hdc As Long
            lpLogFont As Long
            iPointSize As Long
            flags As Long
            rgbColors As Long
            lCustData As Long
            lpfnHook As Long
            lpTemplateName As String
            hInstance As Long
            lpszStyle As String
            nFontType As Integer
            MISSING_ALIGNMENT As Integer
            nSizeMin As Long
            nSizeMax As Long
    End Type
    Private Type LOGFONT
      lfHeight As Long
      lfWidth As Long
      lfEscapement As Long
      lfOrientation As Long
      lfWeight As Long
      lfItalic As Byte
      lfUnderline As Byte
      lfStrikeOut As Byte
      lfCharSet As Byte
      lfOutPrecision As Byte
      lfClipPrecision As Byte
      lfQuality As Byte
      lfPitchAndFamily As Byte
      lfFaceName As String * 31
    End Type
     
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
    ByVal nIndex As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function CHOOSEFONT Lib "comdlg32.dll" Alias "ChooseFontA" (pChoosefont As CHOOSEFONT) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
     
     
    Public Function ChoisirPolice(Handle As Long, PoliceParDefaut As Police) As Police
        Dim Boite As CHOOSEFONT, LaPolice As LOGFONT, hMem As Long, pMem As Long
        Dim resultat As Long, Retour As Police
        '*****************************************
        'definit la police par defaut à afficher
        LaPolice.lfStrikeOut = PoliceParDefaut.Barre
        LaPolice.lfWeight = IIf(PoliceParDefaut.Gras, FW_GRAS, FW_NORMAL)
        LaPolice.lfItalic = PoliceParDefaut.Italique
        LaPolice.lfUnderline = PoliceParDefaut.Souligne
        LaPolice.lfHeight = -PoliceParDefaut.Taille * GetDeviceCaps(GetDC(Handle), LOGPIXELSY) / 72
        If PoliceParDefaut.Nom = "" Then PoliceParDefaut.Nom = "Tahoma"
        LaPolice.lfFaceName = PoliceParDefaut.Nom & vbNullChar  'Nom de la police par defaut
        '******************************************
        ' Creer une structure LOGFont en memoire.
        hMem = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(LaPolice))
        'Verouille et recupere le pointeur vers la structure
        pMem = GlobalLock(hMem)
        'Copie la structure
        CopyMemory ByVal pMem, LaPolice, Len(LaPolice)
        'Initialise la boite de dialogue
        Boite.lStructSize = Len(Boite)
        Boite.hwndOwner = Handle
        'Affecte la police par defaut
        Boite.lpLogFont = pMem
        'defini la taille (10*La taille de la police)
        Boite.iPointSize = 120 'PoliceParDefaut.Taille * 10
        'Personalise la boite
        Boite.flags = CF_BOTH Or CF_EFFECTS Or CF_FORCEFONTEXIST Or _
           CF_INITTOLOGFONTSTRUCT Or CF_LIMITSIZE Or _
           CF_NOSCRIPTSEL
        'Fixe la couleur
        Boite.rgbColors = PoliceParDefaut.Couleur
        Boite.nFontType = REGULAR_FONTTYPE
        'Definit les tailles possibles
        Boite.nSizeMin = 6
        Boite.nSizeMax = 72
        'Ouvre la boite
        resultat = CHOOSEFONT(Boite)
        If resultat <> 0 Then
            CopyMemory LaPolice, ByVal pMem, Len(LaPolice)
            'Prepare le resultat
            Retour.Nom = Left(LaPolice.lfFaceName, InStr(LaPolice.lfFaceName, vbNullChar) - 1)
            'Inscrit dans la table des paramêtre le nom de la police
            SetGlobal "NomPolice", Retour.Nom
            Retour.Taille = Boite.iPointSize \ 10
            'Inscrit dans la table des paramêtre la taille de la police
            SetGlobal "TaillePolice", Retour.Taille
            Retour.Couleur = Boite.rgbColors
            'Inscrit dans la table des paramêtre la couleur de la police
            SetGlobal "CouleurPolice", Retour.Couleur
            Retour.Gras = LaPolice.lfWeight > FW_NORMAL
            'Inscrit dans la table des paramêtre le gras de la police
            SetGlobal "GrasPolice", Retour.Gras
            Retour.Italique = LaPolice.lfItalic
            'Inscrit dans la table des paramêtre l'italique de la police
            SetGlobal "ItaliquePolice", Retour.Italique
            Retour.Souligne = LaPolice.lfUnderline
            'Inscrit dans la table des paramêtre le souligné de la police
            SetGlobal "SoulignePolice", Retour.Souligne
            Retour.Barre = LaPolice.lfStrikeOut
            'Inscrit dans la table des paramêtre le barré de la police
            SetGlobal "BarrePolice", Retour.Barre
         End If
        'libere la memoire
        resultat = GlobalUnlock(hMem)
        resultat = GlobalFree(hMem)
        ChoisirPolice = Retour
    End Function
    La différence avec l'ancien code est que l'on va enregistrer les modifications de "Font" dans la table des paramètres ce qui est fait par la Sub SetGlobal à la ligne 127, 130 etc...

    Le module "MduTableDeParamètres" doit contenir ceci:
    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
    Option Compare Database
    Option Explicit
     
    Public Function GetParam(strWhat As String, strAs As String) As Variant
    Select Case LCase(strAs)
        Case "int":
            GetParam = CInt(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case "dt"
            GetParam = CDate(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case "db"
            GetParam = CDbl(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case "bo"
            GetParam = CBool(DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'"))
        Case Else
            GetParam = DLookup("Valeur", "T_Parameter", "Intitule='" & strWhat & "'")
    End Select
    End Function
    Public Sub SetGlobal(strWhat As String, strValue As Variant)
        CurrentDb.Execute "UPDATE T_Parameter SET valeur = '" & strValue & "' WHERE intitule='" & strWhat & "'"
    End Sub
    Ce qui permet d'enregistrer ou de récupérer dans la table des paramètres.

    Maintenant dans le formulaire "T_Parameter" voici le 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
    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
    Option Explicit
     
    Private Sub CmdChangerPolice_Click()
        Dim P As Police
        'Recupere la police actuelle
        'pour alimenter les valeurs par
        'défaut de la boîte de dialogue
        With P
            .Barre = False
            .Couleur = Lbl_Texte.ForeColor
            .Gras = Lbl_Texte.FontBold
            .Italique = Lbl_Texte.FontItalic
            .Souligne = Lbl_Texte.FontUnderline
            .Taille = Lbl_Texte.FontSize
            .Nom = Lbl_Texte.FontName
        End With
        'Affiche la boite de dialogue
        P = ChoisirPolice(Me.hwnd, P)
        'Applique la nouvelle valeur au controle
        With Lbl_Texte
        'si taille=0 alors signife annuler
            If P.Taille <> 0 Then
                .ForeColor = P.Couleur
                .FontBold = P.Gras
                .FontItalic = P.Italique
                .FontName = P.Nom
                .FontUnderline = P.Souligne
                .FontSize = P.Taille
            End If
        End With
        Me.Recalc
    End Sub
     
    Private Sub CmdFERMER_Click()
    On Error GoTo Err_CmdFERMER_Click
     
     
        If Me.Dirty Then Me.Dirty = False
        DoCmd.Close
     
    Exit_CmdFERMER_Click:
        Exit Sub
     
    Err_CmdFERMER_Click:
        MsgBox Err.Description
        Resume Exit_CmdFERMER_Click
     
    End Sub
     
    Private Sub Form_Load()
    On Error GoTo gestion_err
     
        With Lbl_Texte
            .ForeColor = GetParam("CouleurPolice", "db")
            .FontItalic = GetParam("ItaliquePolice", "bo")
            .FontName = GetParam("NomPolice", "str")
            .FontUnderline = GetParam("SoulignePolice", "bo")
            .FontSize = GetParam("TaillePolice", "int")
            .FontBold = GetParam("GrasPolice", "bo")
        End With
    Sortie:
    Exit Sub
    gestion_err:
        MsgBox Err.Description & Chr(13) & "Erreur # " & Err.Number
        Resume Sortie
    End Sub
    Il faut obligatoirement que les enregistrements :
    BarrePolice
    CouleurPolice
    GrasPolice
    ItaliquePolice
    NomPolice
    SoulignePolice
    TaillePolice
    soient existants dans la table.

    Il faudrait aussi penser à une gestion pour la première utilisation parce que si la table ne contient pas de données pour les enregistrements "CouleurPolice" et autres il va y avoir une erreur lors de l'ouverture du formulaire "T_Parameter".

    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

  20. #20
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonjour Robert1957 !
    Quel bonheur incommensurable !
    Je mets en pratique vos suggestions (aides) encourageantes.
    Ensuite, je vous reviens.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Comment activer une cellule après avoir copié une image ?
    Par ESVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2016, 23h36
  2. Réponses: 1
    Dernier message: 22/07/2011, 19h46
  3. [FOP][Java] comment utiliser une police
    Par elzedo dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/12/2006, 18h40
  4. Comment fermer une popup après un certains temps ?
    Par magic8392 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/10/2005, 12h06
  5. comment vider une table de tous ses enregistrements ?
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/07/2005, 10h19

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