Compter des "suites consécutives" selon conditions

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
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 +
 
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

Dernière édition:
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

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

Dernière édition:
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
 
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
R
Réponses
1
Affichages
1 K
Retour