Fonction Mode Égaliter
Résolu
Duncoup
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
Duncoup Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Duncoup Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Fonction Mode Égaliter
- Mode avion - Guide
- Fonction si et - Guide
- Mode sécurisé samsung - Guide
- God mode - Guide
- Mode d'emploi - Guide
14 réponses
Bonjour Duncoup, et bienvenue parmi les membres inscrits.
Je n'ai pas la réponse à ta question, parce que je n'ai pas compris ce que tu as écrit :
- Essaie de faire des phrases courtes, avec des virgules et des points-virgules.
- Tu aurais pu écrire ta formule ; ça nous aurait guidé.
- Pour illustrer tes propos, rien ne vaut de joindre son fichier ; pour cela tu vas dans https://www.cjoint.com/ pour créer le lien, que tu reviens coller ici.
Je n'ai pas la réponse à ta question, parce que je n'ai pas compris ce que tu as écrit :
- Essaie de faire des phrases courtes, avec des virgules et des points-virgules.
- Tu aurais pu écrire ta formule ; ça nous aurait guidé.
- Pour illustrer tes propos, rien ne vaut de joindre son fichier ; pour cela tu vas dans https://www.cjoint.com/ pour créer le lien, que tu reviens coller ici.
Bonjour,
pas trouvé mieux que :
=MODE(SI($C$10:$C$39=$G$33;-LIGNE($C$10:$C$39);$C$10:$C$39))
formule matricielle à valider avec shift+ctrl+entrée
Et à condition que tu n'aies pas de nombres négatifs.
Par contre pour ta demande 'en cas d'égalité' il vaudrait mieux une fonction personnalisée en vba. Je n'ose pas imaginer ce que donnerait une formule en se basant sur ce façon de faire.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
pas trouvé mieux que :
=MODE(SI($C$10:$C$39=$G$33;-LIGNE($C$10:$C$39);$C$10:$C$39))
formule matricielle à valider avec shift+ctrl+entrée
Et à condition que tu n'aies pas de nombres négatifs.
Par contre pour ta demande 'en cas d'égalité' il vaudrait mieux une fonction personnalisée en vba. Je n'ose pas imaginer ce que donnerait une formule en se basant sur ce façon de faire.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Bonjour à tous
Tout d'abord merci Raymond et eriiic
Je vais essayer d'être plus clair, et grâce a ton lien de joindre ce que je souhaite.
Ci joint le fichier: https://www.cjoint.com/?0FrjE2yXEi4
Dans l'exemple fourni pour le plus cité j'utilise la fonction "=MODE(C10:C39)" ce qui me donne le plus cité, mais en cas d'égalité il ne m'en affiche que un seul...
La fonction "GRANDE.VALEUR" ne me donne pas les plus cités mais les plus grand chiffres de la colonne sauf condition que je ne connais pas.
Pour le deuxième plus cité je ne vois pas d'option à la fonction "MODE" pour faire comme tu dit plus haut avec "GRANDE.VALEUR" de chercher le deuxième plus cités.
Merci d'avance pour vos réponses.
Tout d'abord merci Raymond et eriiic
Je vais essayer d'être plus clair, et grâce a ton lien de joindre ce que je souhaite.
Ci joint le fichier: https://www.cjoint.com/?0FrjE2yXEi4
Dans l'exemple fourni pour le plus cité j'utilise la fonction "=MODE(C10:C39)" ce qui me donne le plus cité, mais en cas d'égalité il ne m'en affiche que un seul...
La fonction "GRANDE.VALEUR" ne me donne pas les plus cités mais les plus grand chiffres de la colonne sauf condition que je ne connais pas.
Pour le deuxième plus cité je ne vois pas d'option à la fonction "MODE" pour faire comme tu dit plus haut avec "GRANDE.VALEUR" de chercher le deuxième plus cités.
Merci d'avance pour vos réponses.
Proposition de fonction personnalisée.
Attention au mode de saisie de la formule, c'est très particulier (fonction matricielle validée sur une plage).
Si tu dois modifier la taille de la plage de la réponse il faut sélectionner l'ancienne plage et supprimer la formule matricielle pour pouvoir créer la nouvelle.
C'était assez chaud à faire et prise de tête, bien tester sur différents exemples.
https://www.cjoint.com/?DFrmLlTnQGn
eric
Attention au mode de saisie de la formule, c'est très particulier (fonction matricielle validée sur une plage).
Si tu dois modifier la taille de la plage de la réponse il faut sélectionner l'ancienne plage et supprimer la formule matricielle pour pouvoir créer la nouvelle.
C'était assez chaud à faire et prise de tête, bien tester sur différents exemples.
https://www.cjoint.com/?DFrmLlTnQGn
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci eriiic
mais quand je rentre la formule matricielle sur ma plage sur mon fichier sa me met rien en résultat les cases sont vide j'ai du raté un épisode:
Je fais "=modePlus($C$10:$C$39)" je valide "{=modePlus($C$10:$C$39)}"
Sur "G33" pour les premiers
et "G34" pour les deuxièmes
Comme tu as fais dans l'exemple un c'est parfais j'en veux que 2 merci d'avance, sinon sa marche bien, juste moi qui comprend pas comment tu as fais.
Et si on peux afficher un petit tiret au lieu de la virgule pour séparer les chiffres égaux sa serais parfais sinon c'est un détail :)
En tout cas merci beaucoup à vous pour vaux lumières.
mais quand je rentre la formule matricielle sur ma plage sur mon fichier sa me met rien en résultat les cases sont vide j'ai du raté un épisode:
Je fais "=modePlus($C$10:$C$39)" je valide "{=modePlus($C$10:$C$39)}"
Sur "G33" pour les premiers
et "G34" pour les deuxièmes
Comme tu as fais dans l'exemple un c'est parfais j'en veux que 2 merci d'avance, sinon sa marche bien, juste moi qui comprend pas comment tu as fais.
Et si on peux afficher un petit tiret au lieu de la virgule pour séparer les chiffres égaux sa serais parfais sinon c'est un détail :)
En tout cas merci beaucoup à vous pour vaux lumières.
Il faut mettre le code vba dans ton classeur.
Alt+F11 pour afficher VBE. La fonction est dans le Module1
Insérer un module standard dans ton classeur et y coller le code.
Code modifié:
eric
Alt+F11 pour afficher VBE. La fonction est dans le Module1
Insérer un module standard dans ton classeur et y coller le code.
Code modifié:
Function modePlus(plage As Range) As Variant Dim c As Range, reponse() As String, nbRep As Long, i As Long Dim Dict As Variant, clé As String, lig As Long Dim tmp1 As Long, tmp2 As Long, fini As Boolean Dim arr() As Long Set Dict = CreateObject("Scripting.Dictionary") 'comptage ReDim reponse(1 To plage.Cells.Count) For Each c In plage If c.Value <> "" Then Dict.Item(c.Value) = Dict.Item(c.Value) + 1 Next c ' dict dans tableau ReDim arr(0 To Dict.Count - 1, 0 To 1) cles = Dict.Keys For lig = 0 To UBound(cles) arr(lig, 0) = cles(lig) arr(lig, 1) = Dict(cles(lig)) Next lig ' tri qté décroissante Do fini = True For i = 0 To UBound(arr) - 1 If arr(i, 1) < arr(i + 1, 1) Then tmp1 = arr(i, 0): tmp2 = arr(i, 1) arr(i, 0) = arr(i + 1, 0): arr(i, 1) = arr(i + 1, 1) arr(i + 1, 0) = tmp1: arr(i + 1, 1) = tmp2 fini = False End If Next i Loop While Not fini ReDim reponse(1 To 1) reponse(1) = arr(0, 0) nbRep = 1 For i = 1 To UBound(arr) - 1 If arr(i, 1) = arr(i - 1, 1) Then reponse(nbRep) = reponse(nbRep) & "-" & arr(i, 0) 'i = i + 1 Else nbRep = nbRep + 1 ReDim Preserve reponse(1 To nbRep) reponse(nbRep) = arr(i, 0) End If Next i If plage.Columns.Count = 1 Then ' matrice verticale modePlus = Application.Transpose(reponse) Else ' matrice horizontale modePlus = reponse End If End Function
eric
re eriiic et encore merci beaucoup
J'ai compris pourquoi sa marchais pas effectivement me manquais le VBA :)
Je vais encore t'embêter un peux j'aimerais qui me les ranges du plus petit au plus grand en cas d'égalité exemple "1 - 2 - 7 - 12".
Et pour finir si tu peux et veux bien me verifier le code que tu as mis plus haut car j'ai l'impression y a des erreurs merci encore vraiment beaucoup pour ton aide.
"L'erreur c'est peut être moi" y manquais un 'stop comme tu avais mis dans ton ancien code je regarde de mon coter j'essaye de comprendre.
Du coup sa marche mais je n'arrive pas a mettre pour le deuxième dans "G34"
il m'affiche la même chose que "G33" comment tu fais pour avoir les deux case différente car sur le tiens sa marche avec la même formule pour les deux.
J'ai essayer en tirant vers le bas en l'écrivant dans les deux en même temps un après l'autre rien ne change j'ai toujours les deux case identique avec le résultat du premier.
Sinon la fonction "modePlus" est bien prise en compte.
Je n'y connais rien en VBA mais sa a l'air vraiment utile du coup me suis commander sa pour les nuls :) en te remerciant encore simpa de ta part.
J'ai compris pourquoi sa marchais pas effectivement me manquais le VBA :)
Je vais encore t'embêter un peux j'aimerais qui me les ranges du plus petit au plus grand en cas d'égalité exemple "1 - 2 - 7 - 12".
Et pour finir si tu peux et veux bien me verifier le code que tu as mis plus haut car j'ai l'impression y a des erreurs merci encore vraiment beaucoup pour ton aide.
"L'erreur c'est peut être moi" y manquais un 'stop comme tu avais mis dans ton ancien code je regarde de mon coter j'essaye de comprendre.
Du coup sa marche mais je n'arrive pas a mettre pour le deuxième dans "G34"
il m'affiche la même chose que "G33" comment tu fais pour avoir les deux case différente car sur le tiens sa marche avec la même formule pour les deux.
J'ai essayer en tirant vers le bas en l'écrivant dans les deux en même temps un après l'autre rien ne change j'ai toujours les deux case identique avec le résultat du premier.
Sinon la fonction "modePlus" est bien prise en compte.
Je n'y connais rien en VBA mais sa a l'air vraiment utile du coup me suis commander sa pour les nuls :) en te remerciant encore simpa de ta part.
car j'ai l'impression y a des erreurs
Une impression ce n'est pas suffisant.
Fournir un classeur exemple avec l'anomalie en expliquant où elle est.
Sinon il y avait un problème de déclaration de variable qui ne m'avait pas généré d'erreur. C'est peut-être ça qui a posé un pb chez toi.
J'ai ajouté une fonctionnalité : si tu sélectionnes 2 colonnes avant de valider la formule tu as le compteur en 2nde colonne. Voir G45:H47
https://www.cjoint.com/?DFrrqhKLeME
eric
Une impression ce n'est pas suffisant.
Fournir un classeur exemple avec l'anomalie en expliquant où elle est.
Sinon il y avait un problème de déclaration de variable qui ne m'avait pas généré d'erreur. C'est peut-être ça qui a posé un pb chez toi.
J'ai ajouté une fonctionnalité : si tu sélectionnes 2 colonnes avant de valider la formule tu as le compteur en 2nde colonne. Voir G45:H47
https://www.cjoint.com/?DFrrqhKLeME
eric
re eriiic
Vraiment désolé j'essaye d'être précis je t'envoie le fichier:
Ci-joint: https://www.cjoint.com/?0FrrCN07fSR
merci encore.
Vraiment désolé j'essaye d'être précis je t'envoie le fichier:
Ci-joint: https://www.cjoint.com/?0FrrCN07fSR
merci encore.
Re tout le monde
Merci infiniment eriiic après avoir bien travaillée et tourné mon problème dans tous les sens grâce à toi j'ai enfin trouver ou les mettre ces formules youpi :)
un grand merci à tous :)
Merci infiniment eriiic après avoir bien travaillée et tourné mon problème dans tous les sens grâce à toi j'ai enfin trouver ou les mettre ces formules youpi :)
un grand merci à tous :)
Livraison plus tôt que prévu, c'est un peu plus propre maintenant.
N'hésite pas à signaler si tu remarques d'autres anomalies (avec fichier stp).
https://www.cjoint.com/?DFsaf52f6H8
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
N'hésite pas à signaler si tu remarques d'autres anomalies (avec fichier stp).
https://www.cjoint.com/?DFsaf52f6H8
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
je te remerci pour ta rapidité et ton aide précieuse je vais voir sa je te tiens au courrant
je te joint un fichier pour une petit option si jamais on peux le faire sa serais le top merci d'avance en tout cas déjà un énorme merci pour ce que tu as fais bonne nuit à toi.
fichier ci-joint: https://www.cjoint.com/?0FsaB1o3ixT
fichier ci-joint: https://www.cjoint.com/?0FsaB1o3ixT
Bonjour,
Ce n'est plus une option, c'est tout à fait autre chose (ou presque).
Code dans le module Feuil1.
Je me sers de G33:G34 pour récupérer résultat et couleurs.
La mise à jour se fait automatiquement en cas de changement sur C10:C29 dans la mesure où se sont des saisies et non le résultat de formules. Sinon il faut surveiller les cellules de saisie à l'origine des changements.
https://www.cjoint.com/c/DFskUhY4ciX
eric
Ce n'est plus une option, c'est tout à fait autre chose (ou presque).
Code dans le module Feuil1.
Je me sers de G33:G34 pour récupérer résultat et couleurs.
La mise à jour se fait automatiquement en cas de changement sur C10:C29 dans la mesure où se sont des saisies et non le résultat de formules. Sinon il faut surveiller les cellules de saisie à l'origine des changements.
https://www.cjoint.com/c/DFskUhY4ciX
eric
Bonjour tout le monde et merci eriiic
Je viens de regarder il y a des erreurs je te joint le fichier:
ci-joint: https://www.cjoint.com/?0FslFW9ApnM
Et de mon coter j'ai été obligé de rajouter une colonne donc sa part de H10:H29 maintenant et le résultat est aussi en H33:34.
Sa doit aussi me mettre en couleur les 3 colonnes par ligne égale au résultat comme tu as fais mais la colonne des chiffres aussi doit ce mettre en couleur sa serais parfais.
Sinon un grand merci encore sa marche très bien mis appart un petit bug de rien du tout, et moi qui change la colonne.
J'ai pas trouver le code couleur non plus dans ton code, pour la changer si besoin un jours.
A vrai dire je sais même pas comment il la met j'ai encore du mal avec le VBA j'essaye de comprendre je regarde sur le net mais pas simple.
Merci en tout cas.
Je viens de regarder il y a des erreurs je te joint le fichier:
ci-joint: https://www.cjoint.com/?0FslFW9ApnM
Et de mon coter j'ai été obligé de rajouter une colonne donc sa part de H10:H29 maintenant et le résultat est aussi en H33:34.
Sa doit aussi me mettre en couleur les 3 colonnes par ligne égale au résultat comme tu as fais mais la colonne des chiffres aussi doit ce mettre en couleur sa serais parfais.
Sinon un grand merci encore sa marche très bien mis appart un petit bug de rien du tout, et moi qui change la colonne.
J'ai pas trouver le code couleur non plus dans ton code, pour la changer si besoin un jours.
A vrai dire je sais même pas comment il la met j'ai encore du mal avec le VBA j'essaye de comprendre je regarde sur le net mais pas simple.
Merci en tout cas.
sa marche très bien mis appart un petit bug de rien du tout
Quel bug ? Il faut que je devine ?
En vba il faut éviter de changer la structure de la feuille ou sinon modifier les références des cellules dans le code.
Je t'ai nommé des plages sur la feuille, le code utilise maintenant ces noms. En cas de changement modifier la définition de ces noms :
plage1 : C10:C39
plage2 : H33:34
plage3 : H10:H29
J'ai pas trouver le code couleur non plus dans ton code, pour la changer si besoin un jours.
Je te l'ai écris : Je me sers de G33:G34 pour récupérer résultat et couleurs
Fichier adapté : https://www.cjoint.com/?DFsmtZWZ138
eric
Quel bug ? Il faut que je devine ?
En vba il faut éviter de changer la structure de la feuille ou sinon modifier les références des cellules dans le code.
Je t'ai nommé des plages sur la feuille, le code utilise maintenant ces noms. En cas de changement modifier la définition de ces noms :
plage1 : C10:C39
plage2 : H33:34
plage3 : H10:H29
J'ai pas trouver le code couleur non plus dans ton code, pour la changer si besoin un jours.
Je te l'ai écris : Je me sers de G33:G34 pour récupérer résultat et couleurs
Fichier adapté : https://www.cjoint.com/?DFsmtZWZ138
eric
Non constaté, si tu peux confirmer....
Lorsque tu testes un fichier avec macro ne le fait pas après l'avoir ouvert à partir du net.
Enregistre-le dans un autre répertoire que temp et ouvre-le pour que les macros réagissent correctement.
Une petite correction quand même : mise en noir de la 1ère colonne, oubliée lors du passage de 2 à 3 colonnes à colorer.
https://www.cjoint.com/?DFsoYnZk6cy
eric
Lorsque tu testes un fichier avec macro ne le fait pas après l'avoir ouvert à partir du net.
Enregistre-le dans un autre répertoire que temp et ouvre-le pour que les macros réagissent correctement.
Une petite correction quand même : mise en noir de la 1ère colonne, oubliée lors du passage de 2 à 3 colonnes à colorer.
https://www.cjoint.com/?DFsoYnZk6cy
eric
je te renvoie un fichier du souci de couleur qui reste
ci-joint: https://www.cjoint.com/?0FsnPZBcdSO
Et je t'ai mis dedans une fonction qui me serais utile que je voie pas comment on fais je trouve bien le 10 avec "GRANDE.VALEUR" mais je voudrais il m'affiche le 6 de la colonne juste avant.
j'Ai essayer avec la fonction "decaler" mais sa marche pas.
Merci encore de ton aide.
ci-joint: https://www.cjoint.com/?0FsnPZBcdSO
Et je t'ai mis dedans une fonction qui me serais utile que je voie pas comment on fais je trouve bien le 10 avec "GRANDE.VALEUR" mais je voudrais il m'affiche le 6 de la colonne juste avant.
j'Ai essayer avec la fonction "decaler" mais sa marche pas.
Merci encore de ton aide.
en fait c'est par rapport au fichier que j'ai joint:
le résultat le plus grand est : est 10 dans la plage "I10:I29"
mais moi je veux savoir la valeur en face ce résultat sur la plage "H10:H29"
dans cet exemple sa tombe sur le 6
"en gros sa devrais me donner un truc du genre"
=GRANDE.VALEUR(I10:I29;1) j'obtiens 10 de la colonne "I10:I29"et je veux pour résultat le 6 de la colonne "H10:H29" qui ce situ sur la même ligne moins une colonne.
je te remet le fichier: https://www.cjoint.com/?0FsnPZBcdSO
le résultat le plus grand est : est 10 dans la plage "I10:I29"
mais moi je veux savoir la valeur en face ce résultat sur la plage "H10:H29"
dans cet exemple sa tombe sur le 6
"en gros sa devrais me donner un truc du genre"
=GRANDE.VALEUR(I10:I29;1) j'obtiens 10 de la colonne "I10:I29"et je veux pour résultat le 6 de la colonne "H10:H29" qui ce situ sur la même ligne moins une colonne.
je te remet le fichier: https://www.cjoint.com/?0FsnPZBcdSO
re eriiic
J'ai un dernier petit souci avec les couleurs automatique quand je protège ma feuille il m'ouvre la fenêtre débogage a chaque fois et ne colorie plus rien voilà sinon tout marche super bien en te remerciant encore.
J'ai un dernier petit souci avec les couleurs automatique quand je protège ma feuille il m'ouvre la fenêtre débogage a chaque fois et ne colorie plus rien voilà sinon tout marche super bien en te remerciant encore.
Tu ferais mieux d'employer la fontion GRANDE.VALEUR