Compter différemment les valeurs consécutives (critère: <61 ou >60)

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour,

Jean-Noël et Roger: merci beaucoup!

Roger, si j'ai bien compris tu as réussi à te passer de la multitude de colonnes qu'il y aurait normalement dans "ANNEE".

Qu'appelles-tu une procédure globale? Quelle possibilité vois-tu pour ce projet?
Il est vrai qu'à l'ouverture du fichier Excel calcule pendant un très très long moment (je viens de stopper les calculs après ±10 min., dès que les "#VALEUR" ont cédé la place aux valeurs à l'affichage).

D'ailleurs il y a en réalité plein de formules inutiles qui sont traînées de janvier à décembre: en janvier il n'y a que 10 personnes, mais il y a des formules pour 50.
Et cela continue comme cela: fin février il y en a moins de 15, depuis le 1.1.
Il suffirait que, à chaque ajoute d'un nom (à ajouter de préférence dans une feuille à part), une ligne de formules soit ajoutée (par VBA).

Je vois une autre piste peut-être empruntable: remplacer les formules par la valeur produite, dès qu'elle est produite, et s'il y a une modification, remettre la formule, faire calculer et la remplacer par la valeur, tout cela par VBA bien sûr, l'action étant déclenchée dès qu'il y a une saisie.
Mais comme je ne comprends rien en VBA, je ne peux aborder des choses comme ça uniquement dans une perspective théorique.

A bientôt

Aloha
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re...
Je dois dire qu'il ne m'est pas facile de vous suivre.
Message #1 :
Comment construire une formule qui compte les valeurs d'un groupe consécutif en entier jusqu'à 60 et à moitié au-dessus de 60?
Message #11 :
Cependant, je suis finalement à la recherche de formules pour les différentes cellules de la colonne D pour qu'elles produisent les résultats que j'y ai entrés manuellement.
Message #21 :
Je dois prévoir 50 personnes, jusqu'à 8 périodes d'absence par mois, et 8 types différents dabsences
Message #41 :
D'ailleurs il y a en réalité plein de formules inutiles qui sont traînées de janvier à décembre: en janvier il n'y a que 10 personnes, mais il y a des formules pour 50.
et
Je vois une autre piste peut-être empruntable: remplacer les formules par la valeur produite, dès qu'elle est produite, et s'il y a une modification, remettre la formule, faire calculer et la remplacer par la valeur, tout cela par VBA bien sûr, l'action étant déclenchée dès qu'il y a une saisie.
Une formule, des formules ou du code ?
50 personnes ou 10 personnes ?
Etc.
Un exposé complet, clair et précis du problème permettrait d'élaborer une solution complète, claire et précise.
En attendant, voici un rafistolage des travaux précédents : pas de formule dans les feuilles. Mise à jour de toutes les feuilles dès qu'une donnée est inscrite dans une feuille.
C'est déjà plus rapide, mais loin d'être optimisé. (A ce propos, le précédent classeur était très lent, mais de là à nécessiter plus de 10 minutes pour la mise à jour, il y a de la marge ! Environ 80 secondes sont nécessaires chez moi, et pas avec une machine ultra-rapide : seulement un portable de trois ans, disposant d'un Go de mémoire vive...)​
ROGER2327
#2674
 

Fichiers joints

JNP

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re :),
Je dois dire qu'il ne m'est pas facile de vous suivre.
Message #1 :
Message #11 :
Message #21 :
Message #41 :etUne formule, des formules ou du code ?
50 personnes ou 10 personnes ?
Etc.
Même ressenti, mon cher ;).
Bonne nuit :cool:
 

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour,

Mes excuses si j'ai divagué autant au fur et5 à mesure des messages.
Cela tient au fait que j'ai progressé dans la conception du système.

J'énonce encore une fois le problème:

J'ai un groupe de 50 personnes au maximum (comme je l'ai déjà dit, je n'en ai qu'une dizaine au 31.1., pas plus de 15 au 28.2. etc).
Ces personnes sont ou bien présentes (P) un jour défini ou alors absentes.
Les absences sont comptées jusqu'à 21, 45 ou 60 jours consécutifs (même si elles s'étendent sur plusieurs mois, comme présences, et au-dessus ou bien à moitié ou bien 0, ce chiffre dépendant du type d'absence.
En réalité les absences ne sont pas encore définies à 100%. Je vais communiquer les définitions définitives dès qu'elles me seront connues.

J'ai donc besoin d'un système où je marque chaque jour, pour chacune des personnes qui n'ont pas quitté à nouveau le groupe entretemps, comme présence (P) ou comme absence d'un type ou d'un autre. Et donc à Excel de faire le tri et de compter les absences comme présences en entier, à moitié ou 0, suivant les définitions.
A droite des jours du mois doivent figurer le total des jours réellement présents + le total des absences comptées comme présence. Ce que tu as fait -mes excuses, vous me vouvoyez et je vais en faire autant- ce que vous avez fait.
C'est tout.
La seule inconnue partielle qui reste là-dedans c'est la définition précise et définitive de tous les types d'absence.

Pour l'instant (excusez si cela diffère de ce que j'ai communiqué avant comme critères; cela ne devrait plus changer maintenant sauf les cas où ce n'est pas encore défini précisément):
F: 1: <=3 jours; au-delà: 0 (risque de changer encore)
V: 1: <=21 jours par an; au-delà: 0
C: 1: <=14 jours consécutifs; 0,5: du 15e au 45e jour consécutif; au-delà: 0
U: 1: <= 14 jours consécutifs; 0,5: du 15e au ? jour; mettons jusqu'au 45e en attendant
R: pas encore défini

Le fait que les calculs aient duré plus de 10 min. dépend de beaucoup de facteurs; je pense que le facteur déterminant était au niveau de mon équipement, qui n'est d'ailleurs pas vieux.

Bonne journée
et merci encore
et mes excuses encore une fois si d'un message à l'autre il a pu y avoir des éléments différents.

Aloha
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re...
Merci pour ces précisions.
La dénomination des différents types d'absence n'est pas critique : des modifications mineures du code permettront de remplacer les lettres A, B, C... par celles qu'on voudra.
Il serait bon que vous testiez la dernière version proposée et que vous disiez si
  1. elle fait le travail souhaité ;
  2. elle fonctionne avec une vitesse admissible.
A vous lire.
ROGER2327
#2678
 

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

...j'ai modifié le fichier pour ajouter les noms et j'ai essayé d'adapter le code, pour faire apparaître les types d'absence ± définitifs, mais il faut encore votre main de maître pour le faire fonctionner.

Il y aurait peut-être une méthode plus élégante pour ajouter les noms, et peut-être une autre pour réduire les feuilles des mois aux personnes réellement inscrites pendant ce mois.

Bonne journée

Aloha
 

Fichiers joints

Dernière édition:

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

J'ai apporté encore quelques corrections au code, suite aux modifications dans les feuilles.
Aloha
 

Fichiers joints

Dernière édition:

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour Roger,

Je viens seulement de voir votre dernier message; c'est le dernier de la page 3 et j'étais à la page 4.

J'ai dû redémarrer Excel pour que cela marche, sinon les calculs ne se sont pas faits.
Cela marche, oui!
Je suis très mal placé pour dire quelque chose de non positif sur ce travail merveilleux, mais le fait est qu'Excel traîne un petit peu lorsqu'on a saisi une lettre.
J'ai saisi un P au 1. d'un mois et je l'ai copié jusqu'au 31. Il y a le sablier pendant tout de même un petit peu plus d'une minute.
Ce qui ne serait pas grave si on pouvait faire faire les calculs seulement après avoir introduit toutes les lettres.
Peut-être faire déclencher les calculs seulement en appuyant sur un bouton.
Sinon, un peu d'accélération serait positif.
Je me répète: je suis mal placé pour critiquer le système!

A+

Aloha
 
Dernière édition:

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour,

Personne ne me répond plus!

Est-ce que quelqu'un voit éventuellement une possibilité pour accélérer ce système?

Vous comprendrez que j'aimerais savoir où j'en suis, si je peux m'attendre encore à un soutien ou non. Dans ce cas je serai obligé de chercher une autre piste...

Merci d'avance de bien vouloir me répondre.

Bonne journée

Aloha
 

JNP

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re :),
Le temps perdu dans les méandres et revirements, sans compter la non prise en compte de problèmes soulevés dès le début, emousse forcément la volontée farouche de te venir en aide ;)...
Le fichier fonctionne, tout ce qui reste, c'est des problèmes de lenteurs si je t'ai bien lue. Et Roger doute de pouvoir optimiser le temps de calcul, donc moi aussi :p...
Le plus simple maintenant est de débrancher le calcul automatique, et de faire F5 quand tu veux calculer le fichier après une ou plusieurs saisies, et éventuellement, pour éviter les problèmes, forcer le calcul automatique juste à l'ouverture ou à la fermeture du fichier. S'amuser à programmer de l'événementielle pour basculer de calcul automatique à manuel et "vice et Versace" reviendrait à faire la même chose qu'Excel, calculer à chaque saisie :D... en alourdissant un peu plus le fichier :(.
Bon courage :cool:
 

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour Jean-Noël,

Merci de m'avoir répondu, même si tu me tires les oreilles. S'il y a eu des "méandres" c'est que je n'ai pas vu clair tout de suite. A propos du reproche de la "non prise en compte de problèmes soulevés dès le début", je pense y avoir déjà répondu!

Où as-tu lu que Roger aurait affirmé ne pas pouvoir optimiser davantage?
Le 1.2. à 21:22 il a bien écrit:

"C'est déjà plus rapide, mais loin d'être optimisé."

Dans son dernier message avant qu'il ne se taise, le.2.2. à 8:45 il a écrit e.a.:
"Il serait bon que vous testiez la dernière version proposée et que vous disiez si
elle fait le travail souhaité ;
elle fonctionne avec une vitesse admissible."


J'ai répondu à ces questions et depuis il n'a plus donné signe de vie!

Tes reproches n'amoindrissent en rien ma gratitude envers toi-même et envers Roger. Sans vous deux je n'aurais rien du tout comme solution!!

En ce qui concerne la proposition que tu fais, à savoir mettre le mode de calcul en manuel, j'ai eu cette idée moi-même, mais j'ai dû constater que l'exécution du code VBA n'est pas stoppée par cette action, autant sur Mac que sur PC.

Des fois Excel demande s'il doit ouvrir le fichier avec les macros activées ou non; peut-être que cela serait une possibilité? Seulement, avec ce fichier il ne le demande pas!

Peut-être y a-t-il une solution à cela, mais mon plus gros problème avec le fichier, c'est que les codes ne sont pas encore les codes définitifs; j'ai essayé d'introduire les codes définitifs, avec leurs conditions en partie modifiées (cela ne dépend pas de moi!), mais je n'arrive pas à faire fonctionner le fichier modifié. Idem lorsque j'ajoute 2 colonnes derrière la colonne contenant les noms.

Bonne journée

Aloha
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re :),
Merci de m'avoir répondu, même si tu me tires les oreilles. S'il y a eu des "méandres" c'est que je n'ai pas vu clair tout de suite. A propos du reproche de la "non prise en compte de problèmes soulevés dès le début", je pense y avoir déjà répondu!
Ce n'est pas exactement ce que je voulais dire, je parlais d'une lassitude qui survient forcément plus tôt quand le parcours a été cahotique, et j'avais bien lu ta réponse ;)
Où as-tu lu que Roger aurait affirmé ne pas pouvoir optimiser davantage?
Le 1.2. à 21:22 il a bien écrit:
"C'est déjà plus rapide, mais loin d'être optimisé."
Dans son dernier message avant qu'il ne se taise, le.2.2. à 8:45 il a écrit e.a.:
"Il serait bon que vous testiez la dernière version proposée et que vous disiez si
elle fait le travail souhaité ;
elle fonctionne avec une vitesse admissible."
J'ai répondu à ces questions et depuis il n'a plus donné signe de vie!
Tu as posté 2 fois entre temps, as-t-il vu le 3ème, s'il a pensé que tu ne tenais pas compte de son message ? Pour l'optimisation, je connais les qualités de Roger, et quand il disait "loin d'être optimisé", il ne parlait pas de son travail, mais du fait que le fichier ne répondait pas à la vitesse de la lumière, tout au moins, c'est ainsi que je l'ai ressenti :rolleyes:.
Tes reproches n'amoindrissent en rien ma gratitude envers toi-même et envers Roger. Sans vous deux je n'aurais rien du tout comme solution!!
Ce ne sont pas des reproches, juste des constatations. Et tant mieux si notre aide t'apporte quelque chose, c'est un peu notre but, non :p ?
En ce qui concerne la proposition que tu fais, à savoir mettre le mode de calcul en manuel, j'ai eu cette idée moi-même, mais j'ai dû constater que l'exécution du code VBA n'est pas stoppée par cette action, autant sur Mac que sur PC.
A ce niveau là, tu peux faire un test. Dans les fonctions, tu mets en commentaire (avec un ' ) la ligne suivante
Code:
[COLOR=seagreen]' Application.Volatile[/COLOR]
c'est la ligne de code qui demande à la fonction de se recalculer à chaque changement. Le calcul sur ordre devrait fonctionner ensuite.
Des fois Excel demande s'il doit ouvrir le fichier avec les macros activées ou non; peut-être que cela serait une possibilité? Seulement, avec ce fichier il ne le demande pas!
Ça ne dépends pas du fichier, mais des préférences d'Excel (centre de sécurité). Le problème, c'est que si tu désactives les macros, il te faudra fermer le fichier et le réouvrir pour les activer, Excel (et c'est bien dommage) ne sait pas activer les macros aprés que celle-ci aient été désactivées (le contraire non plus...) :mad:.
Bonne journée, et dis nous si l'arrêt du Volatile te permets d'utiliser F5 :cool:
 

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re,

Que vois-tu comme optimisation possible à mon niveau? J'ai une feuille par mois et une ligne par personne, ainsi que les différents types d'absence.
Il me faut tout cela, sauf, si je reviens au début où je voulais seulement saisir le premier et le dernier jour d'une absence ainsi que le type; là je n'ai pas à effectuer une saisie par jour et par personne.

J'ai suivi ton conseil; en termes de rapidité cela ne change hélas rien du tout.
Ce n'est d'ailleurs pas moi qui vais utiliser ce fichier; j'entends déjà les gens -dont certains sont très réticents envers tout ce qui est ordinateur- rouspeter lorsqu'il remplissent un mois, qu'ils copient un P du 1er au dernier jour pour une personne qui était présente tout le temps et qu'ils doivent attendre une minute entière avant de pouvoir aborder la prochaine personne!

Désolé de t'énerver avec cela.

Je ne connais pas la fonction de F5, mais celle de F9 (forcer à calculer). Lorsque j'appuie sur F5 je reçois une petite fenêtre "Atteindre"!

Je me demande si je ne devrais pas revenir à la version où il y a les formules, car là je peux contrôler les calculs et en plus j'arrive à faire des modifications au niveau de la structure (ajouter des colonnes p.ex.) sans casser tout le système, alors qu'avec du pur VBA je dépends toujours d'aide extérieure! Qu'en penses-tu?

A+

Aloha
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re :),
Pour F9, c'est une erreur de ma part, F5 sert sur pratiquement tout les logiciels à actualiser, mais pas sur Excel, effectivement c'est F9 :eek:...
J'ai ouvert le fichier de Roger, et effectivement, avec les événementielles, le calcul se lance en automatique, et sans les événementielles, nous ne saurons pas quelles sont les cellules qui ont changé...
Si tu repart par formule, replonge toi dans le raisonnement que je t'avais donné ICI, je pense qu'il y a moyen de faire, mais je n'ai pas trop le temps pour m'y pencher aujourd'hui.
Pour l'utilisateur, c'est sûr que c'est long, mais s'il préfère tout faire à la main :p...
Bon courage :cool:
 

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re,

J'ai réussi à faire fonctionner le système de formules.
Le problème que je risque d'avoir c'est au niveau de la fonction contenant la définition des différents types d'absence, surtout s'il n'y a pas que 2 chiffres possibles pour une même lettre (1 et 0,5) mais 3 (1, 0.5 et 0).

Il y a par exemple:
base = Array((Array("U" , 45 , 0.5), ...

qui a pour effet que lorsqu'il y a ≤45 U, U=1 et au-delà U=0.5

Que faut-il changer dans le code lorsqu'il y a une 3e valeur possible, p.ex.: dans le cas où U≤45: U=1; U>45 et ≤60: U=0.5; U>60: U=0?

A+

Aloha
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour Aloha, le forum,
j'ai du mal à comprendre ta demande.
Peux-tu mettre un exemple sur ton fichier en expliquant ce que tu veux et en inscrivant le résultat attendu dans la cellule où tu veux placer la formule ?
 

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour,

J'ai essayé d'illustrer à l'aide d'un exemple: la première personne a 22 C en janvier; comme ceux jusqu'à 14 sont comptés en entier, elle a donc: 14 + (8/2) = 18
La 3e:30 en janvier, donc: 14 + (16/2) = 22 jours présents (+ les vrais jours présents évidemment et les jours résultant des autres codes)
Comme les C de la 3e personne continuent jusqu'en février sans interruption, il faut donc les considérer tous ensemble: 30 en janvier + 28 en février = 58 C
De ces 58 sont comptés en entier les premiers 14, à moitié du 15e au 45e, et 0 ceux au-dessus du 45e.

Et mon message précédent concerne donc les définitions de ces seuils qui jusqu'ici étaient au nombre de 2 seulement (1 et 0.5) et dont il y en a maintenant qui peuvent prendre 3 valeurs (1, 0.5 et 0).

J'espère que je me suis fait comprendre.

Bonne après-midi

Aloha
 

Fichiers joints

Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re...
Je vous prie d'accepter mes plus plates excuses pour ne pas travailler plus vite. Il se trouve que, ne jouissant pas de fortune personnelle et malgré mon grand âge, il m'arrive aussi de devoir travailler pour manger. J'espère que ce n'est pas une mauvaise raison.
Quant à votre problème, faisons le point.
En fait, il ne s'agit pas du tout d'un décompte de périodes continues avec prise en compte d'un seuil de 60.
Les catégories A, B, C, etc. étaient bidon : il fallait lire F, V, C,U et R.
Le décompte peut être sur une période continue ou discontinue (critère V).
Il peut n'y avoir aucun seuil (critère P), un seuil (critères F, V), deux seuils (critère C), un nombre de seuils à deviner (critères R, U) !
La structure de la feuille dépend de l'humeur du moment. Il convient pour l'instant d'ajouter deux colonnes.
Sur ces bases, voyez une proposition dans le classeur joint.
J'espère qu'au moment où j'envoie ce message, le problème n'a pas radicalement changé.

(...) j'entends déjà les gens -dont certains sont très réticents envers tout ce qui est ordinateur- rouspeter lorsqu'il remplissent un mois, qu'ils copient un P du 1er au dernier jour pour une personne qui était présente tout le temps et qu'ils doivent attendre une minute entière avant de pouvoir aborder la prochaine personne! (...)
C'était (peut être) vrai sur les premiers essais. Avec cette nouvelle version, il faut tout au plus 1,9 secondes pour valider une saisie avec une machine portable d'il y a trois ans dotée d'un mégaoctet de mémoire vive et d'un processeur cadencé à 1,6 MHz. Ce n'est pas encore merveilleux, mais cela permet plus de mille huit cents saisies à l'heure. D'autant que s'il s'agit de saisir le même code sur toute la ligne, on peut le faire en une seule fois : sélectionner les cellules, saisir le code une fois, valider par Ctrl + Entrée.

Je me demande si je ne devrais pas revenir à la version où il y a les formules, car là je peux contrôler les calculs et en plus j'arrive à faire des modifications au niveau de la structure (ajouter des colonnes p.ex.) sans casser tout le système, alors qu'avec du pur VBA je dépends toujours d'aide extérieure! Qu'en penses-tu?
Rien.
Enfin si : je suis impatient de voir une version "tout-formules" plus rapide et pas beaucoup plus lourde...​
ROGER2327
#2696
 

Fichiers joints

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Bonjour Roger,

Merci de donner de vos nouvelles. Merci beaucoup pour la nouvelle solution qui est, je pense, la bonne!

Je suis tout à fait conscient que vous ne me devez rien du tout, c'est moi qui suis votre débiteur!

Si j'ai pu paraître impatient, c'est parce que je ne savais pas si je pouvais encore m'attendre à une aide de votre part ou non. Si j'avais eu l'information que c'était le cas, je ne vous aurais pas dérangé. Voilà aussi la raison de ma réflexion sur une solution par formules, parce qu'avec vos fonctions je serais probablement capable de me débrouiller plus ou moins seul avec une telle solution.

Comprenez svp que les critères ne dépendent pas de mon humeur à moi et s'il y en a 2 qui ne sont pas du tout ou partiellement définis, ce n'est pas dû à mes lubies à moi non plus!

N'ayez crainte, la structure n'a pas changé depuis, mais pour être franc, elle risque de changer encore légèrement puisque je ne sais pas encore s'il y a d'autres données concernant les personne qu'il faudrait saisir (p.ex. date de naissance et éventuellement un numéro). La conséquence en serait l'ajoute d'une ou deux colonnes supplémentaires.

La description que vous donnez des critères est tout à fait exacte.

La vitesse est beaucoup plus grande maintenant et tout à fait acceptable.
J'ai fait quelques tests et tout semble fonctionner à la merveille!

Un manque qu'il y a encore, mais qui ne jouera qu'en janvier 2011, c'est la non prise en compte des jours de la fin de l'année précédente (pour le seuil de 60 il faut donc remonter jusque début novembre au maximum). Je ne vois pas encore trop comment résoudre ce problème. Peut-être en ajoutant 2 feuilles pour novembre et décembre de l'année précédente? Je pourrais mettre les données par copier/coller. Evidemment cela augmenterait le nombre de personnes considérablement.

Merci encore et bonne journée

Aloha.
 

Aloha

XLDnaute Accro
Re : Compter différemment les valeurs consécutives (critère: <61 ou >60)

Re,

Encore une petite question: Je voulais faire une liste de validation et j'ai re-remarqué que la liste doit être sur la même feuille.
Pour éviter encore une fois des formules pour copier la lsite dans chaque feuille mensuelle depuis "Base", y aurait-il une possibilité facile pour limiter par VBA la saisie aux caractères représentant les critères?

A+

Aloha
 

Discussions similaires


Haut Bas