Effectuer une opération répétitive sur plusieurs feuilles

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Dans mon classeur j'ai 5 feuilles.
Dans les 3 1ères (et uniquement dans les 3 1ères) je veux réaliser une opération, mais toujours la même quelle que soit l'une des 3 1ères feuilles.
J'ai tenté ainsi :

Sub OpFeuilles()

Dim i As Byte, n As Name, cel As Range, plage As Range, nbfeuille As Byte

nbfeuille = Worksheets.Count - 2 'Les 2 dernières feuilles sont exclues

For i = 1 To nbfeuille
Worksheets(i).Select
For Each cel In Worksheets(i).UsedRange
.
.
.
Next cel
On Error Resume Next
ThisWorkbook.Names("Zone" & i).Delete
plage.Name = "Zone" & i
Next i

End Sub

Et bien, ¡Caramba! ça ne marche pas, mais pas du tout, sauf pour la 1ère feuille.

Où me suis-je lamentablement planté.
Merci pour me le dire.
 
Re : Effectuer une opération répétitive sur plusieurs feuilles

Bonjour Magic Doctor, tbft,

Il est parfaitement inutile d'activer les feuilles, comme c'est presque toujours le cas en VBA.

Par contre il faut réinitialiser pour chaque feuille la variable plage => Nothing après usage :

Code:
Sub OpFeuilles()

Dim i As Byte, n As Name, cel As Range, plage As Range, nbfeuille As Byte

nbfeuille = Worksheets.Count - 2 'Les 2 dernières feuilles sont exclues

For i = 1 To nbfeuille
For Each cel In Worksheets(i).UsedRange
'...
'...
'...
Next cel
On Error Resume Next
ThisWorkbook.Names("Zone" & i).Delete
plage.Name = "Zone" & i
Set plage = Nothing 'réinitialisation
Next i

End Sub
A+
 
Re : Effectuer une opération répétitive sur plusieurs feuilles

Bonjour job, tbft,

¡Caramba! Mais c'est bien sour !!!
Il fallait vider la "plage" avec l'énigmatique "= Nothing". Pourquoi énigmatique, car il n'est pas toujours très clair quand il est nécessaire ou pas de "vider" une plage.
En revanche je n'ai pas bien compris ce que tbft m'a demandé :
as tu essayé d'activé la feuille avant de travailler dessus?

En tout cas ENCORE merci job pour tes conseils éclairés.

Bonne fin d'après-midi à tous.
 
Re : Effectuer une opération répétitive sur plusieurs feuilles

Re,

il n'est pas toujours très clair quand il est nécessaire ou pas de "vider" une plage.

Une variable Range, et plus généralement une variable Object, contient la valeur Nothing quand on ouvre le fichier.

Ensuite, si elle n'est pas mémorisée (déclaration Public ou Dim en haut de la feuille de code), elle reprend la valeur Nothing a la fin de la macro.

Pendant l'exécution de la macro, comme toute variable, elle contient la dernière valeur calculée, donc attention dans les boucles...

A+
 
Re : Effectuer une opération répétitive sur plusieurs feuilles

Bonjour au fil et à ses protagonistes

Ma vision de l'histoire
Et on lance mainproc
Code:
Private Sub opfeuille(s As Byte)
Dim c As Range
'ici code à effectuer sur les feuilles
For Each c In Worksheets(s).UsedRange
c.Borders.LineStyle = 1 ' ici pour test
Next c
End Sub
Code:
Sub mainproc()
Dim i As Byte
For i = 1 To 3
opfeuille i
Next i
End Sub

On peut aussi l'écrire comme ça:
Code:
Sub mainproc()
opfeuille 1
opfeuille 2
opfeuille 3
End Sub
 
Dernière édition:
Re : Effectuer une opération répétitive sur plusieurs feuilles

Bonjour Jean-Marie, heureux de te croiser 🙂

Le test :

Code:
If c.Borders.LineStyle = 1 Then
fonctionne bien si les 4 bordures d'une cellule sont absolument identiques, sinon il faut tester chacune des 4.

PS : tu seras avec nous le 26/11 dans la Dombes ? (Merci Brigitte pour le la)

A+
 
Re : Effectuer une opération répétitive sur plusieurs feuilles

Bonjour job75 😉

J'ai mis ce c.Border.LineStyle=1 comme j'aurai pu mettre c.Font.Bold=True
(C'était juste pour tester ma proposition et voir si elle était fonctionnelle visuellement)

J'avions point mis de If et de Then d'ailleurs 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
582
Retour