XL 2016 Calculer le nombre d'itérations selon une valeur de cellule (VBA ou formule)

istpeleve

XLDnaute Nouveau
Bonjour à tous,

J'ai une base de données avec:
- nom
- jour
- semaine
- poste occupé

J'aimerai avoir une formule (ou VBA) qui puisse me permettre de savoir le nombre de postes différents occupés par chaque personne, sur le mois en cours.

En PJ un exemple de ma base de données ainsi que d'un exemple de tableau que j'aimerai avoir.


J'avais commencé à tester avec =SOMMEPROD((A1:J10<>"")/NB.SI(A1:J10;A1:J10&"")) qui me permet d'avoir le nombre de valeurs différentes sur une plage, mais là j'aimerai rajouter le critère qui fait que ça ne prenne en compte que les valeurs qui concernent la personne (un peu comme un NB.SI.ENS, j'ai testé cette variante =SOMMEPROD((D2:D7<>"")/NB.SI.ENS(A2:A7;A2:A7=H2;D2:D7;D2:D7&"")) mais ça me met un #DIV/0!


Le top du top serait un tableau où il ait une croix lorsque la personne occupe le poste dans le mois.

Pourriez-vous m'éclairer svp ?
 

Pièces jointes

  • Exemple.xlsx
    9.7 KB · Affichages: 8

JHA

XLDnaute Barbatruc
Bonjour à tous,

Peut-être avec sommeprod
Tableau 1
VB:
=SOMMEPROD(($A$2:$A$10=$H12)*($B$2:$B$10>="01/09/20"*1)*($B$2:$B$10<="30/09/20"*1))
Tableau 2
Code:
=SI(SOMMEPROD(($A$2:$A$10=$H19)*($B$2:$B$10>="01/09/20"*1)*($B$2:$B$10<="30/09/20"*1)*($D$2:$D$10=I$18))>0;"x";"")

JHA
 

Pièces jointes

  • Exemple (5).xlsx
    10.5 KB · Affichages: 2
E

Exl-Noob

Guest
Bonjour à tous les deux,

Ne pas sous estimer la puissance d'un tableau croisé dynamique...
J'y ai ajouté un slider de chronologie pour filtrer quand le tableau sera plus grand.

Ci-joint l'exemple de JHA auquel j'ai ajouté le TCD pour comparaison.
 

Pièces jointes

  • istpeleve.xlsx
    22.4 KB · Affichages: 3

istpeleve

XLDnaute Nouveau
Bonjour à vous et merci pour vos réponses !

J'ai finalement réussi à faire ce que je voulais mais la macro tourne durant 4 minutes.

Je vais dans un premier temps essayer vos propositions, afin de voir si elles ne sont pas meilleures.
Dans un second temps, pourriez-vous me dire si vous avez des conseils pour réduire le temps d'exécution d'une macro ?
Y a-t-il des actions qui sont plus chronophages que d'autres ?

Par ex, j'ai identifié les actions qui reviennent le plus souvent dans mon code:
Worksheets("(S" & onglet).Activate
Range("A" & i).Select 'Copie-Colle le nom de l'opérateur
Selection.Copy
Worksheets("BaseDeDonnées").Activate
Range("A" & DernLigneBDD + 1).Select
ActiveSheet.Paste

Ce genre de code revient énormément, n'y a-t-il pas un moyen de le réduire ?
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki