Comptage de cellules entre deux autres

Bonjour Tout le monde,

Je sollicite votre aide aujourd'hui après plusieurs tentatives de modification de macros existantes du même sujet, mais sans résultat.

Il s'agit d'une macro qui va me permettre sur une page excel est sur la même colonne de trouver une cellule où y'est écrit "accepte", une autre ou y'a écrit "Réalise", de compter le nombre de cellules entre ces deux et d’insérer au niveau de la même page le résultat dans la cellule "O3" sous forme de "Résultat=...." , ça parait simple, mais je suis entrain de découvrir VBA. Merci par avance

Bonjour,

Sans information précise et sans gestion d'erreurs, pour le principe

Option Explicit
Public Sub Compter()
'Ctrl + q pour lancer la procédure
Dim Ws As Worksheet
Dim Derligne As Long
Dim Plage As Range
Dim v1 As Range, v2 As Range
Dim lg1 As Long, lg2 As Long

    Set Ws = Worksheets("Feuil1")
    Derligne = Ws.Range("A" & Rows.Count).End(xlUp).Row

    With Ws
        Derligne = .Range("A" & Rows.Count).End(xlUp).Row
        Set Plage = Range("A1:A" & Derligne)
        Set v1 = Plage.Find("accepté", LookIn:=xlValues)
        If Not v1 Is Nothing Then lg1 = v1.Row
        Set v2 = Plage.Find("réalisé", LookIn:=xlValues)
        If Not v2 Is Nothing Then lg2 = v2.Row
        .[O3] = lg2 - lg1 - 1
    End With

    Set Ws = Nothing: Set Plage = Nothing: Set v1 = Nothing: Set v2 = Nothing

End Sub
20steamx-v1.xlsm (14.06 Ko)

Bonjour et Bienvenue sur XLP,

Salut Jean-Eric..

=EQUIV("réalisé";A:A;0)-EQUIV("accepté";A:A;0)-1

@ + +

Merci bien pour vos réponses! J'en est développer une, qui a l'air de bien marcher.

Public Sub General()

Dim i As Long, debut As Long, fin As Long, resultat As Long
Dim Sh As Worksheet

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
If Range("A" & i) = "accepte" Then
debut = i
End If
If Range("A" & i) = "réalise" Then
fin = i
End If
Next i
resultat = fin - debut - 1
Range("O3") = resultat

End Sub

Bonjour,

Ton code modifié avec l'utilisation de Sh...

Mon précédent code avait un objectif pédagogique

Cdlt

Option Explicit
Public Sub General()
Dim Sh As Worksheet
Dim i As Long, debut As Long, fin As Long

    Application.ScreenUpdating = False
    Set Sh = ("Feuil1") '<-------- nom de ta feuille

    With Sh
        For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row
            If .Range("A" & i) = "accepte" Then
            debut = i
        End If
        If .Range("A" & i) = "réalise" Then
            fin = i
        End If
        Next i
        .[O3] = fin - debut - 1
    End With

    Set Sh = Nothing
End Sub
 

Rebonjour,

Merci bien, Je viens d'appliquer la proposition de R@chid, et ca a l'air de marcher a merveille, pas besoin d'appliquer la macro, ca se rénitialise instantanément. J'ai juste fait une petite modif au niveau de mon fichier et ca ressemble a ca:

=-(EQUIV("En cours de réalisation";A:A;0)-EQUIV("En Attente de présentation";A:A;0)+1)

Merci R@chid!

Rechercher des sujets similaires à "comptage entre deux"