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
Bonsoir
Merci pour ta réponse
Pour la Ligne 5 en AK5 je dois trouver 31 - 16(Zéro)= 15
Pour la ligne 6 je dois trouver rien car je n'ai pas des 9 Zéros consécutifs.
Bien Cordialement
Je n'ai pas bien compris si les séquences de 0 doivent au moins avoir 9 zéros (comme le message #3 le laisserait croire) ou au moins 10 zéros (comme le message #1 le laisserait penser).
La formule du fichier joint considère que les séquences de zéros doivent avoir 10 zéros ou plus pour être pris en compte.
La formule est une formule matricielle à valider par la combinaison des 3 touches Ctrl+Maj+Entrée et non par la seule touche entrée.
Bonjour Mapomme et le forum
Je te remercie, et permettez-moi de te rendre compte plus tard car je ne peux pas vérifier actuellement la formule.
Bien cordialement
J'apporte également ma contribution sur le fichier transmis par MaPomme.
Si j'en crois les explications de Foufoudora, en 2nde ligne, le résultat doit être rien ou "" car il n'y a pas 9 zéros consécutifs et du coup sur la 3ème ligne, ayant 9 zéros consécutifs sur les 9 premières cellules, le résultat devrait être 7 (les sept fois 1 présents sur la ligne).
Il s'agit d'une interprétation littérale, j'en conviens.
J'utilise ici une concaténation des cellules et je cherche les 9 zéros consécutifs via CHERCHE("000000000"), éventuellement à modifier si il s'agit de 10 zéros consécutifs à trouver. Si la fonction CHERCHE renvoie une erreur, alors on fait "rien"... Sinon, on somme les 1 présents sur la ligne.
Il ne s'agit ici pas d'une formule matricielle.
Avec cette fonction VBA à placer dans un module standard (Alt+F11) :
Code:
Function MaxZerosConsecutifs(r As Range)
Dim n
For Each r In r
If CStr(r) = "0" Then
n = n + 1
If n > MaxZerosConsecutifs Then MaxZerosConsecutifs = n
Else
n = 0
End If
Next
End Function
Une solution en pièce jointe, avec une formule matricielle (à valider avec Ctrl+maj+entrer) plus courte.
@ plus
P.S1 : Dans mes premiers essais avec FREQUENCE, j'avais un mauvais résultat lorsqu'il y avait beaucoup de 1 consécutifs. J'ai résolu ce problème en les remplaçant par du texte (ici ""), qui n'est pas pris en compte par la fonction FREQUENCE.
P.S2 : Cf. dans les formules et la MFC s'il faut faire avec un > ou un >=.
P.S 3 : Cette méthode ne fonctionne pas si il y a un 0 tout seul dans les colonnes I, J, K... Méthode à modifier, donc.
Bonjour Le Fil et le Forum
D'abord un grand merci pour votre implication.
Désolé de vous répondre un peu tardivement (travail de nuit oblige ). Mapomme : Quand j'ai des cases vides je devrais pas avoir des résultats négatifs. Boo2bafoot : Quand je fais le calcul : AF4 - Nbre des Zéros consécutifs = 31 - 10 = 21. votre résultat est de 12. Cisco : Quand j'ai des cases vides le calcul ne se fait correctement. Job75 : permettez - moi d'avoir un peu de temps pour l'essayer.
Bien Cordialement
Bonjour le Fil et le Forum
Merci pour ta réponse Job75.
En faite, pour la fonction VBA et la formule matricielle, je dois avoir un résultat = 10 car j'ai un groupe de Zéros consécutifs matérialisé par des Zéros en rouge. Les Zéros en fond bleu ne devraient pas être comptabilisés. (voir Fichier joint)
Sauf si j'ai un deuxième groupe de 10 Zéros pour être comptabilisés.
Bien Cordialement
Bonjour Le Fil et le Forum
... Mapomme : Quand j'ai des cases vides je devrais pas avoir des résultats négatifs. ... Cisco : Quand j'ai des cases vides le calcul ne se fait pas correctement. ...
Bien Cordialement
Sans exemple avec des cellules vides dans ton fichier mis en pièce jointe, il était assez logique que nous ne traitions pas cette possibilité. Un test du style SI(B5:AF5=0 ne permettant pas de différencier les cellules vides des cellules contenant un 0, le résultat est parfois faux.
N'importe comment, la méthode que je proposais dans mon précédent post ne convient pas car elle plante* quand on met un 0 tout seul (donc précédé et suivi d'un 1) dans les colonnes I, J, K... J'essaye de la modifier en conséquence.
@ Plus
* Elle ramène un 2 car ce 0 est à la fois le début d'une série de 0 et la fin d'une série de 0 (là où je ne veux qu'un 1), et fait ensuite le produit 2 * n° donné dans la ligne 4 alors qu'il me faut le produit 1 * n° donné dans la ligne 4.