XL 2016 VBA Sélection en fonction de critères

  • Initiateur de la discussion Initiateur de la discussion james7734
  • Date de début Date de début

james7734

XLDnaute Junior
Bonjour à tous,

Confiné, je fais appel à votre aide aujourd'hui.
Voilà, je possède un fichier avec 400 noms de sociétés et une note attribuée pour chaque valeur (2 étant la note maximale et -2 la note minimale, pas de 0,5) et pour chaque mois.
A travers de VBA, je cherche à lister dans le deuxième onglet uniquement 5 valeurs par mois en fonction de 2 critères:
- Les notes des 3 derniers mois sont "supérieurs à 1,5"
- La moyenne des notes des 6 derniers mois est "supérieure à 1,5"

J'ai un donné un petit visuel de ce que je cherche à faire sur l'onglet 2.
Il faut savoir que des nouvelles colonnes correspondant à des nouveaux mois vont s'implémenter à la suite au fil du temps. Je cherche une solution spécifiquement sur VBA (pas de formules).
Je pense qu'il sera également de trouver des valeurs pour les 5 premiers mois.

Merci énormément!
 

Pièces jointes

Solution
En PJ un nouvel essai.
Bien évidemment je commence au 6ème mois de façon à faire la moyenne.
J'ai mis le seuil de 1.5 en B1, ce qui permet de le faire varier.
Si inutile changer la ligne :
VB:
Seuil = [B1]   par   Seuil = 1.5
Par contre je ne fais pas de tri par classement car je ne mémorise pas tous les calculs intermédiaires.
Et je ne remonte pas les 5 premiers, mais tous ceux qui sont au dessus du seuil.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir James,
En PJ un essai, à tester, et à retester. :)
Il suffit d'appuyer sur le bouton "the best"
Les résultats sont en feuill2.
Comme il peut y avoir plus de 5 company à répondre aux bons critères et qu'il n'y a pas façon de discriminer, j'ai créé une "note" qui est Note n-2 + Note n-1 + Note N + Moyenne6Mois, et à la fin je tri sur ces notes. Ca vaut ce que ça vaut.
A vous de le modifier pour répondre à vos besoins.

NB1 : j'ai oublié : Je tri sur une valeur >=1.5. Si vous voulez uniquement > il faut modifier le code sur la ligne :
VB:
If tablo(i, Largeur) >= 1.5 And tablo(i, Largeur - 1) >= 1.5 And tablo(i, Largeur - 2) >= 1.5 Then
NB2: par contre ça, je n'ai pas compris ... donc pas traité. ;)
Je pense qu'il sera également de trouver des valeurs pour les 5 premiers mois.
 

Pièces jointes

Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
En PJ une version un peu optimisé.
Concernant le choix :
- Soit on met tous les ex æquo de la meilleure note sans limite de nombre
- Soit on limite la liste aux 5 meilleurs.
Comme je ne savais quoi choisir, j'ai mis en Feuil2 4 filtres possibles.

A vous de choisir la version qui vous sied le mieux.
 

Pièces jointes

Dernière édition:

james7734

XLDnaute Junior
En PJ une version un peu optimisé.
Concernant le choix :
- Soit on met tous les ex æquo de la meilleure note sans limite de nombre
- Soit on limite la liste aux 5 meilleurs.
Comme je ne savais quoi choisir, j'ai mis en Feuil2 4 filtres possibles.

A vous de choisir la version qui vous sied le mieux.
Bonjour Sylvanu,

Merci énormément pour ta solution! Je comprends ce que tu as fait, mais je voulais pour chaque mois une liste de 5 (ou plus comme tu as fait) valeurs. Si je me trompe pas ton fichier calcul sur l'ensemble de la période?
Pardon pour l'incompréhension... En gros, chaque mois je souhaitais une liste de 5 valeurs correspondant aux 2 critères.

Merci encore!
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Vérifiez, les calculs sont fais sur les trois derniers mois et la moyenne sur les 6 derniers mois.
VB:
    If tablo(i, Largeur) >= 1.5 And tablo(i, Largeur - 1) >= 1.5 And tablo(i, Largeur - 2) >= 1.5 Then
Largeur étant la taille de l'array en mois, donc N, N-1 et N-2.
De même la moyenne est effectuée sur les six derniers mois :
Code:
        Moyenne = 0
        For j = 0 To 5
            Moyenne = Moyenne + tablo(i, Largeur - j)
        Next j
        Moyenne = Moyenne / 6

Ai je raté quelque chose ?

Add : Vous m'avez fait douté.
En PJ un fichier où toutes les données sont à -100 sauf les six derniers mois, et les calculs sont corrects.
 

Pièces jointes

Dernière édition:

james7734

XLDnaute Junior
Re,
Vérifiez, les calculs sont fais sur les trois derniers mois et la moyenne sur les 6 derniers mois.
VB:
    If tablo(i, Largeur) >= 1.5 And tablo(i, Largeur - 1) >= 1.5 And tablo(i, Largeur - 2) >= 1.5 Then
Largeur étant la taille de l'array en mois, donc N, N-1 et N-2.
De même la moyenne est effectuée sur les six derniers mois :
Code:
        Moyenne = 0
        For j = 0 To 5
            Moyenne = Moyenne + tablo(i, Largeur - j)
        Next j
        Moyenne = Moyenne / 6

Ai je raté quelque chose ?

Add : Vous m'avez fait douté.
En PJ un fichier où toutes les données sont à -100 sauf les six derniers mois, et les calculs sont corrects.
Bonjour,
Oui c'est exactement ce que je veux mais pour chaque mois!
Voici un visuel de ce que je cherche (les valeurs sont prises au hasard, juste pour montrer la forme).
 

Pièces jointes

sylvanu

XLDnaute Barbatruc
Supporter XLD
En PJ un nouvel essai.
Bien évidemment je commence au 6ème mois de façon à faire la moyenne.
J'ai mis le seuil de 1.5 en B1, ce qui permet de le faire varier.
Si inutile changer la ligne :
VB:
Seuil = [B1]   par   Seuil = 1.5
Par contre je ne fais pas de tri par classement car je ne mémorise pas tous les calculs intermédiaires.
Et je ne remonte pas les 5 premiers, mais tous ceux qui sont au dessus du seuil.
 

Pièces jointes

james7734

XLDnaute Junior
En PJ un nouvel essai.
Bien évidemment je commence au 6ème mois de façon à faire la moyenne.
J'ai mis le seuil de 1.5 en B1, ce qui permet de le faire varier.
Si inutile changer la ligne :
VB:
Seuil = [B1]   par   Seuil = 1.5
Par contre je ne fais pas de tri par classement car je ne mémorise pas tous les calculs intermédiaires.
Et je ne remonte pas les 5 premiers, mais tous ceux qui sont au dessus du seuil.
Rebonjour Sylvanu,

Incroyable! c'est ce que je veux !
Merci énormément, je regarde ton code...

Merci,
 

Discussions similaires

  • Question Question
XL pour MAC Calcul de notes.
Réponses
5
Affichages
623
  • Question Question
Microsoft 365 Eliminer les doublons
Réponses
4
Affichages
397
Réponses
8
Affichages
362

Statistiques des forums

Discussions
315 284
Messages
2 118 014
Membres
113 406
dernier inscrit
NI-ZE