OVH Cloud OVH Cloud

Boucle sur plusieurs feuilles

7 réponses
Avatar
ManBas
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon classeur.
Comment dois-je écrire le code pour que ma boucle parcoure toutes les
feuilles (visibles) et me rende le résultat sur la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat de
chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.

7 réponses

Avatar
Daniel
Bonjour.
Teste la macro suivante :

Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each Sheet In Sheets
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
Next
End Sub

Cordialement.
Daniel
"ManBas" a écrit dans le message de news:
uko$
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon classeur.
Comment dois-je écrire le code pour que ma boucle parcoure toutes les
feuilles (visibles) et me rende le résultat sur la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat de
chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.




Avatar
docm
Bonjour ManBas.

Sub zaza1()
For Each f In Worksheets
If f.Visible = True Then
f.Range("B1").Value Application.WorksheetFunction.CountIf(f.Range("A1:A20"), "yes")
End If
Next
End Sub

docm

ManBas déclare:
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon classeur.
Comment dois-je écrire le code pour que ma boucle parcoure toutes les
feuilles (visibles) et me rende le résultat sur la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat de
chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.


Avatar
ManBas
Simple, efficace, merci Daniel.

Merci Daniel
"Daniel" a écrit dans le message de news:

Bonjour.
Teste la macro suivante :

Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each Sheet In Sheets
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
Next
End Sub

Cordialement.
Daniel
"ManBas" a écrit dans le message de news:
uko$
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon classeur.
Comment dois-je écrire le code pour que ma boucle parcoure toutes les
feuilles (visibles) et me rende le résultat sur la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat de
chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.








Avatar
ManBas
Bonjour Docmarti,
Merci pour ce code différent (plus concis) de ce que je sais faire. Mais il
plante sur la ligne:
f.Range("B1").Value =
Application.WorksheetFunction.CountIf(f.Range("A1:A20"), "yes")
avec une erreur 1004 (erreur aplication ou objet).
Est-ce que j'ai oublié quelque chose?

"docm" a écrit dans le message de news:
eCG$


Bonjour ManBas.

Sub zaza1()
For Each f In Worksheets
If f.Visible = True Then
f.Range("B1").Value > Application.WorksheetFunction.CountIf(f.Range("A1:A20"), "yes")
End If
Next
End Sub

docm

ManBas déclare:
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon classeur.
Comment dois-je écrire le code pour que ma boucle parcoure toutes les
feuilles (visibles) et me rende le résultat sur la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat de
chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.






Avatar
ManBas
Euh, ça le fais plus !!!
Seule la première feuille est prise en compte!
...
"Daniel" a écrit dans le message de news:

Bonjour.
Teste la macro suivante :

Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each Sheet In Sheets
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
Next
End Sub

Cordialement.
Daniel
"ManBas" a écrit dans le message de news:
uko$
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon classeur.
Comment dois-je écrire le code pour que ma boucle parcoure toutes les
feuilles (visibles) et me rende le résultat sur la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat de
chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.








Avatar
ManBas
Je ne comprends pas:.
J'ai fixé x=0 pour le départ.
S'il y 1 fois l'item dans la colonne de la 1ere feuille (et 0 dans la 2ème
feuille), le compte renvoi 2.
S'il y a 2 fois l'item dans la colonne de la 1ere feuille (et 0 dans la 2ème
feuille), le compte renvoie 5.
S'il y a 3 fois l'item dans la colonne de la 1ere feuille (et 0 dans la 2ème
feuille), le compte renvoie 8.
?????
"Daniel" a écrit dans le message de news:

Bonjour.
Teste la macro suivante :

Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each Sheet In Sheets
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
Next
End Sub

Cordialement.
Daniel
"ManBas" a écrit dans le message de news:
uko$
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon classeur.
Comment dois-je écrire le code pour que ma boucle parcoure toutes les
feuilles (visibles) et me rende le résultat sur la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat de
chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.








Avatar
docm
La cellule B1 de la feuille est probablement protégée en écriture.

docm

ManBas déclare:
Bonjour Docmarti,
Merci pour ce code différent (plus concis) de ce que je sais faire.
Mais il plante sur la ligne:
f.Range("B1").Value > Application.WorksheetFunction.CountIf(f.Range("A1:A20"), "yes")
avec une erreur 1004 (erreur aplication ou objet).
Est-ce que j'ai oublié quelque chose?

"docm" a écrit dans le message de news:
eCG$


Bonjour ManBas.

Sub zaza1()
For Each f In Worksheets
If f.Visible = True Then
f.Range("B1").Value >> Application.WorksheetFunction.CountIf(f.Range("A1:A20"), "yes")
End If
Next
End Sub

docm

ManBas déclare:
Bonjour à tous,
J'ai plusieurs feuilles identiques (1 par semaine) dans mon
classeur. Comment dois-je écrire le code pour que ma boucle
parcoure toutes les feuilles (visibles) et me rende le résultat sur
la première?
Lorsque je rajoute un For Next pour chaque feuille j'ai le résultat
de chaque feuille sur chacune d'elle.
Sub compte()
Range("feuil1!B1") = 0
'Dim f As Worksheet
Dim CellA As Range
Dim x As Integer
x = 1
For Each CellA In Range("A1:A20")
If CellA = "yes" Then
Range("feuil1!B1") = x
x = x + 1
End If
Next CellA
End Sub

Merci de votre aide.