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

Staple1600

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

Re


L'important c'était cela
For Each ws In Sheets
If Sheets.Count > 1 Then If Not IsError(Application.Match(ws.Name, t, 0)) _
Then 'ws.Delete ici mettre ton code VBA
Next ws

Or ton code n'utilise pas ce que j'ai mis en gras.


PS: rien ne t'empêche de chercher sur le forum d'autres exemples utilisant des Arrays pour stocker le nom des feuilles.
 

Fo_rum

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

Bonsoir,

en suivant la piste que t'a donné Eric (noms à exclure) :
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 <> "octobre" And 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 c = "RF" Or c = "P1" Or c = "" Then
                    Cpte = Cpte + 1
                Else
                    Cpte = 0
                End If
                If periode < Cpte Then periode = Cpte
                Set c = c(1, 3)
            Loop
        End If
    Next
End Function
Avec le Array de Staple (noms à garder) :
Code:
Function periode(Optional lig As Long = 2)
    Application.Volatile    'selon le besoin…
    Dim Sh As Worksheet, c As Range
    Dim n As Byte, t As Integer, Cpte As Integer
    For Each Sh In Sheets
        For n = 0 To 2
            If Sh.Name = Array("janvier", "février", "mars") (n) Then
                If lig = 0 Then lig = 4
                Set c = Sh.Range("C" & lig)
                Do While IsDate(Sh.Cells(1, c.Column))
                    If c = "RF" Or c = "P1" Or c = "" Then
                        Cpte = Cpte + 1
                    Else
                        Cpte = 0
                    End If
                    If periode < Cpte Then periode = Cpte
                    Set c = c(1, 3)
                Loop
            End If
        Next
    Next
End Function
Le problème des Index est qu'ils changent avec la position des onglets sur le classeur.
 

jopont

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

Bonsoir, j'ai à peu près compris le application.match.
Je laisse sur le fil ce que j'ai trouvé, si ça peut aider les lecteurs.
Je reviendrai surement après essai du code sur mon problème.:)
n Excel, the Match function searches for a value in an array and returns the relative position of that item. The syntax for the Match function is:
Match( value, array, match_type )
value is the value to search for in the array.
array is a range of cells that contains the value that you are searching for.
match_type is optional. It the type of match that the function will perform. The possible values are:
match_type Explanation 1
(default) The Match function will find the largest value that is less than or equal to value. You should be sure to sort your array in ascending order. If the match_type parameter is omitted, the Match function assumes a match_type of 1.
0 The Match function will find the first value that is equal to value. The array can be sorted in any order. -1 The Match function will find the smallest value that is greater than or equal to value. You should be sure to sort your array in descending order.​
 

jopont

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

Bonjour le premier code de Forum semble fonctionner. Merci

Par contre je dois avoir un problème quand je met uniquement dans les valeurs de cellules recherchées :

Code:
If Isempty(c)

La valeur retournée par la fonction me donne des chiffres qui ne correspondent pas.
Par exemple 30 alors que je n'ai jamais cumulé plus de 30 valeurs de cellules vides.

Est-il possible de ressortir les dates de début et de fin de la période ?

Merci
 

jopont

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

Bonjour,

Dans le code Ci-dessous j'ai filtré pour n'avoir que le feuille de septembre.
La fonction me renvoie 30, alors que consécutivement je devrais avoir 13.
Je dois avoir un problème sur le comptage des cellules vides, mais lequel ?

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" And Sh.Name <> "octobre" And Sh.Name <> "janvier" And Sh.Name <> "février" And Sh.Name <> "mars" And Sh.Name <> "avril" And Sh.Name <> "mai" And Sh.Name <> "juin" And Sh.Name <> "juillet" And Sh.Name <> "août" Then
            If lig = 0 Then lig = 4
            Set c = Sh.Range("C" & lig)
            Do While IsDate(Sh.Cells(1, c.Column))
            If IsEmpty(c.Value) Or c.Value = "P1" Or c.Value = "RF" Then
                    Cpte = Cpte + 1
                Else
                    Cpte = 0
                End If
                If periode < Cpte Then periode = Cpte
                Set c = c(1, 3)
            Loop
        End If
    Next
merci
 

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:
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG