Bonjour ,
J'ai écrit la macro suivante, je voudrais que la subroutine Sub MAJ_MenuOp s'éxécute automatiquement quand je viens changer ma cellule C1, pourriez vous m'aideR?
******
Sub ListesOp()
Application.ScreenUpdating = False 'mise à jour de l'écran désactivée
Sheets("Rapport 1").Select
ActiveSheet.Range("A:$DY").AutoFilter Field:=4, Criteria1:="3.7 Prévalidé"
ActiveSheet.ShowAllData
Dim NbRef As Long
NbRef = Application.WorksheetFunction.CountA(Sheets("Rapport 1").Range("$O:$O")) - 1
Dim TabRefData101(20000, 0)
Dim TabRefData103(20000, 0)
Dim Cpt As Long
Dim Cpt101 As Long
Cpt101 = 0
Dim Cpt103 As Long
Cpt103 = 0
Dim RefOp
Dim Fiche
Dim Concl_1
Dim Concl_2
For Cpt = 1 To NbRef
RefOp = Sheets("Rapport 1").Range("O" & Cpt + 1).Value
Fiche = Sheets("Rapport 1").Range("R" & Cpt + 1).Value
Concl_1 = Sheets("Rapport 1").Range("CI" & Cpt + 1).Value
Concl_2 = Sheets("Rapport 1").Range("CW" & Cpt + 1).Value
If Fiche = "BAR-EN-101" And Concl_1 = "Non satisfaisant" Then
' If Fiche = "*101*" And (Concl_1 = "Non satisfaisant" Or Concl_2 = "Non satisfaisant") Then
Cpt101 = Cpt101 + 1
TabRefData101(Cpt101 - 1, 0) = RefOp
ElseIf Fiche = "BAR-EN-103" And Concl_1 = "Non satisfaisant" Then
' ElseIf Fiche = "*103*" And (Concl_1 = "Non satisfaisant" Or Concl_2 = "Non satisfaisant") Then
Cpt103 = Cpt103 + 1
TabRefData103(Cpt103 - 1, 0) = RefOp
End If
Next
Sheets("Menus").Range("A2:A" & Cpt101 + 1).Value = TabRefData101
Sheets("Menus").Range("B2:B" & Cpt103 + 1).Value = TabRefData103
With Sheets("Menus")
.Activate
.Range("A2:A" & Cpt101 + 1).Select
ActiveWorkbook.Names.Add Name:=("Plage101"), RefersTo:="=" & "Menus!" & Selection.Address
End With
With Sheets("Menus")
.Activate
.Range("B2:B" & Cpt103 + 1).Select
ActiveWorkbook.Names.Add Name:=("Plage103"), RefersTo:="=" & "Menus!" & Selection.Address
End With
Sheets("MAJ").Select
Dim FicheCEE As String
FicheCEE = Range("$C$1").Value
Call MAJ_MenuOp(FicheCEE)
' :="=Menus!$A$2:$A$" & Cpt101
Application.ScreenUpdating = True 'mise à jour de l'écran réactivée
End Sub
Sub MAJ_MenuOp(Fiche As String)
'
' Macro2 Macro
'
Sheets("MAJ").Select
If Fiche = "BAR-EN-101" Then
Range("C2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Plage101"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
ElseIf Fiche = "BAR-EN-103" Then
Range("C2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Plage103"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub
****
Partager