J'ai un fichier Excel avec une commande par ligne, et je veux que chaque commande ait un identifiant unique, il y aura donc une colonne ID unique. Chaque fois que je remplis une ligne, je veux qu'Excel remplisse automatiquement la colonne ID unique pour moi. J'ai fait quelques recherches et j'ai été orienté vers les GUIDs. J'ai trouvé le code suivant :
Function GenGuid() As String
Dim TypeLib As Object
Dim Guid As String
Set TypeLib = CreateObject("Scriptlet.TypeLib")
Guid = TypeLib.Guid
' format is {24DD18D4-C902-497F-A64B-28B2FA741661}
Guid = Replace(Guid, "{", "")
Guid = Replace(Guid, "}", "")
Guid = Replace(Guid, "-", "")
GenGuid = Guid
End Function
mais je ne suis pas sûr de la manière dont je peux la mettre en œuvre. Toute aide serait grandement appréciée. Merci d'avance.
0 votes
Je ne pense pas que votre problème soit de générer un GUID. Vous avez un code fonctionnel pour cela. Vous pouvez même obtenir un GUID dans n'importe quelle cellule en lui attribuant la formule suivante
=GenGuid()
bien qu'elle change à chaque évaluation de la formule. Votre question devrait plutôt être la suivante : Comment puis-je faire en sorte qu'Excel remplisse automatiquement une cellule avec le résultat d'une fonction VBA ?1 votes
Avertissement : Le code ci-dessus ajoutera des déchets aléatoires à la fin de la chaîne : stackoverflow.com/questions/19556268/
0 votes
Ne mettez pas cette fonction dans une cellule comme une formule.
=GenGuid()
- Cela générera de nouveaux GUIDs pour chaque ligne à chaque fois que la feuille de calcul sera recalculée ! Au lieu de cela, utilisez les événements de la feuille de travail pour rechercher les modifications apportées à la feuille, et dans ce cadre, vous devrez trouver un moyen de déterminer si une ligne nouvelle/blanche est en cours d'édition ("la colonne GUID est-elle vide sur cette ligne ?"), et si c'est le cas, vous devez définir la valeur de la cellule avec le GUID généré (afin qu'elle reste statique). C'est la meilleure façon de s'assurer qu'une fois que vous avez attribué un GUID à une ligne, celle-ci conserve toujours la même valeur.