Microsoft 365 Numérotation en boucle selon la date

domichou

XLDnaute Nouveau
Bonjour,
J’ai fait des recherches dans le forum, mais je ne trouve pas ce que je cherche. Je ne suis pas très habile avec VBA.
J’ai un fichier de sortie d’articles. Pour chaque code d’article saisi, mon fichier affiche toutes les informations relatives à cet article ainsi que la date du jour (code de feuille).
J’aimerais être en mesure de saisir une séquence (numérotation colonne 1) en boucle par date de saisie des articles. Autrement dit, numérotation en continu tant et aussi longtemps que la date reste la même. Au changement de date, la numérotation doit recommencer à 1.
Pour illustrer ma demande, j’ai joint un fichier réduit de ce que j’aimerais avoir en colonne 1.
Merci à l’avance de votre aide. C’est vraiment très apprécié.
 

Pièces jointes

  • Numérotation.xlsm
    17.3 KB · Affichages: 3
Solution
En fait, cela revient à ce que je disais :
@domichou, attention vous avez aussi des dates avec le temps ( par ex 05/01/2023 13:19:27 ) si XL trouve 1 seconde d'écart alors ce sera une nouvelle date, que ce soit en formules ou en VBA.
J'ai enfin compris. :)
En fait le souci avec Now c'est qu'il va écrire 12/01/2023 23:35:52 et donc fatalement différent de 12/01/2023.
Changez en :
VB:
Cells(Target.Row, 6) = Date
et il mettra seulement 12/01/2023, et cela devrait marcher.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Domichou,
Un essai en PJ avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
    Application.EnableEvents = False
    Derlig = [Tableau1].Rows.Count
    If Not Application.Intersect(Target, Range("B2:B" & Derlig)) Is Nothing Then
        Cells(Target.Row, 6) = Now
    End If
    DateEnreg = [Tableau1[Date]].Item(1)
    N = 1
    [Tableau1[Séquence]].Item(1) = N
    For L = 2 To Derlig
        If [Tableau1[Date]].Item(L) <> "" Then
            If [Tableau1[Date]].Item(L) = DateEnreg Then
                N = N + 1
            Else
                DateEnreg = [Tableau1[Date]].Item(L)
                N = 1
            End If
            [Tableau1[Séquence]].Item(L) = N
        End If
    Next L
    Application.EnableEvents = True
End Sub
Attention dans votre fichier F9 n'est pas une date mais du texte. J'ai rectifié en PJ.
 

Pièces jointes

  • Numérotation.xlsm
    16.8 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Waiki,
Ca marche impec si toutes les dates sont croissantes.
Mais si une date se répète plus loin dans la séquence alors ça ne colle plus :
1673559094837.png

Tout va dépendre de l'utilisation qu'en fera Domichou.

@domichou, attention vous avez aussi des dates avec le temps ( par ex 05/01/2023 13:19:27 ) si XL trouve 1 seconde d'écart alors ce sera une nouvelle date, que ce soit en formules ou en VBA.
 

domichou

XLDnaute Nouveau
Bonsoir Domichou,
Un essai en PJ avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
    Application.EnableEvents = False
    Derlig = [Tableau1].Rows.Count
    If Not Application.Intersect(Target, Range("B2:B" & Derlig)) Is Nothing Then
        Cells(Target.Row, 6) = Now
    End If
    DateEnreg = [Tableau1[Date]].Item(1)
    N = 1
    [Tableau1[Séquence]].Item(1) = N
    For L = 2 To Derlig
        If [Tableau1[Date]].Item(L) <> "" Then
            If [Tableau1[Date]].Item(L) = DateEnreg Then
                N = N + 1
            Else
                DateEnreg = [Tableau1[Date]].Item(L)
                N = 1
            End If
            [Tableau1[Séquence]].Item(L) = N
        End If
    Next L
    Application.EnableEvents = True
End Sub
Attention dans votre fichier F9 n'est pas une date mais du texte. J'ai rectifié en PJ.
Bonsoir Sylvanu,
Je ne sais pas si c'est moi qui fait quelque chose de pas correct, mais je n'obtiens pas le résultat escompté.
Si j'ajoute un nouveau code article, la date se crée correctement, mais la séquence reprend à 1 malgré le fait que j'ai la même date que la ligne précédente, soit la date d'aujourd'hui.
Merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
En fait, cela revient à ce que je disais :
@domichou, attention vous avez aussi des dates avec le temps ( par ex 05/01/2023 13:19:27 ) si XL trouve 1 seconde d'écart alors ce sera une nouvelle date, que ce soit en formules ou en VBA.
J'ai enfin compris. :)
En fait le souci avec Now c'est qu'il va écrire 12/01/2023 23:35:52 et donc fatalement différent de 12/01/2023.
Changez en :
VB:
Cells(Target.Row, 6) = Date
et il mettra seulement 12/01/2023, et cela devrait marcher.
 

Pièces jointes

  • Numérotation (5).xlsm
    17.1 KB · Affichages: 4
Dernière édition:

domichou

XLDnaute Nouveau
En fait, cela revient à ce que je disais :

J'ai enfin compris. :)
En fait le souci avec Now c'est qu'il va écrire 12/01/2023 23:35:52 et donc fatalement différent de 12/01/2023.
Changez en :
VB:
Cells(Target.Row, 6) = Date
et il mettra seulement 12/01/2023, et cela devrait marcher.
Un gros merci, c'est exactement ce que je voulais.
Également merci pour la rapidité à laquelle tu as répondu. C'est vraiment génial.😊
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 246
Membres
103 163
dernier inscrit
Pelaez