[Excel] 1 même macro sur plusieurs feuilles?
Fermé
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
-
1 juil. 2009 à 14:08
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 21 juil. 2009 à 14:41
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 21 juil. 2009 à 14:41
A voir également:
- [Excel] 1 même macro sur plusieurs feuilles?
- Liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule excel - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Macro word - Guide
4 réponses
Bonjour
Normal que ça ne marche qu'avec la feuille active, le Range("A1:Z85").Select s'applique à la fenêtre active puisqu'aucune feuille n'est précisée
Tu as deux méthodes :
Soit tu actives les feuilles tour à tour
Soit tu précises la feuille
La 1ère solution :
La deuxième solution:
Note que dans cette deuxième solution, tu économises le select pour travailler directement sur les plages qui t'intéressent.
Normal que ça ne marche qu'avec la feuille active, le Range("A1:Z85").Select s'applique à la fenêtre active puisqu'aucune feuille n'est précisée
Tu as deux méthodes :
Soit tu actives les feuilles tour à tour
Soit tu précises la feuille
La 1ère solution :
For Each w In Worksheets w.Activate ...
La deuxième solution:
For Each Cell In w.Range("A1:Z85")(sans le Range("A1:Z85").Select avant)
Note que dans cette deuxième solution, tu économises le select pour travailler directement sur les plages qui t'intéressent.
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
1 juil. 2009 à 15:31
1 juil. 2009 à 15:31
Bonjour,
qcq chose m'échappe...
Si tu l'as mise dans un module elle s'applique à la feuille active qcq soit la feuille... (???)
Et pour éviter de traiter des cellules vides pour rien réduit ta plage à la dernière cellule utilisée avec
Set Plage = [A6].Resize([A65536].End(xlUp).Row - 5, 1)
Pour éviter le clignotement de l'écran tu peux aussi ajouter au début :
application.screenupdating = false
tu le remets à true avant de quitter
eric
qcq chose m'échappe...
Si tu l'as mise dans un module elle s'applique à la feuille active qcq soit la feuille... (???)
Et pour éviter de traiter des cellules vides pour rien réduit ta plage à la dernière cellule utilisée avec
Set Plage = [A6].Resize([A65536].End(xlUp).Row - 5, 1)
Pour éviter le clignotement de l'écran tu peux aussi ajouter au début :
application.screenupdating = false
tu le remets à true avant de quitter
eric
Moi j'essaye aussi de faire une boucle pour chaque feuille mais ça ne marche que pour la feuille active...
Pourriez vous me dire ce qui cloche?
Sub essai()
Dim w As Worksheet
For Each w In Worksheets
'Selectionne la page
Range("A1:Z85").Select
For Each Cell In Selection
'Réinitialise toute la page en blanc
Cell.Interior.ColorIndex = 0
'Colorie en vert les cellules contenant CM ou SJD
If InStr(Cell.Value, "CM") > 0 Or InStr(Cell.Value, "SJD") > 0 Then
Cell.Interior.ColorIndex = 4
End If
'Colorie en jaune les cellule contenant ces critères 1
If Cell.Value = "CM02" Or Cell.Value = "CM07" Or Cell.Value = "CM35" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en jaune les cellule contenant ces critères 2
If Cell.Value = "SJD04" Or Cell.Value = "SJD07" Or Cell.Value = "SJD08" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en rouge les cellule contenant ces critères 3
If Cell.Value = "CM32" Or Cell.Value = "CM51"
Cell.Interior.ColorIndex = 3
End If
'Colorie en rouge les cellule contenant ces critères 4
If Cell.Value = "SJD11" Or Cell.Value = "SJD18" Then
Cell.Interior.ColorIndex = 3
End If
Next
Next w
End Sub
Merci d'avance pour les réponses
Pourriez vous me dire ce qui cloche?
Sub essai()
Dim w As Worksheet
For Each w In Worksheets
'Selectionne la page
Range("A1:Z85").Select
For Each Cell In Selection
'Réinitialise toute la page en blanc
Cell.Interior.ColorIndex = 0
'Colorie en vert les cellules contenant CM ou SJD
If InStr(Cell.Value, "CM") > 0 Or InStr(Cell.Value, "SJD") > 0 Then
Cell.Interior.ColorIndex = 4
End If
'Colorie en jaune les cellule contenant ces critères 1
If Cell.Value = "CM02" Or Cell.Value = "CM07" Or Cell.Value = "CM35" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en jaune les cellule contenant ces critères 2
If Cell.Value = "SJD04" Or Cell.Value = "SJD07" Or Cell.Value = "SJD08" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en rouge les cellule contenant ces critères 3
If Cell.Value = "CM32" Or Cell.Value = "CM51"
Cell.Interior.ColorIndex = 3
End If
'Colorie en rouge les cellule contenant ces critères 4
If Cell.Value = "SJD11" Or Cell.Value = "SJD18" Then
Cell.Interior.ColorIndex = 3
End If
Next
Next w
End Sub
Merci d'avance pour les réponses
jjsteing
Messages postés
1669
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
21 juil. 2009 à 14:41
21 juil. 2009 à 14:41
et la ptite coche résolu ;):p
21 juil. 2009 à 14:33
Merci pour ton aide ;-)