Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

automatiser une procédure qui se répète sur plusieurs feuilles

  • Initiateur de la discussion Initiateur de la discussion juju44
  • Date de début Date de début

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 !

J

juju44

Guest
Bonjour à tous,

je fais appel à votre aide pour résoudre le problème suivant :

Dans mon classeur j'ai plusieurs feuilles de calcul nommées chantier1, chantier2, chantier3,...Sur ces feuilles, j'ai nommé des cellules ou des plages de cellules. Ex : DTouTous_C1, DTouTous_C2, DTouTous_C3........COD_DT_C1, COD_DT_C2, COD_DT_C3,....

Voici la procédure & laquelle je fais appel pour ma feuille "Chantier1"

Code:
Sub AfficDT0_C1_QuandClic()
    'Bouton permettant d'afficher alternativement que DT ou tous les sites de la DT
    
    Application.ScreenUpdating = False
    
    Application.Calculation = xlManual
    'Bloquage du calcul auto
      
    ActiveSheet.Rows("16:800").Hidden = True
    
    If [DTouTous_C1] = "Afficher seulement les résultats de la DT" Then
        With ActiveSheet
            With .range("A16:A800").Offset(, .Columns.Count - 1)
                .FormulaR1C1 = "=IF(or(RC1=COD_DT_C1, and(len(RC1)=3, left(RC1,2)=DT), RC1=""ok""),""x"",0)"
                On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, xlTextValues).EntireRow.Hidden = False
                On Error GoTo 0
                .Clear
            End With
        End With

        [DTouTous_C1] = "Afficher tous les sites de la DT"

    Else
        [DTouTous_C1] = "Afficher seulement les résultats de la DT"
    
        With ActiveSheet
            With .range("A16:A800").Offset(, .Columns.Count - 1)
                .FormulaR1C1 = "=IF(or(left(RC3,2)=DT,RC1=""ok""),""x"",0)"
                On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, xlTextValues).EntireRow.Hidden = False
                On Error GoTo 0
                .Clear
            End With
        End With

    End If
    
[List_sites].Text = ""

Application.ScreenUpdating = True

End Sub

et celle utilisée pour la feuille Chantier3

Code:
Sub AfficDT0_C3_QuandClic()
    'Bouton permettant d'afficher alternativement que DT ou tous les sites de la DT
    
    Application.ScreenUpdating = False
    
    Application.Calculation = xlManual
    'Bloquage du calcul auto
      
    ActiveSheet.Rows("16:800").Hidden = True
    
    If [DTouTous_C3] = "Afficher seulement les résultats de la DT" Then
        With ActiveSheet
            With .range("A16:A800").Offset(, .Columns.Count - 1)
                .FormulaR1C1 = "=IF(or(RC1=COD_DT_C3, and(len(RC1)=3, left(RC1,2)=DT), RC1=""ok""),""x"",0)"
                On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, xlTextValues).EntireRow.Hidden = False
                On Error GoTo 0
                .Clear
            End With
        End With

        [DTouTous_C3] = "Afficher tous les sites de la DT"

    Else
        [DTouTous_C3] = "Afficher seulement les résultats de la DT"
    
        With ActiveSheet
            With .range("A16:A800").Offset(, .Columns.Count - 1)
                .FormulaR1C1 = "=IF(or(left(RC3,2)=DT,RC1=""ok""),""x"",0)"
                On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, xlTextValues).EntireRow.Hidden = False
                On Error GoTo 0
                .Clear
            End With
        End With

    End If
    
[List_sites].Text = ""

Application.ScreenUpdating = True

End Sub

Seuls changement entre ces 2 procédures, les références aux plages nommées

Ma question : comment rédiger une unique procédure que je mettrai dans un module pour éviter d'avoir à l'écrire dans chacune des feuilles "chantier" et ainsi optimiser le code.

Merci d'avance de me donner quelques pistes !

Bonne journée
 
Re : automatiser une procédure qui se répète sur plusieurs feuilles

bon c'était tout bête finalement...

Code:
Sub AfficDT(A As range, B As range)
    'Bouton permettant d'afficher alternativement que DT ou tous les sites de la DT
    
    Application.ScreenUpdating = False
    
    Application.Calculation = xlManual
    'Bloquage du calcul auto
    
    ActiveSheet.Rows("16:800").Hidden = True
    
    If A = "Afficher seulement les résultats de la DT" Then
        With ActiveSheet
            With .range("A16:A800").Offset(, .Columns.Count - 1)
                .FormulaR1C1 = "=IF(or(RC1=" & B & ", and(len(RC1)=3, left(RC1,2)=DT), RC1=""ok""),""x"",0)"
                On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, xlTextValues).EntireRow.Hidden = False
                On Error GoTo 0
                .Clear
            End With
        End With

        A = "Afficher tous les sites de la DT"

    Else
        A = "Afficher seulement les résultats de la DT"
    
        With ActiveSheet
            With .range("A16:A800").Offset(, .Columns.Count - 1)
                .FormulaR1C1 = "=IF(or(left(RC3,2)=DT,RC1=""ok""),""x"",0)"
                On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, xlTextValues).EntireRow.Hidden = False
                On Error GoTo 0
                .Clear
            End With
        End With

    End If
    
[List_sites].Text = ""

Application.ScreenUpdating = True

End Sub
 
Dernière modification par un modérateur:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…