Formule et code VBA pour un nombre de fois cité

Bonjour le forum

Voila je m’explique dans le classeur joint

je voudrais trouvé le chiffre le plus cité en K5 pour celui-là c’est facile MODE (B5:I17) c’la me donne le 4

pour le second en K6 le plus cité mais sans prendre en compte K5 puisque que je l’ais déjà trouvé

pour le troisième en K7 le plus cité sans prendre en compte K5 et K6 et ainsi de suite jusqu’en

K17

Le classeur====> Nombre de fois cité en dessous de l’autre .xlsx (9,7 Ko)

Cdlt

@kiss6

Bonjour Kiss6

Je ne comprend pas ton raisonnement

si je prends en B5 le chiffre, il est présent 13 fois dans la plage
ensuite il faut reprendre la variable en B5 et rechercher sur la plage - la ligne du dessus

=NB.SI($B5:$I$17;$B$5)

Ta fonction MODE() ?? n’a rien à voir dans ta demande
ou alors, j’ai rien compris (mais cela arrive de plus en plus, le cerveau ne suit plus avec les années)

1 J'aime

Re,
Bonjour @Mimimathy

Non ne pas tenir compte de la fonction =NB.SI($B5:$I$17;$B$5)

C’était juste des essaie pour essayé de trouver le problème

Pour moi je crois que la cellule K5 on peut la garder puisqu’elle me donne le 4 qui est celui le plus cité

dans le tableau B5:I17

Apres dans la cellule K6je voudrais le second le plus cité du tableau B5:I17 sans prendre en compte

le 4 puisque nous l’avons en K5 et répéter l’opération jusqu’and K17

je ne peut être plus clair

@kiss6

Bonjour,

Avec une petite macro

Sub Comptage()
Dim i%, GV%
  Sheets("Feuil1").Range("K5:L30").ClearContents 'Efface les anciens résultats
  GV = Application.WorksheetFunction.Max(Range("Vals")) 'Recherche valeur Max
  For i = 1 To GV 'boucle de 1 à la grande valeur
    Cells(i + 4, 12) = i 'affiche en colonne L les nombres de 1 à grande valeur
    ' affiche en colonne K la valeur correspondante
    Cells(i + 4, 11).Value = Application.WorksheetFunction.CountIf(Range("Vals"), i)
  Next i
  'Tri sur les valeurs les + présentes au -
  Range("K4").Select
  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=ActiveCell.Range _
    ("A1:A" & GV), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
    xlSortNormal
  With ActiveWorkbook.Worksheets("Feuil1").Sort
    .SetRange ActiveCell.Offset(-1, 0).Range("A1:B" & GV + 1)
    .Header = xlYes
    .Apply
  End With
End Sub

Kiss.xlsm (19,8 Ko)

1 J'aime

Re,

Bonjour @Mimimathy

Toujours aussi efficace mois j’ais retourner le net dans tous les sens sans rien trouvé même notre

ami GOOGLE a tellement chauffer que j’ais du l’arroser :smiley:

Pourriez-vous m’explique le 4 de la macro

Cells(i + 4, 12) = i
Cells(i + 4, 11).Value = Application.WorksheetFunction.CountIf(Range(“Vals”), i)

Merci

Part contre j’ais complètement oublier de vous demander n’y aurait-il pas une formule plus courte que tous

c’est somme.si.ens et est ce que sumifs est bien le code VBA

=SOMME.SI.ENS(F48:M48;F22:M22;Q22)+SOMME.SI.ENS(F48:M48;F24:M24;Q22)+SOMME.SI.ENS(F48:M48;F26:M26;Q22)+SOMME.SI.ENS(F48:M48;F28:M28;Q22)+SOMME.SI.ENS(F48:M48;F30:M30;Q22)+SOMME.SI.ENS(F48:M48;F32:M32;Q22)+SOMME.SI.ENS(F48:M48;F34:M34;Q22)+SOMME.SI.ENS(F48:M48;F36:M36;Q22)+SOMME.SI.ENS(F48:M48;F38:M38;Q22)+SOMME.SI.ENS(F48:M48;F40:M40;Q22)+SOMME.SI.ENS(F48:M48;F42:M42;Q22)+SOMME.SI.ENS(F48:M48;F44:M44;Q22)+SOMME.SI.ENS(F48:M48;F46:M46;Q22)

Cdlt

@kiss6

Re,

C’est bon j’ais compris le 4 de la macro

Cdlt

@kiss6

Re,
Cells(i + 4, 12) = i
la cellule de la ligne i (qui est égale à 1 au début de la boucle) + 4 , colonne 12 est égale à 1 soit: L5 = 1
à la boucle suivante i sera = à 2 est la cellule notera 2 soit: L6 = 2, etc

Cells(i + 4, 11).Value = Application.WorksheetFunction.CountIf(Range(“Vals”), i)

Vals est le nom (gestionnaire de noms) de la plage de travail
si i=1 au premier tour de boucle, la cellule K5 est = NB.SI(plage de travail,1)
compte le nombre de valeur = 1 dans la plage

et ensuite, un tri sur le Nombre de valeur du + grand au plus petit

Pour SUMIFS, c’est bien le nom VBA de Somme.Si.Ens()

Pour ta formule, il doit y avoir moyen de voir avec la fonction MODE() pour comptabiliser sur la plage F22:M46 sur les lignes paires
Sinon en VBA par une boucle FOR TO avec un STEP 2 pour sauter une ligne à chaque tour et un Compteur pour additionner

1 J'aime

Re,

Ok merci pour tous ces conseil :wink: je retourne sur le net pour trouver la solution pour SUMIFS

Merci pour tous :+1:

Cdlt

@kiss6

Re,

Bonjour @Mimimathy

Je me suis trompé dans mes explications

je vais vous mettre le classeur d’origine et le test

Dans le test kiss j’ais fais une copie de votre module SUB Comptage que j’ais nommé

SUBComptage1*

j’ais changer la boucle For i car il y a une ligne vide entre chaque résultat mais c’la me met en colonne K5

votre compte “1,3,5,7,9,11,13,15,” suivant le chiffre le plus grand dans le tableau "B5:I29"

je n’arrive pas a positionner le plus cité en “K5 le 2ieme en K7 ainsi de suite jusque K19” car je n’ais

besoin que de 8 chiffre les plus cité du tableau “B5:I29” et que les points attribué soit sur la même ligne

que le numéro le plus cité

1° CLASSEUR TEST “kiss”===>Kiss.xlsm (22,6 Ko)

Le classeur d’origine est un bébé en construction

Cdlt

@kiss6

Re,

Bon j’ais réussi a mettre du plus grand au plus petit mais il me manque toujours le décalage pour que c’la tombe

en face

je vous remet le classeur test pour que vous voyez dans le module SUB Comptage1 les changements

que j’ais effectuer et pour me dire si c’est bon :wink:

Cdlt

Kiss.xlsm (22,5 Ko)

@kiss6

Re,
Eh bien non, c’est pas bon,
ton Step2 ne prend pas en compte le 2ème + gros, mais le 3ème :star_struck:

Comme quoi, un classeur exemple avec les bonnes conditions est préférable
mais tu n’est pas loin de la soluce

Il te suffit de différencier les colonnes K et M avec deux boucles
Peut-être qu’une aura un STEP2, :wink: peut-être pas

Au boulot, si pas de résolution d’ici ce soir: Réponse demain matin :sleeping:

1 J'aime

Re,

Ok

Oui ca j’avais compris que c’la me prenais le 3ème et pas le 2ème c’est que je n’arrive pas a déterminer mais

je creuse

PS: garder l’original car après je le retirerais

merci du conseil a tout a l’heure ou a demain

Cdlt

@kiss6

Bonsoir Kiss

Tu donne ta langue au chat :joy:

image

1 J'aime

Re,

NON NON J’ais encore un petit peut demain pour me casser la tête mais je serais quand même obliger de

capituler

je vous dit pas comme GOOGLE chauffe mais je ne doit pas poser les bonnes question où alors personnes

n’a les même problème :thinking: :thinking:

Génial la photo je me suis tordu de :joy: :joy: :joy: :joy: :joy: :joy: :joy:

Merci pour ce post sympathique

Cdlt

@kiss6

Re,

Bonjour @Mimimathy

Les deux module comptage et comptage1 ne fonctionne pas car hier il y avais 15 partants et aujourd’hui

il y en a 18

Et ci je laisse la boucle “i” tel quel est elle me compte que 15 partants

Donc je l’est changé pour avoir les 18 d’aujourd’hui mais le problème est que le comptage dépasse la ligne

19 alors qu’il faut faire le comptage du tableau sans dépasser cette ligne

Regarder dans le classeur d’origine le cadre synthese

Je vais refaire un classeur kiss avec le bon positionnement des cellules

A toute

Cdlt

@kiss6

Bonjour,

A tester même avec 18 chevaux
Kiss (2).xlsm (27,3 Ko)

1 J'aime

Re,

Oui ca peut aller

Non je plaisante c’est très bien comme d’habitude :+1:

Bon maintenant il faut que regarde pour les autres ces une autre paire de

manche :face_with_raised_eyebrow: bref

Par contre pourriez-vous me dire ci le module que j’ais fais dans le classeur d’origine pour le bouton

Valider la sélection est correct :wink:

MERCI

Mimi-Mathy

Cdlt

@kiss6

Re,

C’est bien pour la ligne en cours,
mais à chaque jour qui passe, il faudrait modifier la ligne de destination
alors qu’avec la recherche de la dernière ligne non vide sur plage, c’est automatique

Partie de macro à remplacer:

Dim Dl%
  Dl = Range("AE18").End(xlDown).Row + 1

    Range("Q41:AA41").Select
    Selection.Copy
    Range(Cells(Dl, "AK"), Cells(Dl, "AU")).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Range("U45:W45").Select
    Selection.Copy
    Range(Cells(Dl, "AW"), Cells(Dl, "AY")).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Range(Cells(Dl, "AK"), Cells(Dl, "AY")).Select
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

.... et la suite idem

Re,

Il y a un problème ou peut être pas je vient de changer les pronostics du tableau car aujourd’hui il y a 18

partants j’ais donc fait un débogage pas a pas et le comptage descend jusque l’encadre Ma sélection

Si un jour il y a plus de 20 partants est ce que c’la risque d’affecter l’encadre en question

je vous renvoie le classeur avec la bonne position des cellules

J’ais adapté votre module a ce classeur kiss(3) mais j’ais un bug pourtant ce n’est quand même pas

sorcier de changer les lettres des colonnes et les numéros de lignes

Classeur kiss(3)=====> Kiss(3).xlsm (24,4 Ko)

Cdlt

@kiss6

Re,

A tester sur l’original (max chevaux =25)
Ne pas utiliser les colonnes Y - Z & AA de la ligne 12 à 37 (formules de calcul)