Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Staple1600

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

Re

Je ne peux pas prendre le temps de t'expliquer le code ligne par ligne

Utilises l'aide de VBA, les moteurs de recherche sur internet.


PS: On est dimanche ...
 

jopont

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

Oui je comprends merci pour ton aide, je vais essayer de comprendre.
J'ai déjà appris pas mal de chose.
Je me construit peu à peu en VBA
Bon dimanche
 

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.
 

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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…