Compter des "suites consécutives" selon conditions

poulie

XLDnaute Impliqué
Bonjour à tous,

Je souhaite, sur une feuille planning, réaliser la somme de valeurs (0 ou 1 ou 2), avec formules, à des "suites dites consécutives".

Le souci est lié à deux conditions, si la personne est en congé annuel (d'où le sigle CA) et selon la date (Samedi, dimanche et fériés).

J'ai ajouté des explications sur le fichier ainsi qu'un début de réflexion sur la deuxième feuille (essai).

Merci à l'avance
 

Pièces jointes

  • Essai.zip
    6.7 KB · Affichages: 45
  • Essai.zip
    6.7 KB · Affichages: 47
  • Essai.zip
    6.7 KB · Affichages: 42

poulie

XLDnaute Impliqué
Re : Compter des "suites consécutives" selon conditions

Bonsoir James 007,

Merci de ta réponse.

Ma préférence va en effet pour ... une formule. A moins que cela soit impossible.

J'opterais en effet pour une macro tout en souhaitant l'adapter à d'autres feuilles et plages. En comprenant ces adaptations.
 
Dernière édition:

James007

XLDnaute Barbatruc
Re : Compter des "suites consécutives" selon conditions

Pour la formule matricielle qui tue ... il faut LE talent de Monique ...:)
qui peut te résoudre çà en quelques secondes ...!!!

Perso, je n'y arrive qu'après plusieurs heures "frustantes" de tests :(

Si j'ai du courage ..., j'essayerai ce soir ...

A +
 

job75

XLDnaute Barbatruc
Re : Compter des "suites consécutives" selon conditions

Bonsoir poulie, James007,

Pas sûr d'avoir tout bien compris, mais voici une solution avec :

- 2 lignes auxiliaires 5 et 6 (à masquer)

- la fonction macro SOM utilisée en ligne 6 :

Code:
Function SOM(cel As Range, plage As Range) As Integer 'plage évite de rendre volatile la fonction
Dim i As Integer
If cel Then
  While cel.Offset(, i)
    SOM = SOM + cel.Offset(, i)
    i = i - 1
  Wend
  i = 1
  While cel.Offset(, i)
    SOM = SOM + cel.Offset(, i)
    i = i + 1
  Wend
End If
End Function

Fichier joint.

Il doit en effet être possible de se passer du VBA.

A+
 

Pièces jointes

  • Essai(1).zip
    13.2 KB · Affichages: 38
  • Essai(1).zip
    13.2 KB · Affichages: 31
  • Essai(1).zip
    13.2 KB · Affichages: 35
Dernière édition:

poulie

XLDnaute Impliqué
Re : Compter des "suites consécutives" selon conditions

Bonsoir job75,

Merci de ta réponse.


Le début de réflexion, sur lequel je suis stoppé, n'était qu'un essai.
Je vais tenter d'être plus précis.

Dans un premier temps il faudrait que je compte le nombre de CA entre deux jours travaillés (quite à ce qu'il y ait des R et F entre ces deux jours travaillés) sur la plage.

Puis selon le résultat obtenu:
si entre les deux jours ravaillés le nombre de CA est nférieur à 3 CA alors 0. Si entre 3 et 5 CA, alors 1. Si supérieur à 5, alors 2.

Enfin, je fais la somme des 0, 1 et 2 (s'il y a lieu).

Deux difficultés:

Entre les deux jours travaillés, il peut y avoir des R et F.
Les CA posés peuvent l'être à n'importe quelle dates.


Merci encore
 

Pièces jointes

  • Copie de Essai(1).xls
    37.5 KB · Affichages: 59
  • Copie de Essai(1).xls
    37.5 KB · Affichages: 60
  • Copie de Essai(1).xls
    37.5 KB · Affichages: 48

job75

XLDnaute Barbatruc
Re : Compter des "suites consécutives" selon conditions

Re,

Oui en effet, il ne faut pas compter les "R" et les "F" :

Code:
Function SOM(cel As Range, plage As Range) As Integer 'plage évite de rendre volatile la fonction
Dim i As Integer
If cel Then
  While cel.Offset(, i)
    [COLOR="Red"]If cel.Offset(-2, i) = "CA" Then[/COLOR] SOM = SOM + cel.Offset(, i)
    i = i - 1
  Wend
  i = 1
  While cel.Offset(, i)
    [COLOR="red"]If cel.Offset(-2, i) = "CA" Then[/COLOR] SOM = SOM + cel.Offset(, i)
    i = i + 1
  Wend
End If
End Function

Voir aussi la formule en B11 pour le résultat final :

Code:
=SOMMEPROD(B7:AE7*(B7:AE7<>C7:AF7))

A+
 

Pièces jointes

  • Essai(2).zip
    13.4 KB · Affichages: 28
  • Essai(2).zip
    13.4 KB · Affichages: 27
  • Essai(2).zip
    13.4 KB · Affichages: 26
Dernière édition:

poulie

XLDnaute Impliqué
Re : Compter des "suites consécutives" selon conditions

Bonsoir job75;

J'ai effectué plusieurs tests et ce que tu m'as proposé résoud mon interrogation.
Une dernière question. Puis-je utiliser cette fonction sur les autres feuilles voir sur d'autres plages ?.


Merci encore
 

job75

XLDnaute Barbatruc
Re : Compter des "suites consécutives" selon conditions

Bonsoir poulie,

Une bien meilleure solution, sans VBA, avec cette formule matricielle en B6 :

Code:
=NB.SI(INDEX(3:3;MAX(COLONNE($A5:B5)*($A5:B5=0))):INDEX(3:3;MIN(SI(B5:$IV5=0;COLONNE(B5:$IV5))));"CA")

A valider par Ctrl+Maj+Entrée et à tirer vers la droite.

L'utilisation de INDEX est plus simple que DECALER.

Les références sont facilement adaptables à des lignes quelconques et peuvent être dans une autre feuille (références externes).

Edit : formule plus simple aussi en B11 :

Code:
=SOMMEPROD(B7:AE7*NON(C7:AF7))

Bonne nuit et A+
 

Pièces jointes

  • Essai(3).zip
    11 KB · Affichages: 40
  • Essai(3).zip
    11 KB · Affichages: 34
  • Essai(3).zip
    11 KB · Affichages: 37
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 354
Membres
103 824
dernier inscrit
frederic.marien@proximus.