Nbsi multi plages

Jimy

XLDnaute Occasionnel
Bonjour a tous.
De retour de vacances :) je me replonge dans mes travaux :p
Voila; je cherche a faire avec =NBSI() un choix de plusieurs plages ex:
Code:
 =SI(D24<=D57;NBSI(E2:I9;23);NBSI(E2:I8;23))
Cela marche mais le choix de plage est restreint .
Comment faire varier la taille de plage avec =nbsi() ici avec ("..." 23)
Comment faire une formule plus élégante ?
Si vous avez une idée ?
Merci d'avance
 
C

Compte Supprimé 979

Guest
Re : Nbsi multi plages

Salut Jimy,

Faut pas partir en vacances, c'est mauvais pour les posts sur le forum :D

Un petit fichier d'exemple de ce que tu veux faire, serait le bien venu !

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Nbsi multi plages

Bonjour,


Code:
Function NbSiMZ(champrech As Range, valCherchée)
  Application.Volatile
  temp = 0  
  For i = 1 To champrech.Areas.Count
    For j = 1 To champrech.Areas(i).Count
      If valCherchée = champrech.Areas(i)(j) Then
        temp = temp + 1
      End If
    Next j
  Next i
  NbSiMZ = temp
End Function

JB
Formation Excel VBA JB
 

Pièces jointes

  • FonctionNbSiMZx.xls
    38.5 KB · Affichages: 92

Jimy

XLDnaute Occasionnel
Re : Nbsi multi plages

Rebonjour
merci BOISGONTIER !
Nos messages se sont croisé.
Je ne connaissais pas cette formule :D
Question, il est nécessaire de la faire fonctionner avec VBA ?
Parce qu'en la tapant elle me renvoie #NOM?
merci de ton aide
 
G

Guest

Guest
Re : Nbsi multi plages

bonjour Jimy,
bonjour tout le monde

Voici deux solutions possibles (si j'ai bien compris le problème:rolleyes:)

La première avec la fonction Indirect
La deuxième avec la fonction Décaler

A bientôt
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Nbsi multi plages

Cette fonction est une fonction personnalisée:

=SI(D24<=D55;NBSIMZ((E2:E11;G2:G11;I2:I11);23))

On peut également créer un nom de champ multi-zones.

JB
 

Pièces jointes

  • NbsiVariable.xls
    33.5 KB · Affichages: 85

Jimy

XLDnaute Occasionnel
Re : Nbsi multi plages

Bonjour a tous
Et merci de votre aide.
Alors, j'ai essayé dans mon tableau de transposer le code que tu m'as donné (JB)
Mais il me renvoie erreur de compilation :confused: et toujours #NOM? qui s'affiche dans cellule B7
Autre question est on obligé de procéder avec des colonnes ou peut on étendre a une plage ( avec NbsiMZ() ) ? ( Définir un nom est encore la meilleure solution finalement )
Merci aussi a toi Hasco, pour ton aide, la solution DECALER est interessante, mais cela impose encore une cellule supplémentaire (remarques, je peux aussi mettre ces cellules dans une feuille que je crée ) parce que la feuille utilisée est déja bien chargée :rolleyes:
en tout cas merci a tous ( on se croirait aux remises des awards ):D
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Nbsi multi plages

Bonjour,

>Mais il me renvoie erreur de compilation et toujours #NOM? qui s'affiche dans cellule B7

Il faut insérer la fonction dans un module: Alt+F11 et Insertion/Module

Code:
Function NbSiMZ(champrech As Range, valCherchée)
  Application.Volatile
  temp = 0  
  For i = 1 To champrech.Areas.Count
    For j = 1 To champrech.Areas(i).Count
      If valCherchée = champrech.Areas(i)(j) Then
        temp = temp + 1
      End If
    Next j
  Next i
  NbSiMZ = temp
End Function

JB
 

Jimy

XLDnaute Occasionnel
Re : Nbsi multi plages

Re bonjour
Oui cela fonctionne maintenant :)
Mais il faut quand même un =SI() pour qu'il déclenche la variation de plages.
et en fait pour bien faire il me faudrait 3 plages de tailles différentes.
Une si D24 est plus petit que D55, la deuxième si D24 est plus grand et une troisième si D24 est plus grand que D56.
Comme je te disais tous ça alourdit la formule ! et ce n'est pas tout, parce qu'il faut appliquer le travail a 6 cellules :eek: ouf ! tu vois le boulot ?
Et ceci pour une valeur, alors imagines pour 40 valeurs lol !!
Je n'ai pas fini de taper les formules mdr !
enfin merci pour ton aide :)
 

abcd

XLDnaute Barbatruc
Re : Nbsi multi plages

Bonjour,

D'après ce que je comprends de la formule sous le premier message, il s'agit d'un NB.SI sur une plage de taille variable suivant condition : E2:I9 et E2:I8

Si c'est le cas ce devrait être faisable avec un DECALER et peut-être un petit tableau de correspondances.

Peux-tu mettre un exemple concret en pièce jointe, avec les résultats que tu souhaites obtenir ?

abcd
 

Jimy

XLDnaute Occasionnel
Re : Nbsi multi plages

Re
Ben ce n'est pas compliqué, il suffit de rajouter une plage plus grande ( E2:I10 ) a la formule:
Code:
 =SI(D24<=10,5;NB.SI(E2:I8;23);SI(D24<=11,5;NB.SI(E2:I9;23);NB.SI(E2:I10;23)))
J'ai simplifié en mettant la valeur a la place de la cellule D55 et D56
En nommant les plages, cela ferait:
Code:
=SI(D24<=10,5;NB.SI(Zone1;23);SI(D24<=11,5;NB.SI(Zone2;23);NB.SI(Zone3;23)))
Mais cela n'allège pas grand chose.
Bon dimanche a tous
 

Tibo

XLDnaute Barbatruc
Re : Nbsi multi plages

Bonjour,

J'ai un peu suivi le fil et j'ai bien compris qu'il y avait des plages de taille différente.

Mais comment sont définies ces plages de taille différente ?

Par exemple, dans la dernière formule que tu proposes, à quelles cellules correspondent les Zone1, Zone2 et Zone3 ?

Et de combien de zones auras-tu besoin et en fonction de quels tests ?

C'est sans doute simple pour toi, car tu sais de quoi tu parles, mais un peu (beaucoup) moins pour moi.

A te (re)lire avec plus de précisions

@+
 

Jimy

XLDnaute Occasionnel
Re : Nbsi multi plages

Bonjour Tibo
Oui, c'est vrai, je t'explique:
1* La taille des plages est définie par le rapport des cellules D24 et D55
2* La est le plus gros problème; il faut 6 fois ces 3 zones :rolleyes: ( 6 est la Taille de "n" mon échantillon )
3* les Zones 1, 2 et 3 ne correspondent pas a des cellules mais aux plages ( regardes les 2 formules dans mon dernier post: Zonne 1 correspond à E2:I8 )
J'espère avoir répondu a ta question ?
 

Tibo

XLDnaute Barbatruc
Re : Nbsi multi plages

re,

Pourrais-tu nous mettre plusieurs exemples ?

En fonction du contenu de D24 et D55, quelle devrait être la taille des différentes plages (car je n'ai pas trop compris ce que veut dire "le rapport des cellules D24 et D55")

Pour D24 et D55 = x, alors la taille de la plage de cellules est .....
Pour D24 et D55 = y, alors la taille de la plage de cellules est .....
Pour D24 et D55 = z, alors la taille de la plage de cellules est .....

etc

A te (re)lire

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 316
Messages
2 087 176
Membres
103 491
dernier inscrit
bilg1