VBA - Numérotation des identifications non uniques

Bonjour à tous,

ceci est mon premier post ici au forum :)

J'ai quelques notions de vba mais maintenant je dois l'utiliser pour une conversion d'un fichier txt.

Ce que j'ai et ce qui fonctionne:

  • je peux lire le fichier et écrire les différents champs dans des variables (chaque ligne est un client) comme email, nom, date d'inscription etc

Ce que je dois faire, c'est créer une ID unique à partir de la date d'inscription:

Dim code, y, m, d As String

 y = CStr(Year(InscrDate))

 m = Right("0" + CStr(Month(InscrDate)), 2) 

d = Right("0" + CStr(Day(InscrDate)), 2)

code= y + m + d

Maintenant si par exemple le même jour il y a plusieurs personnes qui se sont inscrites, je dois créer une ID de la forme:

code = yyyymmdd001

code = yyyymmdd002 etc

s'il y a seulement une personne, il faut toujours ajouter 001

Quelqu'un pourrait m'aider?

Merci
Cordialement

Bonjour et bienvenue ici,

est-tu sûr de ton code ? Fonctionne-t-il en l'état actuel des choses pour générer ton code yyyymmdd ?

Cela fonctionnerait-il ?

Dim code As String

code= format(InscrDate, "yyyymmdd")

Pour le compteur, je pense qu'il faudrait que le code aille vérifier dans ton fichier Excel le nombre de valeurs égales à inscrDate au format yyymmdd dans la colonne appropriée (fonction countif) et rajouter 1, au format "000".

Edit : Oups, parenthèses oubliées.

Bonjour,

merci pour la réponse rapide.

Oui, ton code donne le même résultat

code = Format((InscrDate), "yyyymmdd")

Le problème est que la source est un fichier .txt et mon script lit le fichier ligne par ligne:

Open Filename For Input As #1

Do Until EOF(1)

Line Input #1, textLine

content = Split(textLine, ";")

For Each element In content

If (element = "") Then element = ""

Next element

Nom = content(1)

InscrDate = content (2)

L'autre question était : ton code fonctionnait ? Parce que l'histoire du y + m + d, j'y crois moyennement. Et ça m'intéresserait de savoir.

Après, si tu donnes des bribes de code au compte-goutte, ça va être difficile de t'apporter une aide appropriée.

Il y a plusieurs solutions à priori.
- Stocker les codes dans un tableau en mémoire au fur et à mesure et incrémenter si en passant sur une ligne il trouve que le code existe déjà. (je ne sais pas vraiment faire)
- Importer toutes tes données dans ton fichier Excel et créer les codes une fois que toutes tes données sont chargées (c'est plus facile à faire, mais sacrément moins logique ...)
- Certains ici te diraient que PowerQuery ferait tout ceci les doigts dans le nez.
- ...

Oui mon code fonctionne aussi.

je pense la solution de stocker dans un tableau serait la bonne , mais je ne sais non plus le faire.

Ppowerquery n'est pas une solution. je dois le faire en vba

Ah oui, je viens de tester et ça fonctionne bien avec les +. On en apprend tous les jours !

D'autres pourront sans doute t'aider alors.
Si tu as la possibilité d'éditer le titre de ton post, rajoute VBA au début. Les bonnes personnes auront plus de chance de venir voir ton sujet.

bonjour,

Après la solution sera pas forcément là même si le fichier texte est déjà trié sur la date.

Le fichier texte risque -t-il de reprendre des dates déjà travaillées auparavant ? Donc est-ce qu'il faut assurer la continuité avec l'existant coté classeur cible. Ou peut-on se contenter d'enregistrer le fichier texte sans tenir compte des antérieurs (Parce que le fichier texte est forcément plus récent) ?

C'est typiquement le genre du truc ALAKON si on n'a que des bribes de codes et des bouts de fichiers : On peut te proposer 10 solutions et à chaque fois tu vas nous dire oui mais...

A+

Rechercher des sujets similaires à "vba numerotation identifications uniques"