[RESOLU]exclure des feuilles de la proriété sheets.count

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Re bonjour,

Lorsque je transpose les macro dans mon fichier original, il me dit que lvwReport n'est pas défini.

merci
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Oups Où alimentes-tu le combobox dans la macro avec les noms ?
Mes noms, dans le fichier débutent de B4 à B64. Ils sont identique sur toutes les feuilles des mois.
merci
 

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Merci 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
Autant pour moi je ne comptais que 3 vides

Ne pourrais tu pas faire un minimum d'effort de compréhension !?

Je pense que mon code est assez explicite et avec assez d'annotations, non ..
Code:
' Si les 2 conditions sont remplies
If NbG = 2 And NbVide = 3 Then
A remplacer par
Code:
' Si les 2 conditions sont remplies
If NbG = 2 And NbVide = 4 Then
A+
 

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Lorsque je transpose les macro dans mon fichier original, il me dit que lvwReport n'est pas défini.
Ca tu ne pouvais pas le savoir ... quoique ....
si tu prétais un minimum attention au code ..

J'utilise une ListView
Dans le menu Ouils -> Références, il faut cocher
"Microsoft Windows Common controls 6.0 (SP6)"

A+
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Lorsque je transpose les macro dans mon fichier original, il me dit que lvwReport n'est pas défini.
Comme a l'origine !

Dans la propriété "RowSource" de ta ComboBox tu as "Noms" d'inscrit
Lorsque tu vas dans ta feuille Excel dans le menu -> Insertion -> Nom -> Définir
Le noms est définit avec la formule "=janvier!$B$4:$B$6" à modifier

A+
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Bonjour,

Encore merci beaucoup à toi pour ta patience. ça fonctionne impeccable.
Dans la fonction periodeG si j'écris cela, est-ce que ça me donne le comptage des séries suivantes :

GGVVVV
GGRFRFRFRF
GGVVRFRF
GGRFRFVV

Code:
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
merci
 

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Re,

Je pense que le mieux serait de faire une fonction pour chaque série

A toi de tester à chaque fois ;)

A+
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Bonsoir,

Une fonction pour chaque série et faire la totalisation dans le userform ?

merci
 

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Une fonction pour chaque série et faire la totalisation dans le userform ?
Oui, si tu souhaites afficher le résultat dans ton USF
Code:
' 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
A+
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

re bonsoir,
Ok j'ai compris la variable result sera égale à elle-même plus la nouvelle fonction.

Mais dans la nouvelle fonction, je n'arrive pas par exemple à identifier la série GGRFRFVV :
J'ai également essayé ça mais sans réussite pour la série G/G/RF/RF/RF/RF
Code:
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
merci
 

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Re,

Eeeeetttt oui, là, est toute l'essence même du développement !
trouver les bonnes lignes de code ...

Je pense t'avoir assez accordé assez de temps, je passe le relais a qui voudra bien
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

re bonsoir,

Merci pour ton aide, mais puis-je encore abuser de ton temps pour les exemples de séries suivantes :
GGRFRFVV
GGRFRFRFRF

Sans vouloir abuser
merci
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Re bonsoir,

Je pense avoir trouvé pour la série GGRFRFRFRF
Mais je ne vois pas comment pour la période GGRFRFVV.
Code:
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
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Re bonsoir,

J'ai essayé cette focntion pour la série GG RF RF Vide Vide, mais elle ne fonctionne pas :

Code:
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
Merci
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Bonjour,

Je n'arrive pas à développer la fonction pour détecter les GGRFRFVV ou GGVVRFRF.
Je donne le fichier de ce que j'ai fais mais ça ne fonctionne pas. Paul devrait avoir 4 périodes pour le mois de janvier.
merci
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Bonjour Jopont,

Ce qui me fait plaisir, c'est que tu as fait l'effort de chercher
En VBA il existe le mode débogage qui te permets de suivre pas à pas ce que contiennent tes variables
et donc de savoir ce qui va ou ne va pas

Pour cela, il faut te positionner sur une ligne (hors déclaration de variables) et appuyer sur F9
Equivalent du menu -> Débogage -> Basculer un point d'arrêt

Ensuite tu lance ton code (ici via l'USF) et au point d'arrêt ton code va se mettre en pause et afficher la fenêtre
Pour continuer, il suffit d'appuyer sur F8, tu passe comme ça en revue toutes tes lignes

Il suffit de mettre ton curseur sur une variable pour connaitre sa valeur ;)

Ceci dis, voici le code qui devrait convenir
VB:
Function Periode2G2RF2V(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))
        If Rng.Value = "G" Then ' Si la cellule contient "G"
          NbG = NbG + 1
        ElseIf Rng.Value = "RF" Then  ' Si la cellule contient "RF"
          NbRF = NbRF + 1
        ElseIf Rng.Value = "" Then  ' Si la cellule est vide
          ' Si les 2 variables précédentes contienne 2
          If NbG = 2 And NbRF = 2 Then NbVide = NbVide + 1
        ElseIf Rng.Value <> "" Then
          ' Si la cellule contient autre chose que "G", "RF" ou VIDE
          ' Et qu'une des variable est différente de 0
          ' On réinitialise toutes les valeurs car on sort de la série
          If NbG <> 2 Or NbRF <> 2 Or NbVide <> 2 Then NbG = 0: NbRF = 0: NbVide = 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 Ind
  Periode2G2RF2V = Cpte
End Function
A+
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Re bonjour.
Merci pour les conseils,

Est-il normal que si je sélectionne toutes les feuilles hormis janvier, le résultat pour Paul est de 5 ?
 

jopont

XLDnaute Impliqué
Re : exclure des feuilles de la proriété sheets.count

Re,

Dans la dernière macro que tu m'as fourni, si j'ajoute dans le premier elseif
Code:
If NbG = 2 then NbRF = NbRF + 1
cela me perttrait-il de contrôler que j'ai bien GG avant les 2 RF.

Merci
 

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Est-il normal que si je sélectionne toutes les feuilles hormis janvier, le résultat pour Paul est de 5 ?
Je ne sais pas je n'ai que 3 feuilles dnas mon fichier actuel

Mais si visuellement tu n'en compte pas autant, c'est qu'il y a un problème

A+
 

BrunoM45

XLDnaute Barbatruc
Re : exclure des feuilles de la proriété sheets.count

Re,

Dans la dernière macro que tu m'as fourni, si j'ajoute dans le premier elseif
Code:
If NbG = 2 then NbRF = NbRF + 1
cela me perttrait-il de contrôler que j'ai bien GG avant les 2 RF.
Oui, tout a fait tu peux ajouter le test

A+
 

Haut Bas