VBA - Incrémentation automatique en fonction d'une série de lettres

Bonjour,

Je débute en VBA et j'ai un tableau à remplir avec des factures avec en première colonne un champ 'CODE' (cf.fichier ci-joint). Le code est une série de 3 lettres qui correspond à la liste indiquée au-dessus du tableau. Lorsque je saisis les 3 lettres d'un des codes, je souhaiterais qu'il s'incrémente de 3 chiffres supplémentaires. Par exemple, si je saisis 'DMN', j'aimerais qu'Excel me propose une série de 3 chiffres, soit '001' pour la première saisie avec ce code; puis '002' pour la seconde saisie, etc. Seulement, il y a d'autres codes issus de la liste au-dessus du tableau que j'aimerais également incrémenter de la même manière pour obtenir un résultat similaire à ce qui se présente sur l'image ci-dessous. Avez-vous des pistes à me proposer s'il vous plaît?

29exemple1.xlsm (20.73 Ko)
image

Avec le système tel que tu le présentes, tu te limites à la plage A4:A22, soit 19 codes. Après quoi il faudra "repenser" le système. Question : pourquoi ne pas mettre les codes dans un onglet séparé ? Le reste est assez facile à faire en VBA. Si on tape le code dans la cellule, le n° sera ajouté automatiquement en quittant la cellule.

J'ai mis les codes au-dessus du tableau car il y a également la signification de chaque code dans la colonne B, mais j'ai ôté les significations pour l'exemple. En fait, c'est pour que les utilisateurs du fichier aient accès directement aux significations des codes sans avoir à changer d'onglet. Je vais déjà commencer une ébauche de code.

Bonjour et bienvenue,

Un exemple dans le fichier joint.

Les données sont sous forme de tableaux (structurés).

La sélection d'un code ajoute un suffixe xxx (3 chiffres) à celui-ci en fonction de son nombre d'occurrences.

Cdlt.

104decibel.xlsm (22.26 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strCode As String

    On Error GoTo errHandler

    If Not Intersect(Target, Range("T_Données").Columns(1)) Is Nothing And Target.Count = 1 Then
        If Not IsEmpty(Target) Then
            strCode = Target.Value & Format(WorksheetFunction.CountIf(Range("T_Données").Columns(1), Target.Value & "*"), "000")
            Application.EnableEvents = False
            Target.Value = strCode
            Range("T_Données").ListObject.ListRows.Add
        End If
    End If

exitHandler:
    Application.EnableEvents = True
    Exit Sub
errHandler:
    MsgBox "Erreur : " & Err.Number & Chr(10) & Err.Description
    Resume exitHandler
End Sub

Merci pour ton aide Jean-Eric.

Cordialement

Rechercher des sujets similaires à "vba incrementation automatique fonction serie lettres"