Generer numéro unique et non utiliser

Bonjour,

Je voudrais inventorier du matériel. Sauf qu'une partie est déjà répertorier.

Ainsi j'aimerais savoir comment avoir une liste avec le prochain numéro disponible.

Je m'explique. Si j'ai matériel_A CB001, matériel_B CB002, matériel_C CB003

J'aimerais avoir le CB004 qui soit proposé quand j'entre une nouvelle entrée.

Puis si j'efface le matériel_B. Le CB002 y soit proposé.

Une piste de comment débuté?

Merci

Bonsoir,

une piste :

@ bientôt

LouReeD

Bonsoir,

Merci pour l'exemple mais pourquoi tu mets i = i - 1 dans le code?

C'est i + 1 normalement vu que c'est For i = 1 To nbval ?

Bonjour,

Joins un fichier représentatif.

Cdlt.

Voilà le code

Mais j'ignore pourquoi avec i - 1 ça fonctionne correctement mais pas avec i + 1

Sub tutrouve()

Dim nbval As Variant
Dim incremente As Variant
Dim i As Variant
Dim incremente_resultat As Variant
Dim laligne As Variant

nbval = Range("b1").Value
incremente = 0
incremente_resultat = 1
laligne = 0
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
For i = 1 To nbval
    laligne = laligne + 1
    If Range(Cells(laligne, 1), Cells(laligne, 1)).Value <> "" Then
        incremente = incremente + 1
        If Range(Cells(laligne, 1), Cells(laligne, 1)).Value <> incremente Then
            Range(Cells(incremente_resultat, 3), Cells(incremente_resultat, 3)).Value = "trou au n° " & incremente
            incremente_resultat = incremente_resultat + 1
            laligne = laligne - 1
            i = i - 1
        End If
    Else
        i = i - 1
    End If
Next

End Sub

Le fichier c'est celui-ci

une piste :cherche maillon manquant chrono.xls @ bientôt

Bonsoir,

le i = i-1 dans une boucle For i = 1 to 20 est une aberration de codage, que j'ai utilisé lorsque je n'étais pas bon ! (pourquoi ? Cela à changer depuis ?! )

Le but était de revenir sur une ligne en avant pour reprendre le test...Mais il faudrait un codage plus récent et plus pertinent.

@ bientôt

LouReeD

Je me dis juste que si le i = 1 et je veux aller au 20, c'est plus logique de faire des i + 1 que i - 1

Disons que la boucle for to next va bien faire i = i +1

Mais comme la boucle tourne au nombre de valeur dans la colonne A, s'il y a des lignes vides :

If Range(Cells(laligne, 1), Cells(laligne, 1)).Value <> ""

alors il ne faut pas la comptabiliser comme une ligne comportant une valeur du coup l'incrémentation de i de la boucle on la diminue de 1 afin de "vraiment" boucler sur le nombre de valeurs !

C'est là que je vous dit que c'est un vieux code car maintenant j'utiliserais soit un Do Loop, soit en mettant la colonne A en variable objet Range un For Each In Next...

Ceci n'enlève rien au fait que le code peut faire ce qu'on lui demande, même si parfois ce n'est vraiment pas beau !

@ bientôt

LouReeD

Merci pour ces précisions

Bonjour,

sinon pour répondre à votre question regardez ce sujet : https://forum.excel-pratique.com/viewtopic.php?f=2&t=116968

Je pense que cela correspond à ce que vous cherchez.

@ bientôt

LouReeD

Rechercher des sujets similaires à "generer numero unique utiliser"