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

Staple1600

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

Bonjour

Pourquoi pas simplement ?
If Sh.Name="septembre" Then
 

jopont

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

Bonjour,

Oui il est vrai que je pourrais simplement écrire Sh.name = "septembre" then...

Sinon j'ai résolu mon problème en ecrivant :
Code:
Set c = c(1, 2)
au lieu de
Code:
Set c = c(1, 3)
j'ai crée un formulaire qui permet de sélectionner les noms pour trouver la période en fonction.
Est-il possible que l'utilisateur choisisse les mois dans le formulaire sur lesquels il veuille appliquer la fonction ?

Merci
 

jopont

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

Bonjour,

Est-il possible de rentrer en paramètre le choix des feuilles de janvier à décembre ?

D'autre part est-il possible de compter le nombre de période avec une succession des valeurs "GG" "VIDE" "VIDE" sur les feuilles de janvier à décembre ?

merci
 

jopont

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

Je contrôle mon formulaire en appelant la fonction.
La fonction est dans un module.
Comment faire choisir à l'utilisateur les feuilles où il veut que la fonction s'exécute.
CODE du formulaire :
Code:
Private Sub ComboBox1_Change()
Label1.Caption = periode(ComboBox1.ListIndex + 4) / 2 & " jours consécutifs "
End Sub
Code de la fonction :
Code:
Function periode(Optional lig As Long = 2)
    Application.Volatile    'selon le besoin…
    Dim Sh As Worksheet, c As Range
    Dim t As Integer, Cpte As Integer
    For Each Sh In Sheets
        If Sh.Name <> "novembre" And Sh.Name <> "décembre" Then
            If lig = 0 Then lig = 4
            Set c = Sh.Range("C" & lig)
            Do While IsDate(Sh.Cells(1, c.Column))
            If IsEmpty(c) = True Then
                    Cpte = Cpte + 1
                Else
                    Cpte = 0
                End If
                If periode < Cpte Then periode = Cpte
                Set c = c(1, 2)
            Loop
        End If
    Next
End Function
merci
 

Staple1600

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

Bonjoue

Ah j'avais oublié ce fil, et de quatre !

Et toujours la fonction Période

A force on s'y perds on ne sait plus dans lequel des 4 fils il faut répondre.

Ps: tu as encore oublié de dire Bonjour ...:rolleyes:
 

jopont

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

Bonjour,

En effet j'ai beaucoup de choses à demander et à découvrir.
désolé de me perdre dans les fils.
Merci
 

BrunoM45

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

Bonsoir Jopont,

Est-ce que ton problème
Comment faire choisir à l'utilisateur les feuilles où il veut que la fonction s'exécute.
est toujours d'actualité, car si tu te perds dans tes posts .... que devrions nous dire

A+
 

jopont

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

Bonsoir,

Oui c'est toujours d'actualité.
Pour le reste de mes questions je poursuivrai après avoir réglé ce problème.
Merci
 

BrunoM45

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

Re

Essaye ça
VB:
Private Sub ComboBox1_Change()
  Dim TabSht() As String  ' Définir le tableau des feuilles
  TabSht = Split("Janvier,Mars,Juin", ",")
  Label1.Caption = Periode(TabSht, ComboBox1.ListIndex + 4) / 2 & " jours consécutifs "
End Sub
VB:
' Fonction qui selon le tableau des feuilles : TabSht()
' Comptabilise les cellules
Function Periode(TabSht() As String, Optional Lig As Long = 2)
  Application.Volatile    'selon le besoin…
  Dim Ind As Integer, Rng As Range
  Dim Cpte As Integer
  For Ind = 0 To UBound(TabSht)
    With Sheets(TabSht(Ind))
      If Lig = 0 Then Lig = 4
      Set Rng = .Range("C" & Lig)
      Do While IsDate(.Cells(1, Rng.Column))
        If IsEmpty(Rng) = True Then
          Cpte = Cpte + 1
        Else
          Cpte = 0
        End If
        If Periode < Cpte Then Periode = Cpte
        Set Rng = Rng(1, 2)
      Loop
    End With
  Next
End Function
A+
 

jopont

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

Bonjour,

Tout d'abord merci pour ton aide.
Dans la macro comment l'utilisateur choisit-il les mois, car dans ma macro combox1 est alimenté par des noms : l'utilisateur choisit le nom surlequel exécuter la fonction.

merci
 

BrunoM45

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

Bonjour Jopont,

Il faut envoyer l'argument/les arguments à la fonction
J'avais utilisé un Array comme argument, pensant qu'il pouvait y avoir plusieurs feuilles

Sinon pour une seule
VB:
Private Sub ComboBox1_Change()
  Label1.Caption = Periode(Me.ComboBox1.Value, ComboBox1.ListIndex + 4) / 2 & " jours consécutifs "
End Sub
VB:
' Fonction qui selon la feuille : Sht
' Comptabilise les cellules
Function Periode(Sht As String, Optional Lig As Long = 2)
  Application.Volatile    'selon le besoin…
  Dim Ind As Integer, Rng As Range
  Dim Cpte As Integer
  With Sheets(Sht)
    If Lig = 0 Then Lig = 4
    Set Rng = .Range("C" & Lig)
    Do While IsDate(.Cells(1, Rng.Column))
      If IsEmpty(Rng) = True Then
        Cpte = Cpte + 1
      Else
        Cpte = 0
      End If
      If Periode < Cpte Then Periode = Cpte
      Set Rng = Rng(1, 2)
    Loop
  End With
End Function
A+
 

jopont

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

Re Bruno,

Il peut y avoir une ou plusieurs feuilles à choisir par l'utilisateur.
Dans le userform, l'utilisateur choisit un nom dans le combox.
Concrètement, peut-on remplir le tableau avec des contrôles (type case à cocher) ?
merci
 

jopont

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

Bonjour,
Est-il possible de remplir le tableau avec avec des case à cocher sur le formulaire ?
merci.
 

jopont

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

Bonsoir à tous,

Je n'arrive pas à faire fonctionner la fonction, ni le userform.
Je mets un fichier en exemple.
J'aimerais que l'utilisateur puisse choisir les mois.
Merci
 

Fichiers joints

BrunoM45

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

Jopont,

Si je puis me permettre, je pense qu'il va falloir déjà mettre tes idées dans le bon ordre
et savoir ce que tu veux faire exactement !?

Pour moi, là, c'est un vrai "b*rdel" ... ta demande n'a plus rien à voir avec le titre de ce fil :confused:
 

jopont

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

Bonsoir Bruno,

Il est vrai que j'ai beaucoup de chose à demander, c'est pour cela que j'avais fait plusieurs fils.
la fonction, telle qu'elle était écrite au départ, me permettait de choisir un nom dans le formulaire, d'exclure des feuilles dans la macro de la fonction elle-même.
Ce que j'aimerais maintenant, c'est que le choix de l'exclusion des feuilles puisse se faire par l'utilisateur.
Est-ce possible ?
merci
 

jopont

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

Bonjour à tous,

C'est exactement ce qu'il me fallait. Je te remercie beaucoup pour ton aide.
J'ai encore une petite demande, dans la fonction est-il possible de compter le nombre de fois que j'ai GGVidevidevidevide.
En l'occurence, 3 fois dans le fichier d'exemple.
Merci
 

BrunoM45

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

Salut Jopont,

Je me suis rendu compte d'un bug
Il faut changer la ligne de l'appel à la fonction, comme suit
Code:
Result = Periode(TabSht, 4 + LigSel)
Avec le 4 devant le numéro de ligne sélectionnné, car ça marchait pour Paul, mais plus pour les autres

Voici le fichier avec une autre fonction ;)
VB:
Function PeriodeG(TabSht() As String, Optional Lig As Long = 2)
  Dim Ind As Integer, Rng As Range
  Dim Cpte As Integer, NbG As Integer, NbVide 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 <> "" Then
          NbG = 0: NbVide = 0
        End If
        ' Sinon si la cellule est vide
        If Rng.Value = "" 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 = 3 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
A+
 

Fichiers joints

jopont

XLDnaute Impliqué
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
 

Discussions similaires


Haut Bas