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

jmps

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

Bonjour,

Tu fais -4 dans ton compteur.

Enfin ça me paraît trop simple.
 

jopont

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

Oui merci, mais j'ai des numéros de feuilles après 30.
Je veux exclure uniquement ces numéros ( 27,28,29,30)
merci
 

BrunoM45

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

BOnsoir Jopont
Oui merci, mais j'ai des numéros de feuilles après 30.
Je veux exclure uniquement ces numéros ( 27,28,29,30)
merci
Heuuu ... comment dire ... il faut que tu utilises du Domestos (déboucheur)
Car chez moi également exclure la feuille 27+28+29+30 = 4 feuilles => -4

Je pense que tu as une idée, mais que tu ne sait pas l'exprimer correctement

A+
 

jopont

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

Je vais exprimer mon idée :

J'ai un classeur de 39 feuilles.
J'ai un test dans une fonction qui doit ce faire des feuilles 1 à 26 et de 31 à 39 , mais pas 27 à 30.
Je fais ce test avec sheets.count

merci
 

Staple1600

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

Re

Comme je le disais précédemment
Code:
Sub a()
Dim i As Byte, y As Byte
y = Worksheets.Count
For i = 1 To y
Select Case i
Case 1 To 3, 6 To y
MsgBox Sheets(i).Name
End Select
Next i
End Sub
A adapter à ta situation
 

jopont

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

J'ai essayé d’adapter mon code mais ça ne fonctionne pas :

Code:
Option Explicit

Function periode(Optional lig As Long = 2)
Application.Volatile 'selon le besoin…

Dim c As Range, t As Integer, Cpte As Integer, i As Byte, y As Byte
y = Worksheets.Count
For i = 1 To y
Select Case i
Case 1 To 27, 31 To y
If lig = 0 Then lig = 4
For t = 1 To Sheets.Count
      Set c = Sheets(t).Range("C" & lig)
  Do While IsDate(Sheets(t).Cells(1, c.Column))
    If c = "RF" Or c = "P1" Or c = "" Then
    Cpte = Cpte + 1
    
    Else
      'If periode < Cpte Then periode = Cpte
      Cpte = 0
    End If
      If periode < Cpte Then periode = Cpte
    Set c = c(1, 3)
  Loop
Next
End Select
Next i
End Function
merci
 

Staple1600

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

Re

C'est normal vu la syntaxe de ton code
Code:
For i = 1 To y
Select Case i
Case 1 To 27, 31 To y
If lig = 0 Then lig = 4
For t = 1 To Sheets.Count
      Set c = Sheets(t).Range("C" & lig)
Essaie ma macro sur un classeur de 6 feuilles par exemple
et tu devrais comprendre comment fonctionne le code que je te propose.
 

jopont

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

J'ai essayé de le construire petit à petit.
Qu'est ce qui cloche ?
merci
 

Staple1600

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

Re


Compares l'utilsation que je fais du i dans la boucle
et comment toi tu l'utilises.
 

jopont

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

C'est au niveau du i, il faut que je mette :

Code:
Set c = Sheets(i).Range("C" & lig)
  Do While IsDate(Sheets(i).Cells(1, c.Column))
?
 

Staple1600

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

Re

Oui ce serait plus logique
Et il faut faudrait supprimer la seconde boucle que tu faisais
 

jopont

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

C'est ce que j'ai fait j'ai mis i à la place de t, mais cette fois ça me donne des chiffre très élevé.
La seconde boucle, c'est la boucle avec do while ?

merci
 

Staple1600

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

Re

C'est celle là
For t = 1 To Sheets.Count

PS: Je n'avais pas vu avant
une fonction qui doit ce faire des feuilles 1 à 26 et de 31 à 39 , mais pas 27 à 30.
Donc ton Select devrait être : Case 1 to 26, 31 To y
 
Dernière édition:

jopont

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

Oui c'est ce que j'ai fait après réflexion.
Mais les résultat sont identique, les feuilles 27,28,29,30 ne sont pas exclues.
 

Staple1600

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

Re

Dans mon exemple, les feuilles 4 et 5 sont exclues.

Donc cela fonctionne (en tout cas, cette syntaxe fonctionne)
 

jopont

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

est ce que cela pourrait venir de la numérotation de mes feuilles :

Voir la pièce jointe 191577

et voici mon code :

Code:
Option Explicit

Function periode(Optional lig As Long = 2)
Application.Volatile 'selon le besoin…

Dim c As Range, t As Integer, Cpte As Integer, i As Byte, y As Byte
y = Worksheets.Count
For i = 1 To y
Select Case i
Case 1 To 27, 31 To y
If lig = 0 Then lig = 4

      Set c = Sheets(i).Range("C" & lig)
  Do While IsDate(Sheets(i).Cells(1, c.Column))
    If c = "RF" Or c = "P1" Or c = "" Then
    Cpte = Cpte + 1
    
    Else
      'If periode < Cpte Then periode = Cpte
      Cpte = 0
    End If
      If periode < Cpte Then periode = Cpte
    Set c = c(1, 3)
  Loop

End Select
Next i
End Function
 

Haut Bas