Calcul de répétition d'occurences

Bonjour,

Dans le fichier xslx en PJ (amélioré à plusieurs reprises par un membre de ce forum que je remercie s'il me lit), j'ai besoin de mettre en place une nouvelle formule. J'ai cherché sur le net avec les fonctions de calcul de répétition d’occurrence et la fonction fréquence mais je ne trouve pas le moyen exact et efficace de répondre à mon besoin.

Mon besoin: Avoir une création automatique de référence. Ces références me servent à facturer des prestations de service. Une prestation = une mission = une référence.

Elles se construisent de la façon suivante:

XXX-N où XXX correspond au code client et N au nombre de mission réalisé pour ce client.

Dans la colonne B figure le nom du client. Dans la colonne C doit figurer la référence.

Je pense qu'il faudrait une formule qui

1. Reconnaisse le nom du client pour transformer son nom en code client

2. Compte le nombre de ligne où se client apparaît afin de connaitre le nombre de mission réalisé

3. Agrège le code client avec le nombre de mission.

Ainsi, lors que je réalise, par exemple, ma 124ème mission pour le client "Alazard", il faudrait que la référence soit ALAZ 124

Je ne suis pas sûr que cette logique soit la plus simple et je n'ai pas réussi à savoir comment faire notamment parce que j'ai une quinzaine de client et que cela est voué à évoluer.

Auriez vous une idée svp et pourriez vous m'aider?

(attention, il y a déjà pas mal de formules à droite à gauche dans le fichier. Je pense qu'il faut limiter au maximum le "déplacement" des colonnes)

Merci

Salut Matt,

quelque chose comme ceci, à coller en 'TABLO' [C11] ?

=MAJUSCULE(GAUCHE(B11;4)) & " " & NB.SI($B$1:B11;B11)

A+

Salut Matt,

quelque chose comme ceci, à coller en 'TABLO' [C11] ?

=MAJUSCULE(GAUCHE(B11;4)) & " " & NB.SI($B$1:B11;B11)

A+

Whouha!

C'est tout simplement PARFAIT

Je n'ai rien d'autre à dire que

MILLE MERCIS

Bonjour,

J'ai un soucis avec la formule

Explication:

Si je crée une ligne avec une date future (exemple 03/03/19), j'ai bien une nouvelle référence avec un numéro supérieur.

Par contre, si je classe mes colonnes, cette référence change . Ainsi, je peux travailler avec une référence, changer les classements, et obtenir la même référence pour une ligne différente

En fait, il faudrait, je pense, qu'une référence, une fois crée, ne puisse plus être modifiée (et que celle ci ait forcément un nombre plus grand que la précédente). Peut être avez-vous une meilleure idée à me proposer?

La formule actuelle est:

=MAJUSCULE(GAUCHE(B1339;4)) & " " & NB.SI($B$1:B1339;B1339)

Merci

Bonjour,

J'ai toujours ce gros souci (exposé dans le message ci-dessus)

J'ai fait "remonter" le sujet.

Mon besoin serait le suivant:

lorsqu'on ajoute ou supprime une ligne, les références déjà écrites ne doivent pas changer.

lors de reclassement les références liées à une mission ne doivent pas changer. ex: j'ai une réf GOUN 4 pour une mission faite à Nice. Si je classe mon tableau par ville, la référence va changer. Il ne faut pas qu'elle change.

J'espère que vous pourrez m'aider.

Par avance merci.

J'ai remis un fichier d'exemple en PJ. Faites un test: supprimez une ligne, ou reclassez. Vous verrez que les réf changent.

Salut Matt06,

toujours très malin de fournir un fichier... sans le mot de passe!

La solution avec formule, forcément, ne peut pas fonctionner si on commence à trier, ce qui est très légitime.

Le code ci-dessous à coller dans le module VBA de 'TABLO' crée la référence client pour tout nouveau client encodé en colonne [A], donc, à priori, avec la cellule en colonne ['B'] vide.

Si la

Sub Worksheet_Change

existe déjà, il faut joindre le code seul sans

SUB

et

END SUB

, bien sûr...

Pour tes clients existants "sous formule", il te faut sélectionner chaque référence en ['B'] et les réécrire "en dur" ce qui "écrasera" du coup la formule.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("A:A")) Is Nothing Then _
    If Target.Offset(0, 1) = "" Then Target.Offset(0, 1) = UCase(Left(Target, 4)) & " " & WorksheetFunction.CountIf(Range("A:A"), Target)
'
Application.EnableEvents = True
'
End Sub

Bonjour

Merci beaucoup pour le temps et la réponse précise

Malheureusement je suis incapable de faire ces modifications d'autant plus que je ne suis pas le créateur de la macro.

Je suis entrain de me rapprocher de l'âme charitable qui avait bien voulu me faire ça...

Merci

Rechercher des sujets similaires à "calcul repetition occurences"