Générer automatiquement des codes magasin (MGL)

Principe

Les codes magasin sont les lieux de stockage permettant de localiser les pièces dans les différents magasins (MG)

Exemple d'un casier avec 20 emplacements.

Il est intéressant de générer les 20 emplacements automatiquement avec un programme pour obtenir les informations ci-dessous.

Access - Programmation

ÉcranDescription rapide du code

  1. txt_code_format
    txt_code_format

    Cette chaîne via la zone de texte nommée txt_code_format sera analysée de façon à en extraire le nombre de caractères souhaités de chaque côté du séparateur (ici, le -).

    Vous trouverez ci-dessous le code de la procédure qui réalise cette extraction : elle est appelée dans la procédure bt_exe_defaut_Click() :

    1
    Public Function MAJcodeDefaut(sCodeFormat As String, sNum As Long, sCodeDroite As String, sNom As String, Optional ByVal sCherche As String = "-")
    2
    3
        Dim cCherche As String
    4
        Dim iPos As Integer
    5
        Dim nb0 As Integer
    6
        
    7
        Dim sGauche As String
    8
        Dim sDroite As String
    9
        
    10
        Dim sRes As String
    11
        
    12
    13
        iPos = InStr(sCodeFormat, sCherche)
    14
        If iPos > 1 Then sGauche = Left(sCodeFormat, Len(iPos) - 1) Else sGauche = ""
    15
        If iPos > 1 Then sDroite = Right(sCodeFormat, Len(sCodeFormat) - iPos) Else sDroite = ""
    16
        nb0 = Len(sDroite)
    17
           
    18
        sRes = sGauche & sCherche & Right("000" & sNum, nb0)
    19
        sNom = sRes & sCherche & sCodeDroite
    20
        
    21
        MAJcodeDefaut = sRes
    22
        
    23
        
    24
    25
    End Function
  2. txt_idCodeMGdefaut et txt_codeMGdefaut
    txt_idCodeMGdefaut et txt_codeMGdefaut

    La zone de liste txt_idCodeMGdefaut permet de sélectionner le magasin dans lequel les positions magasin vont être générées.

    La zone de texte nommée txt_codeMGdefaut affiche le nom du magasin qui peut bien sûr être plus long et différent du code.

  3. txt_ndeb
    txt_ndeb

    On va récupérer le n° qui va alimenter le nombre du masque derrière le séparateur : AA-44 sera le premier code généré

  4. Bouton Code
    Bouton Code

    Ce bouton code affiche simplement le code et le libellé de la première position magasin qui sera généré

    Code lié au bouton
    1
    Private Sub bt_exe_defaut_Click()
    2
        Dim snomMGLDefaut As String
    3
        
    4
        snomMGLDefaut = ""
    5
        Me.txt_codeMGdefaut.Value = Me.txt_idCodeMGdefaut.Column(1)
    6
            
    7
        Me.txt_codeMGLdefaut.Value = MAJcodeDefaut(Me.txt_code_format.Value, Me.txt_ndeb.Value, Me.txt_codeMGdefaut.Value, snomMGLDefaut, "-")
    8
        Me.txt_nomMGLdefaut.Value = snomMGLDefaut
    9
  5. txt_codeMGLdefaut et txt_nomMGLdefaut
    txt_codeMGLdefaut et txt_nomMGLdefaut

    Permet l'affichage visuel des codes et noms des positions magasin qui seront générées.

  6. txt_nb_A_Ajouter
    txt_nb_A_Ajouter

    Cette donnée permettra de dimensionner la boucle qui va automatiser la création des enregistrements dans la base donnée.

  7. bt_ajoute
    bt_ajoute

    Va exécuter le code générant la création des enregistrements.

    Code lié au bouton
    1
    Private Sub bt_ajoute_Click()
    2
    3
    Dim strCrit As String
    4
    Dim btrouve As Boolean
    5
    Dim i As Integer
    6
    7
    Dim t As Recordset
    8
     
    9
        Set t = CurrentDb.OpenRecordset("tbMGL", DB_OPEN_DYNASET)
    10
        For i = 1 To Me.txt_nb_A_Ajouter
    11
            t.AddNew
    12
            t!codeMGL = Me.txt_codeMGLdefaut
    13
            t!nomMGL = Me.txt_nomMGLdefaut
    14
            t!idMG = Me.txt_idCodeMGdefaut
    15
            t.Update
    16
            t.MoveLast
    17
            Me.txt_ndeb = Me.txt_ndeb + 1
    18
            Call bt_exe_defaut_Click
    19
        Next i
    20
    21
    t.Close
    22
    Set t = Nothing
    23
    24
    DoCmd.Requery
    25
    ' code permettant de chercher si un enregistrement avec un code existe déjà
    26
    'strCrit = "[codeMGL] = '" & Me.txt_codeMGLdefaut & "'"
    27
    'btrouve = ChercherEnregistrement(Me, strCrit)
    28
    29
    End Sub