Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro qui agit sur toutes les feuilles d'un classeur

20 réponses
Avatar
newoceane2000
Bonjour =E0 tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne tr=E8s bien sur une feuille (elle remplace
les chiffres qui sont dans la colonne B par des lettres) :

Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) =3D "A"
Case 10.000001 To 30: Range("B" & b.Row) =3D "B"
Case 3.000001 To 10: Range("B" & b.Row) =3D "C"
Case 1.000001 To 3: Range("B" & b.Row) =3D "D"
Case 0.300001 To 1: Range("B" & b.Row) =3D "E"
Case 0.100001 To 0.3: Range("B" & b.Row) =3D "F"
Case Is <=3D 0.1: Range("B" & b.Row) =3D "G"

End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la m=EAme chose sur toutes
les feuilles d'un classeur en un clic.

Pouvez vous =E9galement me d=E9crire avec pr=E9cision o=F9 je doit =E9crire=
le
code vba?

Merci pour votre aide

10 réponses

1 2
Avatar
newoceane2000
On 23 oct, 21:10, "" wrote:
pas testé :

Sub test()
for each page in thisworkbook.sheets
For Each b In page.Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: b= "A"
Case 10.000001 To 30: b = "B"
Case 3.000001 To 10: b = "C"
Case 1.000001 To 3: b = "D"
Case 0.300001 To 1: b = "E"
Case 0.100001 To 0.3: b = "F"
Case Is <= 0.1: b = "G"
End Select
Next
next
End Sub

à mettre de préférence dans un module tout neuf :
oultil / macros / visual basic editor / insertion / module

://jacxl.free.fr

a écrit dans le message de news:

Bonjour à tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne très bien sur une feuille (elle remplace
les chiffres qui sont dans la colonne B par des lettres) :

Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"

End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la même chose sur toutes
les feuilles d'un classeur en un clic.

Pouvez vous également me décrire avec précision où je doit écri re le
code vba?

Merci pour votre aide




Merci beaucoup de m'avoir répondu mais la macro ne marche pas même
en créant un module tout neuf : la macro ne marche même plus sur une
feuille.


Quand à la solution alternative de Pierre Fauconnier, je ne comprend
pas ce que je dois faire.

Pouvez vous m'aider à nouveau?

Merci

Avatar
Pierre Fauconnier
Regarde le code que je t'ai fait parvenir dans ton deuxième message. Il
y a quelques lignes à ajouter pour encadrer ton code de départ dans une
boucle For... Next qui itère sur les feuilles de ton classeur...

Je ne vois pas comment t'aider davantage...

Où coinces-tu en appliquant ma solution?
La macro que tu utilises est-elle placée dans un module standard?


On 23 oct, 21:10, "" wrote:
pas testé :

Sub test()
for each page in thisworkbook.sheets
For Each b In page.Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: b= "A"
Case 10.000001 To 30: b = "B"
Case 3.000001 To 10: b = "C"
Case 1.000001 To 3: b = "D"
Case 0.300001 To 1: b = "E"
Case 0.100001 To 0.3: b = "F"
Case Is <= 0.1: b = "G"
End Select
Next
next
End Sub

à mettre de préférence dans un module tout neuf :
oultil / macros / visual basic editor / insertion / module

://jacxl.free.fr

a écrit dans le message de news:

Bonjour à tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne très bien sur une feuille (elle remplace
les chiffres qui sont dans la colonne B par des lettres) :

Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"

End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la même chose sur toutes
les feuilles d'un classeur en un clic.

Pouvez vous également me décrire avec précision où je doit écrire le
code vba?

Merci pour votre aide




Merci beaucoup de m'avoir répondu mais la macro ne marche pas même
en créant un module tout neuf : la macro ne marche même plus sur une
feuille.


Quand à la solution alternative de Pierre Fauconnier, je ne comprend
pas ce que je dois faire.

Pouvez vous m'aider à nouveau?

Merci


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")


Avatar
newoceane2000
On 24 oct, 17:20, Pierre Fauconnier
wrote:
Regarde le code que je t'ai fait parvenir dans ton deuxième message. Il
y a quelques lignes à ajouter pour encadrer ton code de départ dans u ne
boucle For... Next qui itère sur les feuilles de ton classeur...

Je ne vois pas comment t'aider davantage...

Où coinces-tu en appliquant ma solution?
La macro que tu utilises est-elle placée dans un module standard?






On 23 oct, 21:10, "" wrote:
pas testé :

Sub test()
for each page in thisworkbook.sheets
For Each b In page.Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: b= "A"
Case 10.000001 To 30: b = "B"
Case 3.000001 To 10: b = "C"
Case 1.000001 To 3: b = "D"
Case 0.300001 To 1: b = "E"
Case 0.100001 To 0.3: b = "F"
Case Is <= 0.1: b = "G"
End Select
Next
next
End Sub

à mettre de préférence dans un module tout neuf :
oultil / macros / visual basic editor / insertion / module

://jacxl.free.fr

a écrit dans le message de news:

Bonjour à tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne très bien sur une feuille (elle rempla ce
les chiffres qui sont dans la colonne B par des lettres) :

Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"

End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la même chose sur tout es
les feuilles d'un classeur en un clic.

Pouvez vous également me décrire avec précision où je doit é crire le
code vba?

Merci pour votre aide


Merci beaucoup de m'avoir répondu mais la macro ne marche pas m ême
en créant un module tout neuf : la macro ne marche même plus sur une
feuille.

Quand à la solution alternative de Pierre Fauconnier, je ne comprend
pas ce que je dois faire.

Pouvez vous m'aider à nouveau?

Merci


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonsoir Pierre,

En copiant le code avec vos lignes en plus, la macro s'exécute
uniquement sur la première feuille et non pas sur tout le classeur.
J'ai fais un essai en copiant le code sur un nouveau module, dans la
feuille 1 ou encore dans This Workbook et rien ne marche.

Y a t-il quelquechose d'autre à faire (je n'ai pas compris votre
remarque sur les feuilles devant objet Range)?

Merci beaucoup en tout cas de m'avoir aidé



Avatar
Pierre Fauconnier
Vous pouvez donner le code que vous utilisez?

On 24 oct, 17:20, Pierre Fauconnier
wrote:
Regarde le code que je t'ai fait parvenir dans ton deuxième message. Il
y a quelques lignes à ajouter pour encadrer ton code de départ dans une
boucle For... Next qui itère sur les feuilles de ton classeur...

Je ne vois pas comment t'aider davantage...

Où coinces-tu en appliquant ma solution?
La macro que tu utilises est-elle placée dans un module standard?






On 23 oct, 21:10, "" wrote:
pas testé :

Sub test()
for each page in thisworkbook.sheets
For Each b In page.Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: b= "A"
Case 10.000001 To 30: b = "B"
Case 3.000001 To 10: b = "C"
Case 1.000001 To 3: b = "D"
Case 0.300001 To 1: b = "E"
Case 0.100001 To 0.3: b = "F"
Case Is <= 0.1: b = "G"
End Select
Next
next
End Sub

à mettre de préférence dans un module tout neuf :
oultil / macros / visual basic editor / insertion / module
://jacxl.free.fr

a écrit dans le message de news:

Bonjour à tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne très bien sur une feuille (elle remplace
les chiffres qui sont dans la colonne B par des lettres) :
Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"
End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la même chose sur toutes
les feuilles d'un classeur en un clic.
Pouvez vous également me décrire avec précision où je doit écrire le
code vba?

Merci pour votre aide


Merci beaucoup de m'avoir répondu mais la macro ne marche pas même
en créant un module tout neuf : la macro ne marche même plus sur une
feuille.

Quand à la solution alternative de Pierre Fauconnier, je ne comprend
pas ce que je dois faire.

Pouvez vous m'aider à nouveau?

Merci


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonsoir Pierre,

En copiant le code avec vos lignes en plus, la macro s'exécute
uniquement sur la première feuille et non pas sur tout le classeur.
J'ai fais un essai en copiant le code sur un nouveau module, dans la
feuille 1 ou encore dans This Workbook et rien ne marche.

Y a t-il quelquechose d'autre à faire (je n'ai pas compris votre
remarque sur les feuilles devant objet Range)?

Merci beaucoup en tout cas de m'avoir aidé


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")




Avatar
newoceane2000
On 24 oct, 18:52, Pierre Fauconnier
wrote:
Vous pouvez donner le code que vous utilisez?






On 24 oct, 17:20, Pierre Fauconnier
wrote:
Regarde le code que je t'ai fait parvenir dans ton deuxième message. Il
y a quelques lignes à ajouter pour encadrer ton code de départ dan s une
boucle For... Next qui itère sur les feuilles de ton classeur...

Je ne vois pas comment t'aider davantage...

Où coinces-tu en appliquant ma solution?
La macro que tu utilises est-elle placée dans un module standard?




On 23 oct, 21:10, "" wrote:
pas testé :

Sub test()
for each page in thisworkbook.sheets
For Each b In page.Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: b= "A"
Case 10.000001 To 30: b = "B"
Case 3.000001 To 10: b = "C"
Case 1.000001 To 3: b = "D"
Case 0.300001 To 1: b = "E"
Case 0.100001 To 0.3: b = "F"
Case Is <= 0.1: b = "G"
End Select
Next
next
End Sub

à mettre de préférence dans un module tout neuf :
oultil / macros / visual basic editor / insertion / module
://jacxl.free.fr

a écrit dans le message de news:

Bonjour à tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne très bien sur une feuille (elle remp lace
les chiffres qui sont dans la colonne B par des lettres) :
Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"
End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la même chose sur to utes
les feuilles d'un classeur en un clic.
Pouvez vous également me décrire avec précision où je doit écrire le
code vba?

Merci pour votre aide


Merci beaucoup de m'avoir répondu mais la macro ne marche pas m ême
en créant un module tout neuf : la macro ne marche même plus sur une
feuille.

Quand à la solution alternative de Pierre Fauconnier, je ne comprend
pas ce que je dois faire.

Pouvez vous m'aider à nouveau?

Merci


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonsoir Pierre,

En copiant le code avec vos lignes en plus, la macro s'exécute
uniquement sur la première feuille et non pas sur tout le classeur.
J'ai fais un essai en copiant le code sur un nouveau module, dans la
feuille 1 ou encore dans This Workbook et rien ne marche.

Y a t-il quelquechose d'autre à faire (je n'ai pas compris votre
remarque sur les feuilles devant objet Range)?

Merci beaucoup en tout cas de m'avoir aidé


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Voici le code que j'utilise :

Sub Test()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"
End Select
Next b
Next Feuille
End Sub





Avatar
MichDenis
Sub Test()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
With Feuille
For Each b In .Range("b1:b" & .Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: .Range("B" & b.Row) = "A"
Case 10.000001 To 30: .Range("B" & b.Row) = "B"
Case 3.000001 To 10: .Range("B" & b.Row) = "C"
Case 1.000001 To 3: .Range("B" & b.Row) = "D"
Case 0.300001 To 1: .Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: .Range("B" & b.Row) = "F"
Case Is <= 0.1: .Range("B" & b.Row) = "G"
End Select
Next
End With
Next Feuille
End Sub
Avatar
Pierre Fauconnier
Vous devez renseigner b et l'objet range comme faisant partie de
l'objet Feuille, comme je l'avais mentionné dans mon exemple, ou en
utilisant un bloc with

sub test()
dim feuille as worksheet
for each feuille in worksheets
with feuille
for each b in .range("b1...
select case b
case 30.000001 to 100 : .range("b...
....
end select
next b
end with
next feuille

Ok?

Remarquez bien le signe . devant les objets Range...

Ok?

On 24 oct, 18:52, Pierre Fauconnier
wrote:
Vous pouvez donner le code que vous utilisez?






On 24 oct, 17:20, Pierre Fauconnier
wrote:
Regarde le code que je t'ai fait parvenir dans ton deuxième message. Il
y a quelques lignes à ajouter pour encadrer ton code de départ dans une
boucle For... Next qui itère sur les feuilles de ton classeur...
Je ne vois pas comment t'aider davantage...
Où coinces-tu en appliquant ma solution?
La macro que tu utilises est-elle placée dans un module standard?

On 23 oct, 21:10, "" wrote:
pas testé :

Sub test()
for each page in thisworkbook.sheets
For Each b In page.Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: b= "A"
Case 10.000001 To 30: b = "B"
Case 3.000001 To 10: b = "C"
Case 1.000001 To 3: b = "D"
Case 0.300001 To 1: b = "E"
Case 0.100001 To 0.3: b = "F"
Case Is <= 0.1: b = "G"
End Select
Next
next
End Sub

à mettre de préférence dans un module tout neuf :
oultil / macros / visual basic editor / insertion / module
://jacxl.free.fr

a écrit dans le message de news:

Bonjour à tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne très bien sur une feuille (elle remplace
les chiffres qui sont dans la colonne B par des lettres) :
Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"
End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la même chose sur toutes
les feuilles d'un classeur en un clic.
Pouvez vous également me décrire avec précision où je doit écrire le
code vba?

Merci pour votre aide


Merci beaucoup de m'avoir répondu mais la macro ne marche pas même
en créant un module tout neuf : la macro ne marche même plus sur une
feuille.

Quand à la solution alternative de Pierre Fauconnier, je ne comprend
pas ce que je dois faire.

Pouvez vous m'aider à nouveau?

Merci


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonsoir Pierre,


En copiant le code avec vos lignes en plus, la macro s'exécute
uniquement sur la première feuille et non pas sur tout le classeur.
J'ai fais un essai en copiant le code sur un nouveau module, dans la
feuille 1 ou encore dans This Workbook et rien ne marche.
Y a t-il quelquechose d'autre à faire (je n'ai pas compris votre
remarque sur les feuilles devant objet Range)?
Merci beaucoup en tout cas de m'avoir aidé


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Voici le code que j'utilise :

Sub Test()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"
End Select
Next b
Next Feuille
End Sub


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")






Avatar
newoceane2000
On 24 oct, 20:29, "MichDenis" wrote:
Sub Test()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
With Feuille
For Each b In .Range("b1:b" & .Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: .Range("B" & b.Row) = "A"
Case 10.000001 To 30: .Range("B" & b.Row) = "B"
Case 3.000001 To 10: .Range("B" & b.Row) = "C"
Case 1.000001 To 3: .Range("B" & b.Row) = "D"
Case 0.300001 To 1: .Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: .Range("B" & b.Row) = "F"
Case Is <= 0.1: .Range("B" & b.Row) = "G"
End Select
Next
End With
Next Feuille
End Sub


Merci beaucoup cette fois ci ça marche très bien !!!!

Avatar
j
ce qui n'empeche pas de remplacer tous les
.Range("B" & b.Row)
par des b :

Case 30.000001 To 100: b = "A"
Case 10.000001 To 30: b = "B"
.....


http://jacxl.free.fr



"MichDenis" a écrit dans le message de news:

Sub Test()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
With Feuille
For Each b In .Range("b1:b" & .Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: .Range("B" & b.Row) = "A"
Case 10.000001 To 30: .Range("B" & b.Row) = "B"
Case 3.000001 To 10: .Range("B" & b.Row) = "C"
Case 1.000001 To 3: .Range("B" & b.Row) = "D"
Case 0.300001 To 1: .Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: .Range("B" & b.Row) = "F"
Case Is <= 0.1: .Range("B" & b.Row) = "G"
End Select
Next
End With
Next Feuille
End Sub




Avatar
j
...sans oublier le range qui est dans le range :
.Range("b1:b" & .Range("b65536").End(xlUp).Row)
(un point pour le premier range et un point pour le deuxième)



"Pierre Fauconnier" a écrit dans le
message de news:
Vous devez renseigner b et l'objet range comme faisant partie de
l'objet Feuille, comme je l'avais mentionné dans mon exemple, ou en
utilisant un bloc with

sub test()
dim feuille as worksheet
for each feuille in worksheets
with feuille
for each b in .range("b1...
select case b
case 30.000001 to 100 : .range("b...
....
end select
next b
end with
next feuille

Ok?

Remarquez bien le signe . devant les objets Range...

Ok?

On 24 oct, 18:52, Pierre Fauconnier
wrote:
Vous pouvez donner le code que vous utilisez?






On 24 oct, 17:20, Pierre Fauconnier
wrote:
Regarde le code que je t'ai fait parvenir dans ton deuxième message.
Il





y a quelques lignes à ajouter pour encadrer ton code de départ dans
une





boucle For... Next qui itère sur les feuilles de ton classeur...
Je ne vois pas comment t'aider davantage...
Où coinces-tu en appliquant ma solution?
La macro que tu utilises est-elle placée dans un module standard?

On 23 oct, 21:10, "" wrote:
pas testé :

Sub test()
for each page in thisworkbook.sheets
For Each b In page.Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: b= "A"
Case 10.000001 To 30: b = "B"
Case 3.000001 To 10: b = "C"
Case 1.000001 To 3: b = "D"
Case 0.300001 To 1: b = "E"
Case 0.100001 To 0.3: b = "F"
Case Is <= 0.1: b = "G"
End Select
Next
next
End Sub

à mettre de préférence dans un module tout neuf :
oultil / macros / visual basic editor / insertion / module
://jacxl.free.fr

a écrit dans le message de news:

Bonjour à tous !

Je suis nulle a vba et j'ai donc besoin de votre aide.
J'ai une macro qui fonctionne très bien sur une feuille (elle
remplace







les chiffres qui sont dans la colonne B par des lettres) :
Sub test()
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"
End Select
Next
End Sub

Je voudrais pouvoir avoir une macro qui fasse la même chose sur
toutes







les feuilles d'un classeur en un clic.
Pouvez vous également me décrire avec précision où je doit écrire
le







code vba?

Merci pour votre aide


Merci beaucoup de m'avoir répondu mais la macro ne marche pas
même






en créant un module tout neuf : la macro ne marche même plus sur une
feuille.

Quand à la solution alternative de Pierre Fauconnier, je ne comprend
pas ce que je dois faire.

Pouvez vous m'aider à nouveau?

Merci


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonsoir Pierre,


En copiant le code avec vos lignes en plus, la macro s'exécute
uniquement sur la première feuille et non pas sur tout le classeur.
J'ai fais un essai en copiant le code sur un nouveau module, dans la
feuille 1 ou encore dans This Workbook et rien ne marche.
Y a t-il quelquechose d'autre à faire (je n'ai pas compris votre
remarque sur les feuilles devant objet Range)?
Merci beaucoup en tout cas de m'avoir aidé


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Voici le code que j'utilise :

Sub Test()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
For Each b In Range("b1:b" & Range("b65536").End(xlUp).Row)
Select Case b
Case 30.000001 To 100: Range("B" & b.Row) = "A"
Case 10.000001 To 30: Range("B" & b.Row) = "B"
Case 3.000001 To 10: Range("B" & b.Row) = "C"
Case 1.000001 To 3: Range("B" & b.Row) = "D"
Case 0.300001 To 1: Range("B" & b.Row) = "E"
Case 0.100001 To 0.3: Range("B" & b.Row) = "F"
Case Is <= 0.1: Range("B" & b.Row) = "G"
End Select
Next b
Next Feuille
End Sub


--
Pierre Fauconnier
Il n'y a jamais eu un moment dans votre vie qui ne se passait pas
"maintenant" et il n'y en aura jamais (Eckart Toll in "Le pouvoir du
moment présent")










1 2