Generation numero en fonction de la date

  • Initiateur de la discussion Initiateur de la discussion harkaon
  • 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 !

harkaon

XLDnaute Nouveau
Bonjour à tous,

J'ai une demande un peut particulière, et je n'ai trouvé la réponse nul part.
Je souhaite générer des numéros en fonction de la date du jours.

En gros dans mon fichier Excel je peut être amené à ajouter plusieurs lignes dans un même journée.
Il faut donc un numéro unique par ligne, commencent par la date du jours, suivi d'un "-" et ensuite un numéro qui s'incrémente (01, 02, 03, ...).
Mais il faut que le numéro qui s'incrémente recommence à 01 pour chaque nouvelle journée.

Avec un exemple cela sera peut etre plus clair:
Pour le 8 novembre 2010:
081110-01
081110-02
081110- x
Si on passe au 9 novembre 2010:
091110-01
091110-02
091110-x

J'ai déjà trouvé ceci pour générer la date du jours ainsi que le "-", mais il manque l'incrémentation automatique:
=CONCATENER(TEXTE(AUJOURDHUI();"jjmmaa");"-")
Merci d'avance pour votre aide.
 
Re : Generation numero en fonction de la date

Bonjour,

...en fonction de la ligne ...

A +

Merci pour ton aide, c'est déjà une belle progression même si ce n'est pas exactement ce dont j'ai besoin. Ici l'incrémentation ne recommencera pas à 01 pour une nouvelle journée.

tbft:
Je ne voit pas trop comment faire cela, sauf peut être avec des colonnes "cachées" ou alors dans une autre feuille...
 
Re : Generation numero en fonction de la date

Bonjour,
Si on ne veut pas rajouter une colonne séparée, je crois que le secret réside dans la concaténation du numéro précédent.

Voilà ce que je propose:

Sub Incrémenter()
Dim Aujourdhui As String, Jour As String, Mois As String, Annee As String
Dim MonNumero As String
Dim i As Integer, j As Integer, k As Integer
'Je réccupère la date d'aujourd'hui
'pour être sûr d'avoir un numéro au format jjmmaa-nn , je les crée moi même
If Not Len(Day(Now)) = 2 Then
Jour = "0" & Day(Now)
Else
Jour = Day(Now)
End If

If Not Len(Month(Now)) = 2 Then
Mois = "0" & Month(Now)
Else
Mois = Month(Now)
End If

Année = Mid(Year(Now), Len(Year(Now)) - 1, 2)



Aujourdhui = Jour & Mois & Année

'Comparaison avec le N° précédemment incrémenté
'Je réccupère le N° de la ligne où j'ai écris mon dernier numéro
i = 1
While Not IsEmpty(Cells(i, 10))
i = i + 1
Wend

'Initialisation
If i > 1 Then
i = i - 1
End If

'Je regarde si la date de ce numéro et la même que celle d'aujourd'hui
If Mid(Feuil1.Cells(i, 10), 1, 6) = Aujourdhui Then
'Le dernier N° a la même date qu'aujourd'hui, j'incrémente
j = Mid(Feuil1.Cells(i, 10), Len(Feuil1.Cells(i, 10)) - 1, 2)
j = j + 1
Else
'le dernier n° n'a pas la même date qu'aujourd'hui, je cré un nouveau N°
j = 1
End If

'Je crée MonNumero
If j < 10 Then
MonNumero = Aujourdhui & "-0" & j
Else
MonNumero = Aujourdhui & "-" & j
End If


'Je l'écris
If IsEmpty(Cells(1, 10)) Then
Cells(1, 10) = MonNumero
Else
Cells(i + 1, 10) = MonNumero
End If

End Sub


En espérant que ça aidera...
 
Re : Generation numero en fonction de la date

Bonjour à tous
Une procédure évènementielle placée dans le module de la feuille de saisie :
Code:
[COLOR=DarkSlateGray][B]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column = 1 And IsEmpty(Target) Then
    Cancel = True
    Target.Value = Format(Date, "ddmmyy") & "-" & Format(1 + WorksheetFunction.CountIf(Range(Cells(1, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp)), Format(Date, "ddmmyy") & "*"), "00")
  End If
End Sub[/B][/COLOR]
Un double-clic dans une cellule vide quelconque de la colonne A crée un nouveau numéro dans cette cellule.
Adaptation pour une autre colonne que la colonne A : remplacer 1 par le rang de la colonne souhaitée.
ROGER2327
#4483


Vendredi 6 As 138 (Saint Omnibus, satyre, SQ)
18 Brumaire An CCXIX
2010-W45-1T13:31:35Z
 
Dernière édition:
Re : Generation numero en fonction de la date

Bonjour à tous
Une procédure évènementielle placée dans le module de la feuille de saisie :
Code:
[COLOR=DarkSlateGray][B]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column = 1 And IsEmpty(Target) Then
    Cancel = True
    Target.Value = Format(Date, "ddmmyy") & "-" & Format(1 + WorksheetFunction.CountIf(Range(Cells(1, Target.Column), Cells(Rows.Count, Target.Column).End(xlUp)), Format(Date, "ddmmyy") & "*"), "00")
  End If
End Sub[/B][/COLOR]
Un double-clic dans une cellule vide quelconque de la colonne A crée un nouveau numéro dans cette cellule.
Adaptation pour une autre colonne que la colonne A : remplacer 1 par le rang de la colonne souhaitée.
ROGER2327
#4483


Vendredi 6 As 138 (Saint Omnibus, satyre, SQ)
18 Brumaire An CCXIX
2010-W45-1T13:31:35Z

Bonjour ROGER2327,

Ton code a l'air de faire parfaitement ce que je souhaite.
Par contre, comment l'utiliser? Je pense que c'est plus qu'un copier coller dans une cellule...
Autre petite chose, si ce n'est pas trop demander :
Je souhaiterais verrouiller la colonne ou ces numéros sont automatiquement générés. Il faudrait donc que la colonne A se remplisse dés que l'on clique dans la colonne B sur une ligne vierge.
Merci d'avance pour ton aide.
 
Re : Generation numero en fonction de la date

Re...
Toujours à placer dans le module de la feuille de saisie :
Code:
[COLOR=DarkSlateGray][B][B]Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 Then
    If IsEmpty(Target.Offset(0, -1)) Then
      With Target.Offset(0, -1)
        Application.EnableEvents = False
        Me.Unprotect
        .Value = Format(Date, "ddmmyy") & "-" & Format(1 + WorksheetFunction.CountIf(Range(Cells(1, .Column), Cells(Rows.Count, .Column).End(xlUp)), Format(Date, "ddmmyy") & "*"), "00")
        Me.Protect
        Application.EnableEvents = True
      End With
    End If
  End If
End Sub[/B][/B][/COLOR]
La saisie d'une valeur dans la colonne B crée un code dans la colonne A si la cellule correspondante est vide.
ROGER2327
#4485


Vendredi 6 As 138 (Saint Omnibus, satyre, SQ)
18 Brumaire An CCXIX
2010-W45-1T14:15:05Z
 
Dernière édition:
Re : Generation numero en fonction de la date

Suite...
Je me suis trompé dans le message précédent en collant un code erroné : je viens de le corriger.
Ci-joint un classeur d'essai.
ROGER2327
#4486


Vendredi 6 As 138 (Saint Omnibus, satyre, SQ)
18 Brumaire An CCXIX
2010-W45-1T14:27:11Z
 

Pièces jointes

Dernière édition:
Re : Generation numero en fonction de la date

Suite...
Je me suis trompé dans le message précédent en collant un code erroné : je viens de le corriger.
Ci-joint un classeur d'essai.
ROGER2327
#4486


Vendredi 6 As 138 (Saint Omnibus, satyre, SQ)
18 Brumaire An CCXIX
2010-W45-1T14:27:11Z

Je n'ai qu'une chose à dire : PARFAIT !!!!
C'est précisément ce qu'il me fallait.
Maintenant que j'ai compris comment le code marche, je vais pouvoir le modifier à ma guise.
Énorme merci ROFER2327 !!!!

Merci à tous les autres également pour votre aide.
 
Re : Generation numero en fonction de la date

Bonjour Roger2327,

Je cherche quelquechose de similaire mais d'abord je dois faire précéder mon ID de PLA et surtout qu'il n'y ait pas de tiret. Lorsque je modifie ton code pour enlever le tiret, l'ID ne s'incrémente plus 🙁. Je suis novice please help...

Voici en gros :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If IsEmpty(Target.Offset(0, -1)) Then
With Target.Offset(0, -1)
Application.EnableEvents = False
Me.Unprotect
.Value = "PLA" & Format(Date, "ddmmyy") & Format(1 + WorksheetFunction.CountIf(Range(Cells(1, .Column), Cells(Rows.Count, .Column).End(xlUp)), Format(Date, "ddmmyy") & "*"), "00")
Me.Protect
Application.EnableEvents = True
End With
End If
End If
End Sub


Je sens que c'est pas la bonne maniere pour arriver à mon résultat mais je patauge.
Merci.
 
Dernière édition:
Re : Generation numero en fonction de la date

Salut Redz et Bienvenue sur XLD🙂, le Forum


Tu as, comme tout les nouveaux arrivants, lu Lien supprimé et comme tu as pu le constater, il vaut mieux ouvrir un nouveau post, même si tu fait référence à ce Fil...et c'esttrèsbien🙂... Ton problème est certainement similaire mais peut-être pas transposable... ou alors se serait une belle coïncidence.😀
- Ouvre un nouveau post
- Met des explications les plus fidèles à ton fichier d'origine
- Joint éventuellement le fichier en question, purgé de données personnelles
et surtout n'interpelle pas un membre en particulier car, et même si je reconnais la plus-value des messages de Roger 🙂, il n'est pas le seul membre qui puisse t'aider...là...jefaitprofilbas...carilnousmanquebeaucoup... 😱 Suis ces conseils et tu auras certainement des réponses positives

Bonne Journée
 
Re : Generation numero en fonction de la date

oups désolé je suis ici car j'utilisais le fichier d'exemple qu'il avait proposé sur ce post. Raison pour laquelle je l'interpelais lui en particulier 🙂. Sinon recu 5/5 je créer un nouveau post ! "Pardonne-leurs, ils ne savent pas ce qu'ils font" 😀

Merci pour la remise au rang, 🙂 j'obtempère lol
 
- 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