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

  • Initiateur de la discussion Initiateur de la discussion jopont
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jopont

XLDnaute Impliqué
Bonjour,

Je cherche dans un test VBA à exclure 4 feuilles de la proriété sheets.count : j'ai

Code:
For t = 1 To Sheets.Count
mais je ne veux pas des feuilles 27, 28, 29, 30 dans le test

Comment faire ?
merci
 
Dernière édition:
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+
 
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+
 
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
 
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+
 
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
 
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
 

Pièces jointes

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 😕
 
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
 
Re : exclure des feuilles de la proriété sheets.count

Re,

Jopont, voici ton fichier avec les modifications qui, j'espère te conviendront
J'ai ajouté une ListView dans ton USF, j'espère que tu n'auras pas de problème

A+
 

Pièces jointes

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
 
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+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
277
Réponses
4
Affichages
313
  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
288
Retour