Autant pour moi je ne comptais que 3 videsMerci Bruno,
J'ai un problème pour Simon dans l'exemple, il me compte GGVVVV, alors qu'il n'y en a pas.
La séquence est bien GGVVVV
merci
' Si les 2 conditions sont remplies
If NbG = 2 And NbVide = 3 Then
' Si les 2 conditions sont remplies
If NbG = 2 And NbVide = 4 Then
Ca tu ne pouvais pas le savoir ... quoique ....Lorsque je transpose les macro dans mon fichier original, il me dit que lvwReport n'est pas défini.
Comme a l'origine !Lorsque je transpose les macro dans mon fichier original, il me dit que lvwReport n'est pas défini.
Do While IsDate(.Cells(1, Rng.Column))
' Si la cellule contient "G"
If Rng.Value = "G" Then
NbG = NbG + 1
ElseIf Rng.Value <> "" Or[COLOR=red] Rng.Value <> "RF" [/COLOR]Then
NbG = 0: NbVide = 0
End If
' Sinon si la cellule est vide
If Rng.Value = "" Or [COLOR=red]Rng.Value = "RF" [/COLOR]Then
' Si le nombre de G est de 2
If NbG = 2 Then NbVide = NbVide + 1 Else NbG = 0
End If
' Si les 2 conditions sont remplies
If NbG = 2 And NbVide = 4 Then
' On ajoute 1 au compte
Cpte = Cpte + 1
NbG = 0: NbVide = 0
End If
Set Rng = Rng(1, 2)
Loop
End With
Next
PeriodeG = Cpte
End Function
Oui, si tu souhaites afficher le résultat dans ton USFUne fonction pour chaque série et faire la totalisation dans le userform ?
' Exécuter la fonction de calcul
Result = Periode(TabSht, 4 + LigSel)
Result = Result + PeriodeG(TabSht, 4 + LigSel)
Result = Result + PeriodeGGRFRFRFRF(TabSht, 4 + LigSel)
' Etc ...
Me.Label1.Caption = "Le résultat est : " & Result
If Rng.Value = "G" Then
NbG = NbG + 1
ElseIf Rng.Value <> "" Then
NbG = 0: NbVide = 0
End If
' Sinon si la cellule est vide
If Rng.Value = "RF" Then
' Si le nombre de G est de 2
If NbG = 2 Then NbRF = NbRF + 1 Else NbG = 0
End If
' Si les 2 conditions sont remplies
If NbG = 2 And NbRF = 4 Then
' On ajoute 1 au compte
Cpte = Cpte + 1
NbG = 0: NbRF = 0
Function PeriodeG4RF(TabSht() As String, Optional Lig As Long = 2)
Dim Ind As Integer, Rng As Range
Dim Cpte As Integer, NbG As Integer, NbRF As Integer
' Initialisation des variables
Cpte = 0: NbG = 0: NbVide = 0
' Application.Volatile ' En cas de besoin
' Pour chaque Item du tableau
For Ind = 0 To UBound(TabSht)
' Avec la feuille du nom du tableau
With Sheets(TabSht(Ind))
' Définir la cellule de départ
Set Rng = .Range("C" & Lig)
' Si la colonne de la ligne 1 est une date
Do While IsDate(.Cells(1, Rng.Column))
' Si la cellule contient "G"
If Rng.Value = "G" Then
NbG = NbG + 1
ElseIf Rng.Value <> "RF" Then
NbG = 0: NbVide = 0
End If
' Sinon si la cellule est RF
If Rng.Value = "RF" Then
' Si le nombre de G est de 2
If NbG = 2 Then NbRF = NbRF + 1 Else NbG = 0
End If
' Si les 2 conditions sont remplies
If NbG = 2 And NbRF = 4 Then
' On ajoute 1 au compte
Cpte = Cpte + 1
NbG = 0: NbRF = 0
End If
Set Rng = Rng(1, 2)
Loop
End With
Next
PeriodeG4RF = Cpte
End Function
Function PeriodeG2RF2V(TabSht() As String, Optional Lig As Long = 2)
Dim Ind As Integer, Rng As Range
Dim Cpte As Integer, NbG As Integer, NbRF As Integer, NbVide As Integer
' Initialisation des variables
Cpte = 0: NbG = 0: NbRF = 0: NbVide = 0
' Application.Volatile ' En cas de besoin
' Pour chaque Item du tableau
For Ind = 0 To UBound(TabSht)
' Avec la feuille du nom du tableau
With Sheets(TabSht(Ind))
' Définir la cellule de départ
Set Rng = .Range("C" & Lig)
' Si la colonne de la ligne 1 est une date
Do While IsDate(.Cells(1, Rng.Column))
' Si la cellule contient "G"
If Rng.Value = "G" Then
NbG = NbG + 1
ElseIf Rng.Value <> "RF" Or Rng.Value <> "" Then
NbG = 0: NbRF = 0: NbVide = 0
End If
' Sinon si la cellule est RF
If Rng.Value = "RF" Then
' Si le nombre de G est de 2 on alimente avec RF
If NbG = 2 Then NbRF = NbRF + 1 Else NbG = 0
End If
If Rng.Value = "" Then
If NbG = 2 And NbRF = 2 Then NbVide = NbVide + 1 Else NbG = 0
End If
'Si les 2 conditions sont remplies
If NbG = 2 And NbRF = 2 And NbVide = 2 Then
' On ajoute 1 au compte
Cpte = Cpte + 1
NbG = 0: NbRF = 0: NbVide = 0
End If
Set Rng = Rng(1, 2)
Loop
End With
Next