Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Formule calcul

djam28

XLDnaute Occasionnel
Bonjour à tous,
Je sollicite vos connaissances pour résoudre un petit problème sur excel. J'ai un fichier (ci-joint avec les explications) avec 3 colonnes: temps , DC (binaire 1/0) et une colonne censure où je voudrais mettre une formule qui compte le total des 0 entre entre chaque 1 de la colonne DC (voir les explications sur le fichier ).
Je vous remercie de ce que vous ferez

DE
 

Pièces jointes

  • SURVIE.xlsx
    12.5 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Djam,
Un essai en PJ avec une fonction perso :
VB:
Function NB0(Ligne%)
    If Cells(Ligne, 2) = 0 Then NB0 = "": Exit Function
    If Ligne = 2 And Cells(Ligne, 2) = 1 Then NB0 = 0: Exit Function
    For L = Ligne - 1 To 1 Step -1
        If Cells(L, 2) = 1 Then Exit Function
        NB0 = NB0 + 1
    Next L
End Function
La syntaxe est =NB0(LIGNE())
Dans la PJ la formule est utilisée colonne 7.
A noter certaines erreurs ( colonne 10 ) mais après recomptage, j'ai bien peur que cela soit dans vos résultats et non les miens.
 

Pièces jointes

  • SURVIE.xlsm
    19.4 KB · Affichages: 8

djam28

XLDnaute Occasionnel
Bonjour Sylvanu,
Mille mercis , au top. Une dernière requête, mon vrai tableau ne commence pas à la première ligne et la colonne cible (DC) est différente, peux-tu adapter la macro, je suis vraiment nul, je t'en serai reconnaissant!!
Meci+++
 

Pièces jointes

  • Copie de SURVIE-2.xlsm
    17.3 KB · Affichages: 4

djam28

XLDnaute Occasionnel
Bonjour Phil69970,
Merci pour cette proposition mais la solution Sylvanu est plus appropriée aux données que je voudrais traiter
Merci en tout cas. J’attends le retour de Sylvanu
Bonne soirée à vous tous
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re le fil,
Si le tableau peut être n'importe où alors il faut lui préciser où il commence.
Un ex avec :
VB:
Function NB0(Ligne%, Colonne%, LigneDébut%)
    Application.Volatile
    If Cells(Ligne, Colonne - 1) = 0 Then NB0 = "": Exit Function
    If Cells(Ligne, Colonne - 1) = 1 And Cells(Ligne - 1, Colonne) = "Censure" Then NB0 = 0: Exit Function
    For L = Ligne - 1 To LigneDébut + 1 Step -1
        If Cells(L, Colonne - 1) = 1 Then Exit Function
        NB0 = NB0 + 1
    Next L
End Function
 

Pièces jointes

  • Copie de SURVIE-2.xlsm
    18.8 KB · Affichages: 4

djam28

XLDnaute Occasionnel
Bonjour @djam28, Sylvain

Je te propose une variante en VBA

@Phil69970
Bonsoir Phil,
Je voudrais reprendre ta suggestion, avec comme critère le compte des 0 entre les 1 et non le nombre des lignes , ci joint l'exemple. (en rouge le résultat attendu) ..si c'est possible en formule ou sinon en VBA macro
Merci beaucoup
DE
 

Pièces jointes

  • Copie de Survie VV.xlsm
    24.6 KB · Affichages: 4

djam28

XLDnaute Occasionnel
Re le fil

Voici le fichier modifié :

Comme il y a une erreur en "J18" et en "J23" j'ai mis les résultats dans la colonne L

@Phil69970
Bonsoir Phil,
Désolé de vous déranger à nouveau, votre stratégie répond à mes attentes. Cela étant, j'ai changé ma façon de faire et je voudrais apporter un petit changement à ta macro. Je voudrais faire la somme de la colonne rouge entre chaque 1 (en jaune). J'ai mis un exemple plus parlant. MERCI INFINIMENT
 

Pièces jointes

  • Copie de Survie V2-1.xlsm
    32.5 KB · Affichages: 2

Discussions similaires

Réponses
3
Affichages
640
Réponses
49
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…