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

Aloha

XLDnaute Accro
Bonjour,

Comment construire une formule qui compte les valeurs d'un groupe consécutif en entier jusqu'à 60 et à moitié au-dessus de 60?

Voir l'exemple joint qui est, je le pense, assez éloquent.

Merci pour toute aide.

Aloha
 

Pièces jointes

  • Valeurs comptées différemment.xls
    14 KB · Affichages: 148
Dernière édition:

Aloha

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

Bonne après-midi,

Roger, le système a vraiment l'air de marcher! Merci beaucoup!

Seulement, lorsque je veux ajouter d'autres mois et compléter la liste des jours dans Année, je reçois plein plein de "Valeur". J'ai joint le fichier modifié.

A+

Aloha
 

Pièces jointes

  • Aloha_2667.zip
    28.3 KB · Affichages: 45
  • Aloha_2667.zip
    28.3 KB · Affichages: 38
  • Aloha_2667.zip
    28.3 KB · Affichages: 44

Aloha

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

..suite..

Je viens de remarquer: Lorsque dans le tableau sur fond vert je veux étendre la rangée de la formule dans H9 d'une seule unité, jusqu'au 1.5.2010 (après avoir introduit cette date), la formule s'affiche au lieu de la valeur!

=ValSeuil(DECALER($A$3:$A$123;0;EQUIV($F$8;$B$2:$AY$2;0));$F9;H$8),
et lorsque je remets le chiffre 2, la formule reste affichée.

Aloha
 

JNP

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

Re :),
Désolé, je pense que le problème vient de ma fonction
Code:
Function RechercheAbsence(DateCherchée, Nom As String) As String
Application.Volatile
Dim Mois As String
Select Case Month(DateCherchée)
Case 1
Mois = "JANVIER"
Case 2
Mois = "FEVRIER"
Case 3
Mois = "MARS"
Case 4
Mois = "AVRIL"
End Select
With Sheets(Mois)
RechercheAbsence = .Cells(.Cells.Find(Nom).Row, Day(DateCherchée) + 1)
End With
End Function
Je m'étais arrêté au mois d'avril, mais il faut bien sûr la compléter...
Roger, toujours aussi efficace, j'ai pas tout suivi, mais ça marche ;).
Bonne soirée :cool:
 

Aloha

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

Bonsoir,

J'avais complété la fonction avec les mois manquants, et j'ai également continué les jours dans ANNEE jusqu'au 31.12., mais dès que je touche à quoi que ce soit et que j'apporte une modification le résultat sont des "VALEUR" partout, sans exception!

Bonne nuit

Aloha
 

JNP

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

Re :),
Je viens d'ouvrir le fichier joint, et si tu as complété la fonction, les feuilles de Juin à Décembre n'existent pas, donc la fonction ne peut que donner "#VALEUR!"...
Bon courage :cool:
 

Aloha

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

Bonjour,

Je viens de compléter les feuilles des mois, mais cela ne change malheureusement rien!

Bonne journée

Aloha
 

Pièces jointes

  • Aloha_2668.zip
    22 bytes · Affichages: 34
  • Aloha_2668.zip
    22 bytes · Affichages: 33
  • Aloha_2668.zip
    22 bytes · Affichages: 33

JNP

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

Re :),
2 choses :
Il manque dans la fonction le cas 5 : MAI.
Dans tes feuilles de MAI à DECEMBRE, le nom des personnes Personne1 et 2, n'est pas rempli, donc évidemment, ça le fait pas :p...
Pour éviter le problème, j'ai modifié la fonction en vérifiant si le Nom cherché est "" et en cas d'erreur dans la recherche de date, je renvoie "Néant"
Code:
Function RechercheAbsence(DateCherchée, Nom As String) As String
[COLOR=red][COLOR=#000000]Application.Volatile[/COLOR]
If Nom = "" Then
RechercheAbsence = ""
Exit Function
End If
[/COLOR]Dim Mois As String
Select Case Month(DateCherchée)
Case 1
Mois = "JANVIER"
Case 2
Mois = "FEVRIER"
Case 3
Mois = "MARS"
Case 4
Mois = "AVRIL"
[COLOR=red]Case 5[/COLOR]
[COLOR=red]Mois = "MAI"[/COLOR]
Case 6
Mois = "JUIN"
Case 7
Mois = "JUILLET"
Case 8
Mois = "AOUT"
Case 9
Mois = "SEPTEMBRE"
Case 10
Mois = "OCTOBRE"
Case 11
Mois = "NOVEMBRE"
Case 12
Mois = "DECEMBRE"
End Select
[COLOR=red]On Error GoTo Fin[/COLOR]
With Sheets(Mois)
RechercheAbsence = .Cells(.Cells.Find(Nom).Row, Day(DateCherchée) + 1)
End With
[COLOR=red]On Error GoTo 0[/COLOR]
[COLOR=red]Exit Function[/COLOR]
[COLOR=red]Fin:[/COLOR]
[COLOR=red]RechercheAbsence = "Néant"[/COLOR]
End Function
Bon courage :cool:
 

ROGER2327

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

Bonjour à tous
Ci-joint une version sur douze mois. Il y a encore de l'optimisation à faire pour rendre le fonctionnement plus rapide, mais le choix d'utiliser des formules au lieu d'une procédure globale ne permet guère d'alléger et d'accélérer beaucoup...​
ROGER2327
#2667
 

Pièces jointes

  • Aloha_2667.zip
    43.5 KB · Affichages: 45
  • Aloha_2667.zip
    43.5 KB · Affichages: 35
  • Aloha_2667.zip
    43.5 KB · Affichages: 38

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
 

Pièces jointes

  • Aloha_2674.zip
    22.2 KB · Affichages: 41

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
 

Discussions similaires

Réponses
306
Affichages
25 K