VBA - Forcer un certain nombre de 0 devant un nombre

Bonjour à tous,

Je me creuse la tête depuis plusieurs heures et je me suis rappelé de l'adage :

"Mieux vaut un qui sait, que dix qui cherchent".

Je vous sollicite donc pour mon petit problème qui ne devrait pas en être un pour vous.

Je suis en train de créer une base de donnée pour mon entreprise. L'idée, c'est que lorsque je créé une nouvelle ligne, j'aimerais que le nom de ma référence prennent le nom de la cellule du dessus +1.

Le souci, c'est que j'ai des 0 qui me chagrinent :

ART000000203

ART000000204

ART000000205

...

...

Lorsque je passe aux dizaine, puis aux centaines, puis aux milliers, etc... mon nombre de caractère varie et cela ne me va pas.

Comment puis je faire pour incrémenter +1 à la référence du dessus tout en conservant un nombre de caractère fixe?

Merci par avance

Bonjour,

Pas besoin de VBA, une simple formule suffit, exemple votre première valeur étant en A1, en A saisissez:

="ART" &TEXTE((DROITE(A1;9)*1)+1;"000000000")

A tirer vers le bas, vous pouvez bien sûr l'inclure dans du VBA.

Cdlt

Merci pour cette réponse.

Je passe par VBA car mes feuilles sont verrouillées pour éviter que mes salariés ne modifient volontairement ou non ma base de données.

Je remplie mes données par le biais d'userform, d'où la nécessité de passer par VBA

Vous ne donnez aucune précisons concernant votre tableau de données, dans quelle colonne se trouvent ces codes article? .

Un petit fichier (sans données confidentielles) serait le bienvenu.

image

En gros, quand je lance mon UF pour créer une nouvelle référence, je viens rechercher la permière ligne vide de mon tableau, en l'occurence ici la ligne 11.

Vu que mes codes articles s'incrémente de +1 à chaque fois, j'aimerais que l'article situé en ligné 12 se nomme ART0000010.

Incrémenter, ca je sais faire, c'est pas trop difficile.

Mais pour rajouter les zéro intermédiaire, je bloque, surtout lorsque mon numéro franchi les dizaine, centaine, millier, car ca enleve à chaque fois un 0 :

- ART0000009 (6 zéros)

- ART0000010 (5 zéros).

Une idée de mon code :

Sub userform_initialize()
    x = 2                                              'première ligne du tableau
    z = x
    Do While ActiveSheet.Cells(z, 1) <> ""
        z = z + 1
    Loop
    Numart = z - 1
    LigArt = z

    MsgBox "ART000000" & Numart

End Sub

Avec ce code, lorsque j'aurai 10000 articles, le code article sera ART00000010000 et non ART0010000

Bonsoir Aurelien et le forum
Voici une solution avec un tableau structuré.
Cdt
Papy Henri

33aurelien34670.xlsm (19.49 Ko)

Bonsoir AFEH

Merci beaucoup, c'est exactement ce que je voulais.

Je ne connaissais cette façon de formater une valeur :

var = "xxx" & Format(Numart, "000000000")

J'ai adapté ton code au mieux et paf! ,ca marche.

Merci à tous

Merci
N'oubliez pas de clôturer le sujet.
Papy Henri

Rechercher des sujets similaires à "vba forcer certain nombre devant"