OVH Cloud OVH Cloud

NB.Si

4 réponses
Avatar
José Carapito
Bonjour...
J´ai déja vu pas mal de solutions pour NB.Si! Mais malheureusement je ne
trouve pas ma solution..:((
J´ai sur ma feuille:
B1=12
A2=10
A3=15
A4=11
A5, vide B5=10
A6=7
A7=8
A8,vide B8=13
A9=12
A10=14
Ce que je cherche comme résultats:
C1=NB.SI(A2:A4;critére c´est <B1)=2
C5=NB.SI(A6:A7;critére c´est <B5)=2
C8=NB.SI(A9:A10;critére c´est <B8)=1

Il y a t-il une macro que me me fera ça automatiquement en m´écrivante
directement les résultats sur C1, C5 et C8???!!

Je vous remercie...
À plus...;))

4 réponses

Avatar
isabelle
bonjour José,

c'est possible de le faire par une formule :

=NB.SI(A2:A4;"<"&B1)

ou

=SOMMEPROD(($A$2:$A$4<12)*1)

ou bien, comme tu le désire, par une macro :

Sub Macro1()
Dim début As Range, fin As String, plg As String, critère As String
Set début = Range("A2")
For Each c In Range("A3:A" & Range("A65536").End(xlUp).Row + 1)
If c = Empty Then
fin = Range(c.Address).Offset(-1, 0).Address
plg = Range(début.Address & ":" & fin).Address
critère = "<" & Range("B" & début.Row - 1)
Range(début.Address).Offset(-1, 2).Formula = "=SUMPRODUCT((" & plg & critère & ")*1)"
Set début = Range(c.Address).Offset(1, 0)
End If
Next
End Sub

isabelle

Bonjour...
J´ai déja vu pas mal de solutions pour NB.Si! Mais malheureusement je ne
trouve pas ma solution..:((
J´ai sur ma feuille:
B1
A2
A3
A4
A5, vide B5
A6=7
A7=8
A8,vide B8
A9
A10
Ce que je cherche comme résultats:
C1=NB.SI(A2:A4;critére c´est <B1)=2
C5=NB.SI(A6:A7;critére c´est <B5)=2
C8=NB.SI(A9:A10;critére c´est <B8)=1

Il y a t-il une macro que me me fera ça automatiquement en m´écrivante
directement les résultats sur C1, C5 et C8???!!

Je vous remercie...
À plus...;))




Avatar
José Carapito
Merci Isabelle,
Ça fonctionne très bien...
Vous êtes des pros à ça...;))
Salut!!

"isabelle" wrote:

bonjour José,

c'est possible de le faire par une formule :

=NB.SI(A2:A4;"<"&B1)

ou

=SOMMEPROD(($A$2:$A$4<12)*1)

ou bien, comme tu le désire, par une macro :

Sub Macro1()
Dim début As Range, fin As String, plg As String, critère As String
Set début = Range("A2")
For Each c In Range("A3:A" & Range("A65536").End(xlUp).Row + 1)
If c = Empty Then
fin = Range(c.Address).Offset(-1, 0).Address
plg = Range(début.Address & ":" & fin).Address
critère = "<" & Range("B" & début.Row - 1)
Range(début.Address).Offset(-1, 2).Formula = "=SUMPRODUCT((" & plg & critère & ")*1)"
Set début = Range(c.Address).Offset(1, 0)
End If
Next
End Sub

isabelle

Bonjour...
J´ai déja vu pas mal de solutions pour NB.Si! Mais malheureusement je ne
trouve pas ma solution..:((
J´ai sur ma feuille:
B1
A2
A3
A4
A5, vide B5
A6=7
A7=8
A8,vide B8
A9
A10
Ce que je cherche comme résultats:
C1=NB.SI(A2:A4;critére c´est <B1)=2
C5=NB.SI(A6:A7;critére c´est <B5)=2
C8=NB.SI(A9:A10;critére c´est <B8)=1

Il y a t-il une macro que me me fera ça automatiquement en m´écrivante
directement les résultats sur C1, C5 et C8???!!

Je vous remercie...
À plus...;))







Avatar
José Carapito
Oupssss...
J´ai remarquai que si jamais il y a le nombre "0" sur l´une des plages, la
macro ne marche plus...:((
Y-a-t il une solution pour cela?!
Merci...
Á plus

"José Carapito" wrote:

Merci Isabelle,
Ça fonctionne très bien...
Vous êtes des pros à ça...;))
Salut!!

"isabelle" wrote:

bonjour José,

c'est possible de le faire par une formule :

=NB.SI(A2:A4;"<"&B1)

ou

=SOMMEPROD(($A$2:$A$4<12)*1)

ou bien, comme tu le désire, par une macro :

Sub Macro1()
Dim début As Range, fin As String, plg As String, critère As String
Set début = Range("A2")
For Each c In Range("A3:A" & Range("A65536").End(xlUp).Row + 1)
If c = Empty Then
fin = Range(c.Address).Offset(-1, 0).Address
plg = Range(début.Address & ":" & fin).Address
critère = "<" & Range("B" & début.Row - 1)
Range(début.Address).Offset(-1, 2).Formula = "=SUMPRODUCT((" & plg & critère & ")*1)"
Set début = Range(c.Address).Offset(1, 0)
End If
Next
End Sub

isabelle

Bonjour...
J´ai déja vu pas mal de solutions pour NB.Si! Mais malheureusement je ne
trouve pas ma solution..:((
J´ai sur ma feuille:
B1
A2
A3
A4
A5, vide B5
A6=7
A7=8
A8,vide B8
A9
A10
Ce que je cherche comme résultats:
C1=NB.SI(A2:A4;critére c´est <B1)=2
C5=NB.SI(A6:A7;critére c´est <B5)=2
C8=NB.SI(A9:A10;critére c´est <B8)=1

Il y a t-il une macro que me me fera ça automatiquement en m´écrivante
directement les résultats sur C1, C5 et C8???!!

Je vous remercie...
À plus...;))









Avatar
isabelle
il faudrait ajouter une condition à cette ligne,

If c = Empty Then

remplacer par :

If c = Empty Or c = 0 Then

isabelle

Oupssss...
J´ai remarquai que si jamais il y a le nombre "0" sur l´une des plages, la
macro ne marche plus...:((
Y-a-t il une solution pour cela?!
Merci...
Á plus

"José Carapito" wrote:


Merci Isabelle,
Ça fonctionne très bien...
Vous êtes des pros à ça...;))
Salut!!

"isabelle" wrote:


bonjour José,

c'est possible de le faire par une formule :

=NB.SI(A2:A4;"<"&B1)

ou

=SOMMEPROD(($A$2:$A$4<12)*1)

ou bien, comme tu le désire, par une macro :

Sub Macro1()
Dim début As Range, fin As String, plg As String, critère As String
Set début = Range("A2")
For Each c In Range("A3:A" & Range("A65536").End(xlUp).Row + 1)
If c = Empty Then
fin = Range(c.Address).Offset(-1, 0).Address
plg = Range(début.Address & ":" & fin).Address
critère = "<" & Range("B" & début.Row - 1)
Range(début.Address).Offset(-1, 2).Formula = "=SUMPRODUCT((" & plg & critère & ")*1)"
Set début = Range(c.Address).Offset(1, 0)
End If
Next
End Sub

isabelle


Bonjour...
J´ai déja vu pas mal de solutions pour NB.Si! Mais malheureusement je ne
trouve pas ma solution..:((
J´ai sur ma feuille:
B1
A2
A3
A4
A5, vide B5
A6=7
A7=8
A8,vide B8
A9
A10
Ce que je cherche comme résultats:
C1=NB.SI(A2:A4;critére c´est <B1)=2
C5=NB.SI(A6:A7;critére c´est <B5)=2
C8=NB.SI(A9:A10;critére c´est <B8)=1

Il y a t-il une macro que me me fera ça automatiquement en m´écrivante
directement les résultats sur C1, C5 et C8???!!

Je vous remercie...
À plus...;))