Générer des identifiants uniques, Excel VBA

Générer des identifiants uniques, Excel VBA

Voici une explication détaillée du code VBA pour générer des identifiants uniques dans Excel.
Objectif :
Nous souhaitons générer des identifiants uniques dans Excel à l’aide de VBA. Ces identifiants peuvent être utilisés pour diverses applications, comme l’identification des enregistrements dans une base de données, le suivi des éléments en inventaire, ou l’attribution d’un identifiant aux utilisateurs dans un système.
Explication détaillée :
Dans le code suivant, nous allons créer une procédure qui génère des identifiants uniques basés sur la date actuelle, un préfixe et un numéro séquentiel.
1. Préfixe : Nous utiliserons un préfixe qui rendra l’ID plus significatif. Par exemple, « USR » pour les utilisateurs ou « INV » pour les éléments d’inventaire.
2. Composant basé sur la date : Nous allons incorporer la date actuelle dans l’ID, ce qui le rendra dépendant de la date.
3. Numéro séquentiel : Un compteur garantira que l’ID est unique dans la journée. Chaque fois que nous générons un ID, le compteur sera incrémenté.
Code VBA

Sub GenererIDUnique()
    Dim prefixe As String
    Dim composantDate As String
    Dim compteur As Long
    Dim idUnique As String
    Dim derniereLigne As Long
    Dim colonneID As Long
    ' Définir la colonne où les ID seront stockés (par exemple, la colonne A)
    colonneID = 1  ' Cela correspond à la colonne A
    ' Définir le préfixe pour l'ID unique (par exemple, "USR" pour un utilisateur)
    prefixe = "USR-"
    ' Obtenir la date actuelle au format yyyy-mm-dd
    composantDate = Format(Date, "yyyy-mm-dd")
    ' Trouver la dernière ligne avec des données dans la colonne (ajuster si votre feuille utilise d'autres colonnes)
    derniereLigne = Cells(Rows.Count, colonneID).End(xlUp).Row
    ' Vérifier s'il y a déjà des ID pour la date d'aujourd'hui
    compteur = 1
    If derniereLigne > 1 Then
        ' Boucler à travers la colonne pour trouver l'ID le plus récent et incrémenter le compteur
        Do While Cells(derniereLigne, colonneID).Value Like prefixe & composantDate & "-" & Format(compteur, "0000")
            compteur = compteur + 1
            derniereLigne = derniereLigne - 1
        Loop
    End If
    ' Générer l'ID unique avec le préfixe, la date et le compteur
    idUnique = prefixe & composantDate & "-" & Format(compteur, "0000")
    ' Inscrire l'ID unique dans la prochaine ligne vide de la colonne d'ID
    Cells(derniereLigne + 1, colonneID).Value = idUnique
    ' Afficher un message à l'utilisateur
    MsgBox "ID Unique Généré : " & idUnique, vbInformation, "ID Unique Généré"
End Sub

Explication détaillée du code
1. Définition des variables :

  • prefixe : C’est une chaîne constante qui sera utilisée comme première partie de l’ID. Par exemple, « USR- » pour les ID liés aux utilisateurs.
  • composantDate : Cette variable contient la date actuelle sous le format yyyy-mm-dd, ce qui permet de rendre l’ID sensible à la date.
  • compteur : Ce compteur sert à générer des numéros séquentiels pour les ID générés au cours de la même journée.
  • derniereLigne : Cette variable est utilisée pour trouver la dernière ligne de la colonne où les IDs sont stockés. Cela permet de savoir où insérer le nouvel ID unique.
  • colonneID : Cette variable définit la colonne où les IDs seront générés. Dans cet exemple, elle est réglée sur 1, ce qui correspond à la colonne A.

2. Obtention de la date actuelle :

  • Format(Date, "yyyy-mm-dd") permet de récupérer la date actuelle sous le format yyyy-mm-dd. Cela rend l’ID sensible à la date à laquelle il est généré.

3. Trouver la dernière ligne :

  • Cells(Rows.Count, colonneID).End(xlUp).Row permet de trouver la dernière ligne dans la colonne colonneID contenant des données. Cela permet de déterminer où insérer le nouvel ID unique.

4. Vérification des ID existants :

  • Le code vérifie s’il existe déjà des ID générés pour la même journée dans la colonne. Il le fait en parcourant la colonne à partir de la dernière ligne. Il vérifie si l’ID d’aujourd’hui avec le préfixe et le compteur existe déjà. Si c’est le cas, le compteur est incrémenté et la boucle continue jusqu’à ce qu’un ID unique soit trouvé.

5. Génération de l’ID unique :

  • Une fois un ID unique trouvé, l’ID est généré en combinant le prefixe, le composantDate et le compteur. Le compteur est formaté pour garantir qu’il ait toujours quatre chiffres (par exemple 0001, 0002, etc.).

6. Insertion de l’ID unique :

  • L’ID unique est ensuite inscrit dans la première ligne vide de la colonne d’ID. La ligne suivante est déterminée par Cells(derniereLigne + 1, colonneID).Value = idUnique.

7. Message à l’utilisateur :

  • Un message s’affiche pour informer l’utilisateur que l’ID unique a bien été généré.

Personnalisations possibles :

  • Préfixe : Vous pouvez modifier le préfixe prefixe selon vos besoins, par exemple « INV » pour les éléments d’inventaire ou « ORD » pour les commandes.
  • Format de la date : Vous pouvez changer le format de la date pour l’adapter à vos préférences. Par exemple, Format(Date, « mmddyyyy« ) si vous préférez un autre format.
  • Colonne et plage : Si vous souhaitez générer les IDs dans une autre colonne ou une autre feuille, vous pouvez ajuster la variable colonneID ou spécifier une plage particulière.

Exemple de sortie :
Si vous exécutez la macro le 27 mars 2025, les IDs générés pourraient ressembler à ceci :
USR-2025-03-27-0001
USR-2025-03-27-0002
USR-2025-03-27-0003
Conclusion :
Ce script VBA est une manière simple et efficace de générer des identifiants uniques dans Excel. Il utilise la date actuelle, un compteur séquentiel, et un préfixe personnalisable pour garantir que les IDs soient significatifs et non répétitifs. Vous pouvez facilement adapter ce script à vos besoins spécifiques en modifiant le format de l’ID ou en ajoutant des composants supplémentaires (comme un horodatage ou un numéro aléatoire).

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x