Macro adapter sur plusieurs feuille ?

arhezroq

XLDnaute Nouveau
bonjour a tous , je suis nouveau sur ce forum et j'ai voulu vous demander de l'aide sur un problème qui me bloque sur les macro.
Mon problème au niveau de la création d'une macro qui peut fonctionner sur la feuille activer , le classeur se constitue de plusieurs feuille , et j'ai créer sur une feuille 5 bouton , chaque bouton correspond a un code macro pour trier des données , mon but est de modifier le code pour que ces macro seront active lorsqu'on passe aux autre feuille puisque tout le concept est pareil sauf les données , je suis pas pro au Macro et je bloque la dessus je vous met l'exemple d'une macro, Merci d'avance pour votre aide .

Sub Mise1()
Dim pf As Range 'déclare la variable pf (Plage de réFérence)
Dim pr As Range 'déclare la variable pr (Plage de Recherche)
Dim cf As Range 'déclare la variable cf (Cellule de la plage de réFérence)
Dim cr As Range 'déclare la variable cr (Cellule de la plage de Recherche)

With Sheets("S11") 'ici ca prend en compte que la feuille s11
Set pf = .Range("E191:E252") 'définit la plage pf
'définit la plage pr
Set pr = .Range("D7:F180")
For Each cf In pf 'boucle 1 : sur toutes les cellules cf de la plage pf
For Each cr In pr 'boucle 2 : sur toutes les cellules cr de la plage pr
If cr.Value = cf.Value Then 'condition : si les deux cellules sont identiques
cf.Font.ColorIndex = 2
Exit For 'sort de la boucle 2
Else: cf.Font.ColorIndex = 1
End If 'fin de la condition
Next cr 'prochaine cellule cr de la boucle 2
Next cf 'prochaine cellule cf de la boucle 1
End With 'fin de la prise en compte de l'onglet
End Sub
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Arhezroq, bonjour le forum,

Si tu veux que le code boucle sur tous les onglets sans exception :

VB:
Sub Mise1()

Dim O As Worksheet 'déclare la variable O (Onglets)
Dim pf As Range 'déclare la variable pf (Plage de réFérence)
Dim pr As Range 'déclare la variable pr (Plage de Recherche)
Dim cf As Range 'déclare la variable cf (Cellule de la plage de réFérence)
Dim cr As Range 'déclare la variable cr (Cellule de la plage de Recherche)

For Each O In Sheets 'boucle sur tous les onglets O du classeur
    With O 'prend en compte l'onglet O
        Set pf = .Range("E191:E252") 'définit la plage pf
        'définit la plage pr
        Set pr = .Range("D7:F180")
        For Each cf In pf 'boucle 1 : sur toutes les cellules cf de la plage pf
            For Each cr In pr 'boucle 2 : sur toutes les cellules cr de la plage pr
                If cr.Value = cf.Value Then 'condition : si les deux cellules sont identiques
                    cf.Font.ColorIndex = 2
                    Exit For 'sort de la boucle 2
                Else: cf.Font.ColorIndex = 1
                End If 'fin de la condition
            Next cr 'prochaine cellule cr de la boucle 2
        Next cf 'prochaine cellule cf de la boucle 1
    End With 'fin de la prise en compte de l'onglet O
Next O 'prochain onglet de la boucle
End Sub

Si tu veux des exceptions :
VB:
Sub Mise1()
 
Dim O As Worksheet 'déclare la variable O (Onglets)
 
Dim pf As Range 'déclare la variable pf (Plage de réFérence)
 
Dim pr As Range 'déclare la variable pr (Plage de Recherche)
 
Dim cf As Range 'déclare la variable cf (Cellule de la plage de réFérence)
 
Dim cr As Range 'déclare la variable cr (Cellule de la plage de Recherche)
 [/COLOR]

[COLOR=#000000] 
For Each O In Sheets 'boucle sur tous les onglets O du classeur
 
    Select Case O.Name 'agit en fonction du nom de l'onglet O
 
        Case "Feuil1", "Feuil2" 'ici tu mettras le nom du ou des onglets qui ne sont pas concernés (si il y en en), j'ai mis "Feuil1" et "Feuil2" pour l'exemple, tu adapteras à ton cas
 
        Case Else 'tous les autres cas (donc ceux qui sont concernés par la macro)
 
            With O 'prend en compte l'onglet O
 
                Set pf = .Range("E191:E252") 'définit la plage pf
 
                'définit la plage pr
 
                Set pr = .Range("D7:F180")
 
                For Each cf In pf 'boucle 1 : sur toutes les cellules cf de la plage pf
 
                    For Each cr In pr 'boucle 2 : sur toutes les cellules cr de la plage pr
 
                        If cr.Value = cf.Value Then 'condition : si les deux cellules sont identiques
 
                            cf.Font.ColorIndex = 2
 
                            Exit For 'sort de la boucle 2
 
                        Else: cf.Font.ColorIndex = 1
 
                        End If 'fin de la condition
 
                    Next cr 'prochaine cellule cr de la boucle 2
 
                Next cf 'prochaine cellule cf de la boucle 1
 
            End With 'fin de la prise en compte de l'onglet O
 
    End Select 'fin de l'action en fonction du nom de l'onglet
 
Next O 'prochain onglet de la boucle
 
End Sub

C'est marrant mais ces commentaire me parlent...


 

Discussions similaires

Réponses
3
Affichages
289
Réponses
1
Affichages
160

Statistiques des forums

Discussions
312 102
Messages
2 085 303
Membres
102 857
dernier inscrit
Nony1931