Compter le nombre de cellules entre 2 occurences

Bonjour à tous,

Encore une petite demande de ma part.. je sais ca fait beaucoup en peu de temps. Promis après j'arrête et je travaille dans l'autre sens

Donc mon problème est le suivant: en colonne B, je fais un Si égal à LC_ALL alors compter le nombre de cellules ou lignes avant le prochain LC_ALL

le but est de dire: si j'ai une ligne je réalise tel calcul

si j'ai plus d'une ligne je réalise l'autre calcul

je joins un exemple de fichier très restreint parce que c'est pour une programmation avec des données qui peuvent être confidentielles

merci d'avance pour votre aide

Bonjour,

Met un exemple de résultat calculé à obtenir par telle ou autre formule.

Bonjour raja

le calcul en lui meme n'est pas un probleme, mon probleme c'est comment ecrire:

Quand j'ai LC_ALL, je compte le nombre de lignes jusqu'à LC_ALL suivant.

si nb de lignes =1 alors TOTO

si nb de lignes >1 alors TATA

TOTO et TATA etant mes calculs

Bonjour,

Formule pour calculer le nombre de lignes entre 2 "LC_ALL" :

=SI(B1="LC_ALL";SI(NB.SI(B1:$B$9;B1)>1;PETITE.VALEUR(SI(B1:$B$9="LC_ALL";LIGNE(B1:$B$9);9^9);2)-PETITE.VALEUR(SI(B1:$B$9="LC_ALL";LIGNE(B1:$B$9);9^9);1)-1;"");"")

Matricielle (validation par Ctrl+Maj+Entrée)

Cordialement.

merci MFerrand

Est ce que tu penses que je peux l'integrer dans une macro?

For i=3to iRow

IF Range("B" & i) = "LC_ALL" Then

X=ta formule

If X=1 Then

Range("W" & i) = "TOTO"

X=0

Else Range("W" & i) = "TATA"

X=0

End If

Else

End If

Next

ou bien est ce que cela s'écrirai un peu plus simplement que la combinaison de tout tes Si?

merci encore de ton aide, je vais voir ce que j'arrive à faire

S'il s'agit d'utiliser VBA pour le calculer, je procèderais directement avec une boucle Do... Loop.

C'est probablement plus rapide en VBA que s'enquiquiner avec une formule.

Cordialement.

C'est sur que c'est plus simple mais je ne connais pas ces boucles do loop

ca fait peu de temps que j'utilise VBA, j'ai quelque base mais il me manque encore beaucoup

Ecrit de façon plus structurée :

Sub Test()
    Dim n%, i%, x%
    With ActiveSheet
        n = .Cells(.Rows.Count, 2).End(xlUp).Row
        For i = 3 To n
            If .Cells(i, 2) = "LC_ALL" Then
                Do
                    If .Cells(i + x + 1, 2) = "LC_ALL" Then Exit Do
                    x = x + 1
                Loop While i + x < n
                If i + x = n Then x = 0
                .Range("W" & i) = IIf(x > 0, "TOTO", "TATA")
                x = 0
            End If
        Next i
    End With
End Sub

Cordialement.

If .Range("F" & i) > 60 Then
        'Have to put the process for end of life goods parameters
           If .Range("B" & i) = "LC_ALL" Then
            'Count x
            Do
                If .Range("F" & i + x + 1) = "LC_ALL" Then Exit Do
                x = x + 1
            Loop While i + x < iRow
            '
                If x > 1 Then
                    '
                   iRow4 = iRow4 + 1
                   'Copy in the Results Sheets "Production Site"
                   .Range("A" & i).Copy Destination:=Sheets("Production Site").Range("I" & iRow4)
                   .Range("D" & i).Copy Destination:=Sheets("Production Site").Range("J" & iRow4)
                   .Range("W" & i).Copy Destination:=Sheets("Production Site").Range("K" & iRow4)
                   x = 0
                '
                 Else
                    '
                    iRow5 = iRow5 + 1
                    'Copy in the Results Sheets "Market"
                    .Range("A" & i).Copy Destination:=Sheets("Market").Range("I" & iRow5)
                    .Range("B" & i).Copy Destination:=Sheets("Market").Range("J" & iRow5)
                    .Range("W" & i).Copy Destination:=Sheets("Market").Range("K" & iRow5)
                    x = 0
                    '
                End If
             '
             Else
                '
                iRow5 = iRow5 + 1
                .Range("A" & i).Copy Destination:=Sheets("Market").Range("I" & iRow5)
                .Range("B" & i).Copy Destination:=Sheets("Market").Range("J" & iRow5)
                .Range("W" & i).Copy Destination:=Sheets("Market").Range("K" & iRow5)
             '
            End If

J'ai adapté comme ça par rapport a ce que je veux.

Ceci n'est qu'une toute petite partie du code....

avec un message box j'ai regarder mes valeurs de x, et le probleme c'est qu'il n'est jamais egal à 1... il est egal a 597 puis diminue jusqu'à 3.

cest comme si il le comptait depuis le bas jusqu'à ma case. alors que je veux depuis ma case jusqua la suivante

Du coup j'avoue que je suis un peu perdu

Probleme resolu!!! desole j'avais mis un F au lieu d'un B dans mon code

merci encore pour l'aide, ca me facilite vraiment les choses

Rechercher des sujets similaires à "compter nombre entre occurences"