5 façons de générer un GUID dans Microsoft Excel

Vous avez besoin de générer un GUID dans Excel ?

GUID signifie Globally Unique Identifier (identificateur unique mondial), mais il peut aussi être appelé UUID ( Universally Unique Identifier). Il s’agit de la même chose.

Un GUID est un code de 32 caractères composé de chiffres et de lettres qui sont couramment utilisés pour identifier des éléments dans une base de données.

Les GUID sont générés de manière aléatoire, mais la probabilité de dupliquer un GUID généré de manière aléatoire est si infinitésimale que vous pouvez être sûr qu’il sera unique. Cela signifie qu’il n’est pas nécessaire de disposer d’un registre central pour garantir leur unicité.

Ce post va vous montrer comment vous pouvez générer des GUIDs aléatoires dans Excel. Obtenez votre copie du fichier utilisé dans cet article et suivez-le !

Générer un GUID avec la fonction RANDBETWEEN

Les GUID ont généralement une longueur de 128 bits et ont le format ci-dessous où les x sont des chiffres hexadécimaux.

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Ce format organise les 32 chiffres hexadécimaux en groupes de 8-4-4-4-12 caractères. Le caractère tiret est purement destiné à faciliter la lecture.

Une façon courante de générer ces chiffres hexadécimaux aléatoires dans les GUID consiste à générer des nombres décimaux aléatoires et à les convertir en hexadécimaux.

= RANDBETWEEN ( min, max )

Pour ce faire, vous pouvez utiliser la fonction RANDBETWEEN dans Excel. Cette fonction vous permet de générer un nombre entier aléatoire entre une limite supérieure min et une limite inférieure max données.

= DEC2HEX ( number, [digits] )

La fonction DEC2HEX convertit tout nombre décimal en sa représentation hexadécimale équivalente. Elle vous permet également de spécifier le nombre de chiffres à retourner. Ainsi, vous pouvez toujours renvoyer un hexadécimal de 8 ou 4 caractères.

= DEC2HEX ( RANDBETWEEN ( 0, 4294967295 ), 8 )

Une séquence aléatoire de 8 chiffres hexadécimaux peut être générée en générant un nombre aléatoire compris entre 0 et 4 294 967 295 et en convertissant le résultat en une valeur hexadécimale à l’aide de la fonction DEC2HEX dans Excel.

= DEC2HEX ( RANDBETWEEN ( 0, 65535), 4 )

De même, une séquence aléatoire de 4 chiffres hexadécimaux peut être générée en générant un nombre aléatoire entre 0 et 65535 et en le convertissant en hexadécimal.

Vous pouvez alors générer une séquence de 12 chiffres hexadécimaux en combinant une séquence de 8 et de 4.

=LOWER(CONCATENATE(
    DEC2HEX(RANDBETWEEN(0,4294967295),8),"-",
    DEC2HEX(RANDBETWEEN(0,65535),4),"-",
    DEC2HEX(RANDBETWEEN(0,65535),4),"-",
    DEC2HEX(RANDBETWEEN(0,65535),4),"-",
    DEC2HEX(RANDBETWEEN(0,4294967295),8),
    DEC2HEX(RANDBETWEEN(0,65535),4)
))

La formule ci-dessus générera la valeur complète du GUID, y compris les tirets de jonction.

La fonction CONCATENATE réunit toutes les valeurs hexagonales et le tiret pour créer le GUID complet.

La fonction LOWER peut également être utilisée dans la formule pour créer un GUID qui renvoie des lettres minuscules au lieu de lettres majuscules.

📝 Remarque: la fonction RANDBETWEEN est volatile, elle sera donc recalculée chaque fois que vous modifierez la feuille de calcul. Vous pouvez forcer le recalcul et générer un nouveau GUID en appuyant sur la touche F9.

Générer un GUID avec la fonction WEBSERVICE

WEBSERVICE est une fonction très intéressante. Elle vous permet d’appeler une adresse web et de renvoyer les données de cette adresse.

Associée à un service tel que uuidtools, la fonction WEBSERVICE vous donnera la possibilité de créer vos GUIDs.

https://www.uuidtools.com/api/generate/v4/count/5

Le générateur de GUID en ligne uuidtools est une API gratuite que vous pouvez utiliser pour générer des GUID et des UUID. L’URL ci-dessus renverra une liste de 5 GUIDs générés. Vous pouvez remplacer le chiffre 5 dans l’URL par le nombre de votre choix.

= WEBSERVICE ( "https://www.uuidtools.com/api/generate/v4/count/5" )

La formule ci-dessus renverra une liste de GUIDs.

["736f07e7-12e1-4d9f-aa83-762916761eba","c516d5f6-f816-448c-a2f7-dcb308c02393","04ce3d1b-d4f0-4c41-88cd-b90f7deacde4","960445e7-4e04-4bc1-a220-a7e6eb45fde0","d34c0e8b-11fa-4410-a673-2412aea39569"]

La fonction renvoie une seule chaîne de texte entre crochets qui est une liste de GUIDs séparés par des virgules.

Cette liste de GUIDs séparés par des virgules peut facilement être analysée dans des cellules séparées en utilisant la fonction TEXTSPLIT.

= TEXTSPLIT ( C2, , {""",""","[","]",""""}, TRUE )

La formule ci-dessus divisera la liste des GUID séparés par des virgules en fonction de ces ensembles de caractères « , », [, ],  » dans cet ordre.

TEXTSPLIT divise ces GUID en lignes et supprime également les cellules vides pour ne laisser que les GUID, chacun dans sa propre cellule.

Générer un GUID avec Power Query

Power Query charge et transforme vos données. Il dispose également d’un moyen assez simple de créer des GUID.

Le langage de formule de Power Query comprend une fonction Text.NewGuid qui génère un GUID pour vous.

Cela signifie que lorsque vous importez ou transformez un ensemble de données, vous pouvez ajouter une colonne de GUIDs.

Vous pouvez importer vos données dans Power Query en suivant ces étapes.

  1. Sélectionnez votre table.
  2. Allez dans l’onglet Données.
  3. Cliquez sur la commande From Table/Range.

Maintenant le jeu de données est dans l’éditeur Power Query. Allez sur l’onglet Add Column et appuyez sur le bouton Custom Column dans la section General.

Cela ouvrira l’éditeur de formule de colonne personnalisée.

#table({"GUID"},{{Text.NewGuid()}})[GUID]{0}

Donnez un nom à votre nouvelle colonne et saisissez la formule ci-dessus dans le champ Formule de la colonne personnalisée, puis appuyez sur le bouton OK.

Cette partie #table({"GUID"},{{Text.NewGuid()}}) crée une table avec une seule colonne nommée GUID et une seule ligne contenant une valeur GUID.

Ensuite, [GUID]{0} récupère la troisième ligne de la colonne GUID. En d’autres termes, la valeur GUID est extraite de la table qui a été créée.

⚠️ A ttention: Malheureusement, vous ne pouvez pas simplement utiliser la formule =Text.NewGuid(), cela aura pour conséquence que chaque ligne aura le même GUID lorsqu’elle sera chargée dans Excel. La création d’un tableau #table() avec la formule semble fonctionner et donne des GUIDs différents sur les lignes.

Cela crée une nouvelle colonne dans l’aperçu des données avec une valeur GUID différente dans chaque ligne.

Ceci peut ensuite être rechargé dans Excel. Allez dans l’onglet Accueil de l’éditeur Power Query et appuyez sur le bouton Fermer et charger.

Générer un GUID avec Power Automate

Power Automate a la capacité de se connecter aux feuilles de calcul Excel enregistrées dans SharePoint ou OneDrive. Cela signifie que vous pouvez automatiser des processus impliquant Excel et d’autres applications en nuage.

Power Automate est livré avec son propre langage d’expression de flux de travail qui contient une fonction guid.

On peut l’utiliser pour créer des GUID et les ajouter à un tableau Excel.

En général, vous ne voulez pas que vos GUIDs changent, cette méthode est donc idéale car elle ajoute des valeurs statiques à Excel. Alors que les méthodes précédentes produiront des GUIDs qui changeront lorsque vous rafraîchirez Excel.

Vous pouvez facilement créer un flux simple qui ajoutera des GUID à un tableau Excel en suivant ces étapes.

  1. Allez sur https://make.powerautomate.com/ et créez un nouveau flux en utilisant le bouton déclencheur.
  2. Ajoutez l’action Ajouter une ligne dans un tableau au flux.
  3. Sélectionnez le fichier Excel et le tableau auxquels vous souhaitez ajouter vos GUID dans les menus déroulants Emplacement, Bibliothèque de documents, Fichier et Tableau.

Lorsque vous sélectionnez le tableau, une liste des colonnes du tableau apparaît dans l’action.

  1. Cliquez dans la colonne pour ajouter le GUID.
  2. Cliquez sur l’onglet Expression dans la fenêtre contextuelle.
  3. Entrez guid() dans la barre de formule.
  4. Cliquez sur le bouton Mettre à jour.
  5. Sauvez le flux.

Maintenant, lorsque vous exécutez le flux, il ajoutera un GUID à la table !

Générer un GUID avec VBA

Il se peut que vous ne souhaitiez pas enregistrer votre feuille de calcul dans le nuage pour utiliser Power Automate, mais que vous souhaitiez néanmoins disposer d’un moyen de créer des GUID statiques.

C’est là que le VBA peut être utile.

Vous pouvez créer une macro pour créer et saisir des GUID dans votre classeur sans avoir recours à un outil externe.

Allez dans l’onglet Développeur et cliquez sur la commande Visual Basic pour ouvrir l’éditeur Visual Basic. Vous pouvez également appuyer sur Alt + F11 pour ouvrir l’éditeur.

Dans l’éditeur Visual Basic, allez dans le menu Insertion et sélectionnez l’option Module. C’est là que vous pouvez ajouter le code de la macro.

Le code s’appuie sur deux fonctions et une procédure. Vous devrez copier et coller tous ces éléments dans le module.

Function randBetween(ByVal min As Long, max As Long)
    randBetween = Int(Rnd() * (max - min + 1)) + min
End Function

Cette fonction vous permet de générer un nombre aléatoire entre une valeur min et une valeur max.

Function GUID()

Dim guid1, guid2, guid3, guid4, guid5, guid6, guid7, guid8 As String

guid1 = LCase(Hex(randBetween(0, 65535)))
guid2 = LCase(Hex(randBetween(0, 65535)))
guid3 = LCase(Hex(randBetween(0, 65535)))
guid4 = LCase(Hex(randBetween(0, 65535)))
guid5 = LCase(Hex(randBetween(0, 65535)))
guid6 = LCase(Hex(randBetween(0, 65535)))
guid7 = LCase(Hex(randBetween(0, 65535)))
guid8 = LCase(Hex(randBetween(0, 65535)))

guid1 = Right(String(4, "0") & guid1, 4)
guid2 = Right(String(4, "0") & guid2, 4)
guid3 = Right(String(4, "0") & guid3, 4)
guid4 = Right(String(4, "0") & guid4, 4)
guid5 = Right(String(4, "0") & guid5, 4)
guid6 = Right(String(4, "0") & guid6, 4)
guid7 = Right(String(4, "0") & guid7, 4)
guid8 = Right(String(4, "0") & guid8, 4)

GUID = guid1 & guid2 & "-" & guid3 & "-" & guid4 & "-" & guid5 & "-" & guid6 & guid7 & guid8

End Function

La fonction ci-dessus vous permet de créer un GUID et s’appuie sur la fonction VBA randBetween() précédente pour générer les valeurs hexagonales.

Sub GenerateGUID()
Dim rng As Range

For Each rng In Selection
    rng.Value = GUID()
Next rng
End Sub

La sous-routine boucle ensuite sur chaque cellule de la plage sélectionnée et ajoute un GUID généré par la fonction VBA GUID().

Pour l’utiliser, il suffit de sélectionner la plage de cellules à laquelle vous souhaitez ajouter des valeurs GUID, puis d’exécuter la macro GenerateGUID.

Générer un GUID avec des scripts Office

Les scripts Office constituent un autre moyen d’ajouter des GUID statiques dans une plage.

Allez dans l’onglet Automate et cliquez sur la commande Nouveau script.

function main(workbook: ExcelScript.Workbook) {
  //Create a range object from selected range
  let selectedRange = workbook.getSelectedRange();
  //Get dimensions of selected range
  let rowHeight = selectedRange.getRowCount();
  let colWidth = selectedRange.getColumnCount();

  //Loop through each item in the selected range
  for (let i = 0; i < rowHeight; i++) {
    for (let j = 0; j < colWidth; j++) {
      selectedRange.getCell(i, j).setValue(guid());
    }
  }
};

function randBetween(min: number, max: number) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
};

function guid() {
  let guid1 = randBetween(0, 4294967295).toString(16).padStart(8, '0');
  let guid2 = randBetween(0, 65535).toString(16).padStart(4, '0');
  let guid3 = randBetween(0, 65535).toString(16).padStart(4, '0');
  let guid4 = randBetween(0, 65535).toString(16).padStart(4, '0');
  let guid5 = randBetween(0, 4294967295).toString(16).padStart(8, '0');
  let guid6 = randBetween(0, 65535).toString(16).padStart(4, '0');
  let guid = guid1 + '-' + guid2 + '-' + guid3 + '-' + guid4 + '-' + guid5 + guid6;
  return guid;
};

Cela ouvrira l’éditeur de code et vous pourrez y coller le code ci-dessus.

Ce code se compose de trois fonctions.

  • randBetween() est une fonction qui vous permet de générer un nombre aléatoire entre un minimum et un maximum.
  • guid() utilise la fonction randBetween() pour générer le GUID de manière similaire à la première méthode avec la fonction Excel RANDBETWEEN..toString(16) convertit le nombre aléatoire en sa valeur hexadécimale..padStart(8, ‘0’) garantit que la valeur hexadécimale est de 8 caractères.

La fonction main() effectue ensuite une boucle dans la plage sélectionnée et introduit un GUID dans chaque cellule à l’aide de la fonction guid().

Il vous suffit de sélectionner une série de cellules dans lesquelles vous souhaitez ajouter des valeurs GUID, puis d’exécuter le script.

Conclusions

Les GUID sont très couramment utilisés pour identifier de manière unique des éléments dans une base de données. Lorsque vous travaillez avec des données dans Excel, il existe plusieurs façons de générer un GUID dans Excel.

Si vous avez besoin de générer rapidement un GUID et que cela ne vous dérange pas d’utiliser un service externe, la fonction WEBSERVICE est peut-être la meilleure option.

Pour ceux qui préfèrent travailler entièrement à l’intérieur de la feuille de calcul, les méthodes RANDBETWEEN ou Power Query seront la solution. Toutefois, ces méthodes créent des GUID volatils qui changent lorsque la feuille de calcul est actualisée.

L’utilisation de Power Automate, de VBA ou de scripts Office permet de générer dans Excel des GUID qui sont statiques et ne changent pas en permanence.