Incrementer un numéro suivant l'année, remise à zéro

  • Initiateur de la discussion Initiateur de la discussion nak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nak

XLDnaute Occasionnel
Bonjour à tous,

J'utilise le code suivant pour incrémenter des numéros de série :
Sheets("Feuil1").Range("A1").Value = (Right(Year(Date), 2) & Right([max(Feuil2!a1:a65000)], 4)) + 1

Les numéros se composent en 6 chiffres. Les deux premiers pour l'année en cours, les 4 derniers pour une incrémentation en +1 (110001 pour le premier de l'année 2011, 110002, 110003,...).
Le code écrit les deux derniers chiffres de l'année en cours + le plus grand nombre des 4 derniers chiffres présent en feuille 2 dans la cellule Feuil1!A1.

Ce code fonctionne correctement mais j'aimerais le faire évoluer de façon à remettre à 0001 les quatre derniers chiffres lorsque je change d'année (premier numéro de 2012 = 120001).

Pouvez vous m'aider SVP ?

Merci
 

Pièces jointes

Dernière édition:
Re : Incrementer un numéro suivant l'année, remise à zéro

Je vous ai sollicité trop vite, je viens de trouver la solution.
Private Sub CreNum_Click()
If (Right(Year(Date), 2) = Left([max(Feuil2!a1:a65000)], 2)) Then Call anneecours
If (Right(Year(Date), 2) <> Left([max(Feuil2!a1:a65000)], 2)) Then Call nouvelleannee
End Sub

Sub anneecours()
Sheets("Feuil1").Range("A1").Value = (Right(Year(Date), 2) & Right([max(Feuil2!a1:a65000)], 4)) + 1
End Sub

Sub nouvelleannee()
Sheets("Feuil1").Range("A1").Value = (Right(Year(Date), 2) & Right([min(Feuil2!a1:a65000)], 4))
End Sub

Je ne sais pas si c'est la solution ultime mais ça semble fonctionner... Si vous avez des remarques je suis preneur.

Merci

A+
 
Re : Incrementer un numéro suivant l'année, remise à zéro

Bonjour,

Ben non cela ne fonctinne pas 🙁
La recherche du nombre max me donne un nombre érroné car dans mon fichier j'ai plusieurs années renseignées (à partir de 98).
Il faudrait rechercher le nombre max sur l'année en cours...

Une idéee ?

Merci

A+
 
Re : Incrementer un numéro suivant l'année, remise à zéro

Bonjour,

Je suis toujours avec ma formule...
J'ai peut être une piste mais la formule me ressort une erreur :
Sub test()
With Sheets("Feuil1")
.Range("A1").Value = WorksheetFunction.VLookup(Right(Year(Date), 2 & Right([max(Feuil2!a1:a65000)], 4), 2), Sheets("Feuil2").Range("A1:A65000"), 2, False)
End With
End Sub

Pouvez vous m'aider SVP ?

Merci
 
Re : Incrementer un numéro suivant l'année, remise à zéro

Bonjour nak, le Forum,

En l'absence de réponse d'expert(e)s, voici une suggestion en pièce jointe.

Si la macro ne répond pas véritablement au besoin exprimé, peut-être apportera-t-elle un léger plus 😕.

Bon courage.
 
Dernière édition:
Re : Incrementer un numéro suivant l'année, remise à zéro

Re-bonjour, bonjour kjin 😀, bonjour Modeste 😀,

Saperlipopette 🙁 !

Il ne pleut malheureusement pas 😡... et j'avoue ne pas avoir tout compris 😡..., notamment :

- après création du n° en Feuil1 (fichier déposé par nak), comment le n° en Feuil2 est-il inscrit ? Manuellement ?

- pour quelle raison le n° en Feuil1 est-il supérieur à celui mentionné en Feuil2 ?

A bientôt 🙂 !
 
Re : Incrementer un numéro suivant l'année, remise à zéro

Bonsoir,

avec mon interprétation 🙂confused🙂
Code:
Private Sub CommandButton1_Click()
Dim DLi As Long, An As String, Fin As String, nb As Long, C As Range
    With Sheets("Feuil2")
        DLi = .Cells(Rows.Count, 1).End(xlUp).Row
        An = Left(.Cells(DLi, 1), 2): Fin = Right(.Cells(DLi, 1), 4)
        nb = CDate("31/12/" & An) - CDate("01/01/" & An)
        For Each C In .Range("A1:A" & DLi)
            If Left(C, 2) = An And Fin <= nb Then
                [A1] = C: [A1] = [A1] + 1
            Else
                [A1] = Left(C, 2) + 1 & "0000"
            End If
        Next
        .Range("A" & DLi + 1) = [A1]
        .Range("A1:A" & DLi).Sort Key1:=.Range("A1"), Order1:=xlAscending
    End With
End Sub
 

Pièces jointes

Re : Incrementer un numéro suivant l'année, remise à zéro

Bonjour à tous,

Vous n'êtes pas sympa ! Personne ne comprend ma demande ? 🙂

Bon désolé, j'essai d'expliquer une dernière fois 🙂 :
Je veux juste créer des numéros de série sans doublon.
Les quatre dernières digits sont à incrémenter sur l'année en cours. Avec une remise à 0001 en début d'année.
Les deux premières digits représentent l'année en cours.

Pourtant le plus modeste à trouvé la solution 🙂 (il est nul ce jeu de mot... encore désolé...).

Merci Modeste pour ta solution. Par contre j'ai deux petites questions à te poser :
- Dans ton fichier nous sommes d'accord que le module1 ne sert à rien ?
- Lors de la création d'un numéro tu l'ajoute en feuil1 mais également en feuil2. J'aimerais seulement l'ajouter en feuil1 car je lance une autre fonction pour l'ajouter en feuil2. Comment supprimer cette fonction dans ton code ?

Merci à tous.

😉
 
Re : Incrementer un numéro suivant l'année, remise à zéro

Bonjour-bonsoir,

Dans ton fichier nous sommes d'accord que le module1 ne sert à rien ?
Ooops, de fait il n'a rien à voir: je réfléchissais à quelque chose d'un peu semblable, j'ai fait un test ... et ne l'ai pas supprimé du fichier.

Comment supprimer cette fonction dans ton code ?
En supprimant la dernière instruction du code proposé 😛 ... Mais n'oublie pas d'ajouter les nouveaux numéros créés en feuille 2, d'une manière ou d'une autre, sinon tu risques bien d'avoir des doublons!

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour