XL 2016 Compter Le Nbre des Zéros Consecutifs à Condition > 9

Foufoudora

XLDnaute Occasionnel
Bonjour
Je cherche à compter le nombre des zéros consécutifs quand le nombre est supérieur à 9.
Si le nombre est Inférieur à 9 de rien faire.
Il faut que les Zéros soient consécutifs pour faire le calcul.
Voir fichier ci-joint.
Merci pour votre aide
Cordialement
 

Pièces jointes

  • Nombre de Zéro.xlsx
    8.8 KB · Affichages: 53

Foufoudora

XLDnaute Occasionnel
Rebonsoir
D'abord merci pour ta patience.
Ce que je souhaite que le calcul devrait se faire par paquet de > 9 Zéros consecutifs.
Exemple:
Si j'ai une série est inférieur à 10 rien
Si j'ai une seule série de 10 ou plus le resultat est 10 ou plus
Si j'ai une série de 10 qui est > 9 et une serie de 9 ou inférieur ce qui implique un resultat égale à 10 Zéros.
Si j'ai une série de 10 qui est > 9 et une serie de 11 ce qui implique un resultat égale à 21 Zéros.
Il faut que la série depasse 9 pour qu'on puisse cumuler le resultat
J'espère d'etre plus clair que tout à l'heure
Cordialement
Modification : J'ai joint un Fichier
 

Pièces jointes

  • Nombre de Zero Consecutifs.xlsx
    15.3 KB · Affichages: 24
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Ah enfin ! Avec les fichiers exemples on y comprend quelque chose, ce n'est pas trop tôt !!!

Plus question de MFC ou de formules matricielles, ça me paraît impossible.

Par fonction VBA c'est toujours très simple :
Code:
Function SommeZerosConsecutifs(r As Range, nref%)
Dim n%
For Each r In r
  If CStr(r) = "0" Then
    n = n + 1
  Else
    If n > nref Then SommeZerosConsecutifs = SommeZerosConsecutifs + n
    n = 0
  End If
Next
If SommeZerosConsecutifs = 0 Then SommeZerosConsecutifs = ""
End Function
Fichier joint.

Bonne nuit.
 

Pièces jointes

  • SommeZérosConsécutifs(1).xlsm
    23.4 KB · Affichages: 35

Foufoudora

XLDnaute Occasionnel
Bonsoir Job75
1ère Ligne : J'ai une série de 14 et une de 16 le resultat devrait etre 30
3ème Ligne : J'ai 2 séries de 10 Chacune le resultat devrait etre 11
4ème Ligne : Idem 1ère Ligne
Voir Fichier
Bonne nuit à vous
 

Pièces jointes

  • MaxZerosConsecutifs Job75 V1.xlsm
    20.8 KB · Affichages: 38

CISCO

XLDnaute Barbatruc
Bonsoir

C'est tellement plus simple avec de nombreux exemples pour expliquer la situation. Cf. en pièce jointe, avec une formule matricielle à rallonge...

@ plus
 

Pièces jointes

  • Nouvelle version Nombre de Zeroter.xlsx
    15.8 KB · Affichages: 39

Foufoudora

XLDnaute Occasionnel
Bonsoir Cisco
Tu as tout à fait raison.
J'aurais du etre explicite depuis le début ca aurait evité de perdre beaucoup de votre temps.
Mais tellement c'etait clair dans ma petite cervelle :)
Concernant ta dernière version de fichier, de première vue ca a l'air fonctionné.
Je reviendrai vers vous assez rapidement après plusieurs testes.
Bien Cordialement
 

job75

XLDnaute Barbatruc
Re,

Réponse au post #34 : oui il manquait une ligne de code :
Code:
Function SommeZerosConsecutifs(r As Range, nref%)
Dim n%
For Each r In r
  If CStr(r) = "0" Then
    n = n + 1
  Else
    If n > nref Then SommeZerosConsecutifs = SommeZerosConsecutifs + n
    n = 0
  End If
Next
If n > nref Then SommeZerosConsecutifs = SommeZerosConsecutifs + n
If SommeZerosConsecutifs = 0 Then SommeZerosConsecutifs = ""
End Function
Fichier (2).

Re-bonne nuit.
 

Pièces jointes

  • SommeZérosConsécutifs(2).xlsm
    23.3 KB · Affichages: 36

job75

XLDnaute Barbatruc
Bonjour Foufoudora, le fil, le forum,

On peut créer une MFC sur la plage B5:AF8 en utilisant ces 2 fonctions :
Code:
Function ZerosConsecutifs(r As Range, nref%, Optional adr As Boolean)
Dim c As Range, n%
For Each c In r
  If CStr(c) = "0" Then
    n = n + 1
  Else
    If n > nref Then
      If adr Then
        ZerosConsecutifs = ZerosConsecutifs & "," & c(1, 1 - n).Resize(, n).Address(0, 0)
      Else
        ZerosConsecutifs = ZerosConsecutifs + n
      End If
    End If
    n = 0
  End If
Next
If adr Then
  If n > nref Then ZerosConsecutifs = ZerosConsecutifs & "," & r(r.Count + 1 - n).Resize(, n).Address(0, 0)
  ZerosConsecutifs = Mid(ZerosConsecutifs, 2)
Else
  If n > nref Then ZerosConsecutifs = ZerosConsecutifs + n
  If ZerosConsecutifs = 0 Then ZerosConsecutifs = ""
End If
End Function

Function MFC(c As Range, a$) As Boolean
MFC = Not Intersect(c, c.Parent.Range(a)) Is Nothing
End Function
Bonne journée.
 

Pièces jointes

  • ZérosConsécutifs et MFC(1).xlsm
    25.9 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re,

Je découvre un phénomène étrange sur mon dernier fichier qui devrait intéresser les VBAistes.

Chez moi sur Win 10 - Excel 2013 la macro Workbook_Open (dans ThisWorkbook) ne se déclenche pas (sauf à la toute 1ère ouverture).

Par contre elle se déclenche bien si l'on supprime la MFC.

Et avec une macro Auto _Open (dans Module1) il n'y a aucun problème :
Code:
Sub Auto_Open() 'Workbook_Open dans ThisWorkbook ne fonctionne pas !!!
'MsgBox "OK" 'pour vérifier
ThisWorkbook.Saved = True 'évite l'invite à la fermeture si aucune modification
End Sub
Fichier (2).

Vraiment très très curieux n'est-ce pas ?

A+
 

Pièces jointes

  • ZérosConsécutifs et MFC(2).xlsm
    26.6 KB · Affichages: 41

Foufoudora

XLDnaute Occasionnel
Bonjour Le fil et le Forum
Merci beaucoup pour ces fichiers et votre implication. A première vu ca fonctionne.
Cisco : le fichier fonctionne à merveille.
Mapomme : idem
Job75 : le Fichier ZérosConsécutifs et MFC(1) fonctionne aussi et je n'ai pas eu de souci. (Win 10 et Excel 2016).
Rectification : en ouvrant le fichier la ligne "Janvier avec les 31 jours" ne sait pas afficher idem pour les colonnes AH et AI. tout est redevenu normal au saisi des données. Bizarre
Job75 : Si je voulais changer > 9 ou inferieur je changerais le "9" dans
=SIERREUR(AF$4-ZerosConsecutifs(B6:AF6;9);""). Merci par avance
Cisco et Mapomme : J'ai essayé de décortiquer vos formules et je pense que il suffit de changer aussi le 9 pour avoir une nouvelle variable. Bien sûr à revalider par Ctrl + Shift + Enter
Permettez-moi de revenir vers vous au cas où il y a des bugs inopinés.
Bien Cordialement et Bon dimanche.
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re,

Je découvre un phénomène étrange sur mon dernier fichier qui devrait intéresser les VBAistes.

Chez moi sur Win 10 - Excel 2013 la macro Workbook_Open (dans ThisWorkbook) ne se déclenche pas (sauf à la toute 1ère ouverture).

Par contre elle se déclenche bien si l'on supprime la MFC.

Et avec une macro Auto _Open (dans Module1) il n'y a aucun problème :
Code:
Sub Auto_Open() 'Workbook_Open dans ThisWorkbook ne fonctionne pas !!!
'MsgBox "OK" 'pour vérifier
ThisWorkbook.Saved = True 'évite l'invite à la fermeture si aucune modification
End Sub
Fichier (2).

Vraiment très très curieux n'est-ce pas ?

A+


bonjour tout le monde,

j'ai le même phénomène avec Win 7 64 et Excel 2007
 

CISCO

XLDnaute Barbatruc
Bonsoir à tous

La dernière proposition de Mapomme est bien plus intéressante que la mienne*.

On peut même la raccourcir en mettant B$4:AF$4 à la place de COLONNE(...).

Sa proposition renvoie une cellule vide s'il y a une cellule vide dans la ligne en cours. Si tu veux quand même un résultat, tu peux faire avec SI(""&B5:AF5="0" à la place de SI(B5:AF5=0.

@ plus

* En simplifiant, il a fait avec FREQUENCE (liste des positions des 0;liste des positions des 1), et moi avec FREQUENCE (listes des positions de 0; liste des positions des premiers et des derniers 0), nettement plus compliqué...
 

Pièces jointes

  • Foufoudora- Nombre de Zéro-Mapomme modifié.xlsx
    15.9 KB · Affichages: 47
Dernière édition:

Foufoudora

XLDnaute Occasionnel
Bonjour Le Fil et le Forum
Merci Cisco pour cette version.
Il me fait grand plaisir de vous remercier un à un.
Merci à ce Forum qui est une aventure collective d'entraide GRATUITE ce qui est très rare dans notre temps.
Bon dimanche à vous tous
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 149
Membres
103 132
dernier inscrit
hedfahmi