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

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:
C

Compte Supprimé 979

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

Compte Supprimé 979

Guest
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
 
C

Compte Supprimé 979

Guest
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

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

  • arg_tableau.xls
    64.5 KB · Affichages: 106
  • arg_tableau.xls
    64.5 KB · Affichages: 100
  • arg_tableau.xls
    64.5 KB · Affichages: 100
C

Compte Supprimé 979

Guest
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
 
C

Compte Supprimé 979

Guest
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

  • Jopont_arg_tableau.xls
    74.5 KB · Affichages: 101
  • Jopont_arg_tableau.xls
    74.5 KB · Affichages: 98
  • Jopont_arg_tableau.xls
    74.5 KB · Affichages: 103

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
 
C

Compte Supprimé 979

Guest
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

  • Jopont_arg_tableau.xls
    80.5 KB · Affichages: 100
  • Jopont_arg_tableau.xls
    80.5 KB · Affichages: 100
  • Jopont_arg_tableau.xls
    80.5 KB · Affichages: 101

Discussions similaires

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390