Numérotation auto selon conditions

Nadia_coeur

XLDnaute Nouveau
Salut a tous, je voudrais selon conditions, numéroter des lignes. J'ai des poires, des bananes, des cornichons, des pommes, des pommes de terres, etc...
après avoir fait un tri élaboré ou auto, je voudrais, par exemple, toutes les poires sse numérotent de 1 à .... (infini)
la même chose pour chaque produits. Mon problème vient par le fait que je ai plus de sept produits et que les fonctions si, sont impossible à plus de sept.

Merci par avance de votre aide
Nadia
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Nadia, Jacques, le Forum

Je ne sais pas si Nadia souhaitait une solution en VBA, mais ce que tu proposes Jacques nécessite une scarée maintenance dans le Code lui-même si tu écris en dûr chaque article dans les Select Case...

Non, si on doit travailler en VBA, je propose plutôt une collection qui prendre en compte n'importe quelle String dans la Plage...

Bonne Fin de Week End
[ol]@+Thierry[/ol]

PS, mais je pense que Super Monique va le lui faire en Formule dans pas longtemps !!! ;) [file name=XLD_Collection_Counter.zip size=8172]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/XLD_Collection_Counter.zip[/file]
 

Pièces jointes

  • XLD_Collection_Counter.zip
    8 KB · Affichages: 34

Jacques87

XLDnaute Accro
Bonjour Thierry

Ouais, .... je pensais chercher un moyen de faire évoluer ces compteurs en fonction de la liste de fruits.
Comment aurais-je procédé, ... je ne me pose plus la question maintenant que tu nous offres, comme d'habitude, la solution idéale sur un plateau (de fruits)

Bonne soirée Thierry
 

Nadia_coeur

XLDnaute Nouveau
Bonjour Jacques,
Bonjour Thierry,

Je dois avouer que le VBA, n'est pas mon fort.
Merci de votre aide. Je vais essyé de comprendre comment mettre cette numérotation dans la colonne A et les fruits dans la colonne B (le contraire, quoi)

Je pensais en fait qu'il existait une formule pour faire cette exploit. Je vois que non.

Merci à vous deux.
Nadia
p.s. Jacques, je garde le sujet de Thierry pour l'instant.
 

Monique

Nous a quitté
Repose en paix
Bonjour,

En C2 du fichier posté par Jacques :
=NB.SI(B$2:B2;B2)

Ou bien s'il y a des lignes vides :
=SI(B2='';'';NB.SI(B$2:B2;B2))

à copier-coller vers le bas


C'est en C1 que ça démarre, pas en C1
donc en C1 puis copier-coller :
=NB.SI(B$1:B1;B1)
=SI(B1='';'';NB.SI(B$1:B1;B1))

Message édité par: monique, à: 12/03/2006 18:42
 

Monique

Nous a quitté
Repose en paix
Re,

Je ne comprends pas l'histoire des doublons.
Dans le fichier joint, tu as 2 numérotations :
ce que j'ai compris (?), avec plusieurs fois le même n°
et un n° par fruit différent
(ce ne sont plus seulement des fruits, d'ailleurs)

La différence entre VBA et formules,
je ne peux pas te la dire, je n'y connais rien en VBA [file name=FruitsNadia.zip size=2431]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/FruitsNadia.zip[/file]
 

Pièces jointes

  • FruitsNadia.zip
    2.4 KB · Affichages: 46

Nadia_coeur

XLDnaute Nouveau
Ce qui ce passait précédemment.
Lorsque j'ai posé la formule, les pommes (dans le tableau fourni par Thierry) avait deux fois le chiffre 1.
En C2 du fichier posté par Jacques :
=NB.SI(B$2:B2;B2)

Ou bien s'il y a des lignes vides :
=SI(B2='';'';NB.SI(B$2:B2;B2))

à copier-coller vers le bas

C'est en C1 que ça démarre, pas en C1
donc en C1 puis copier-coller :
=NB.SI(B$1:B1;B1)
=SI(B1='';'';NB.SI(B$1:B1;B1))

J'avais juste besion de l'avoir non pas en C, mais en A. Puis j'ai commencé l'incrémentation de la formule avec celle-ci, qui n'est autre que celle que tu m'as donnée.
=NB.SI(B$2:B2;B2)

Le problème survenait lorsque je fesais un tri auto sur les fruits. Je me retrouvait avec deux fois le n°1 pour les pommes
J'ai juste changé la formule et je l'ai placée comme les autres. Et ca marche.

Ce nouveau fichier, je vais le garder précieusement. surtout avec les solutions proposées en sus.

Merci beaucoup
Nadia
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Monique, Nadia, Jacques, le Forum

Je savais bien que tu viendrais dans ce Fil Monique je l'avais prédis le 12/03/2006 à 17:37 ;)

Pour la différence entre VBA et les Formules, la première toute simple c'est qu'Excel se débrouillait tout seul avec ses Formules dès le début, jusqu'à Excel 4, là où il est apparu des 'Macros Functions'... VBA est arrivé bien plus tard...

VBA est du Visual Basic pour Application, c'est un language de programmation assez puissant. Il permet de modeler à la carte tout ce qui n'a pas été prévu en standard par Excel et ses outils intégrés... On peut facilement palier à des lacunes (tant niveau connaissance et maîtrise d'Excel, que tant au niveau de ce qui n'existe pas dans Excel) quand on connait bien le VBA sous Excel...

Dans le cas présent, si les fonctions dont Monique a le secret peuvent répondre à ton besoin, alors il n'est pas vraiment primordial de passer par VBA... Au contraire même, il faut essayer de privilégier tout ce que l'on peut faire sans VBA !

Mais sinon, voici la même procédure modifiée pour travailler sur des 'Fruits' en colonne 'B' et reporter leur dénombrement en Colonne 'A' :

Option Explicit

Sub TheNumeroteur()
Dim Plage As Range, Cell As Range
Dim ColPlage As Collection
Dim ItemUnique As Variant
Dim Counter As Integer

Set Plage = Range(Range('B2'), Range('B65536').End(xlUp))

Set ColPlage = New Collection

For Each Cell In Plage
   
On Error Resume Next
        ColPlage.Add Cell, Cell
   
On Error GoTo 0
Next

For Each ItemUnique In ColPlage
   
For Each Cell In Plage
       
If ItemUnique = Cell Then
            Counter = Counter + 1
            Cell.Offset(0, -1) = Counter
       
End If
   
Next
    Counter = 0
Next

End Sub

Je n'ai eu à changer que deux choses :

Ici :
Set Plage = Range(Range('B2'), Range('B65536').End(xlUp))

Et ici :
Cell.Offset(0, -1) = Counter

Bonne Soirée
[ol]@+Thierry[/ol]

PS mais sinon me très chère Monique je reste toujours admiratrif de tes :
=SI(NB.SI(B$2:B2;B2)>1;'';1+MAX(D$1:D1))

Et sans oublier lr petit SummProd
=SOMMEPROD(1/NB.SI(B$2:B$17;B$2:B$17))
 

Jacques87

XLDnaute Accro
Re Nadia,
Bonsoir Monique,

En ce qui concerne la différence entre VBA et les formules, voici quelques explications :

Les formules sont des fonctions construites à la base a partir de fonctions VBA. C'est à dire que certaines fonctions sont tellement utilisées que des 'raccourcis' VBA ont été créés pour elles (un peu comme des macros).De ce fait il n'est pas necécessaire de connaître le langage VBA pour les utiliser.
Exemple :
la fonction VBA suivante

Sub somme()
For I = 1 to 5
Range('A6') = Range ('A6') + Range('A' & I)
Next I
End sub

est une fonction VBA qui te permet de calculer la somme des cellules A1 à A5
Tu pourrais très bien 'caser' cette fonction dans un coin de ton projet VBA et l'appeler chaque fois que tu en as besoin

Avec Excel, une formule fait le travail pour toi sans que tu ais besoin de connaitre le VBA

=Somme(A1:A5)

ce qui est plus parlant et plus simple (si l'on veut) que le bout de code précédent

Les formules disponibles sont plus ou moins compliquée ou complexes. En ce qui me concerne je suis très limité dans leur utilisation, il y a des pros pour cela, n'est ce pas Monique. Toutefois c'est une question d'habitude, mais chacun se cantonne dans son environnement, VBA et/ou formules, ce qui se comprend.

Voila, j'espère avoir éclairé quelque peu ta lanterne et te souhaite une bonne soirée
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Jacques,

Ah non, alors pas dacodac du tout avec cette affirmation 'Les formules sont des fonctions construites à la base a partir de fonctions VBA'

Si tu parle de certaines macros complémentaires, 'éventuellement'...

Mais certainement pas toutes les Formules Intégrées dans Excel, elle sont au moins en 'C' dans le coeur du noyau, et c'est pour ceci d'ailleurs qu'une fonction intégrée sera toujours plus rapide qu'une Custom Function sous VBA.

D'ailleurs au niveau de ma première réponse, la preuve est on ne peut plus claire puisque ces Functions Intégrées existaient avant qu'il y ait même un Module dans Excel.

Et si Ti_ passe par là, il va en remettre une couche lol !

C'est pas grave, mais il faut éviter de dire des énormités sur un Forum de Partage de Connaissance, y a pas pire qu'un Forum de Connaissances Foireuses !!! ;)

J'espère que tu prendras mon intervention sans préjugé de ma part, mais c'est juste par souci de précision et d'exactitude.

Bonne Soirée
[ol]@+Thierry[/ol]
 

Jacques87

XLDnaute Accro
Thierry

Il n'y a aucun problème
D'ailleurs, afin d'avoir des renseignements plus précis sur cette notion de Formule, pendant que tu m'écrivais ce post, je me suis permis de te contacter sur ta BAL, afin d'avoir plus de renseignements à ce sujet

Bonne soirée
 

Discussions similaires