Bonjour les expert(e)s,
J'ai deux fonctions à exécuter, dans une même feuille, qui sont de type worksheet_change et worksheet_selection_change. En parcourant des forums, j'ai remarqué qu'elles peuvent se trouver dans la même feuille. Mes 2 subs contiennent 3 codes à exécuter:
Étonnement, les 3 codes ne fonctionnement pas simultanément.
Si je désactive le code 1, le 2 et 3 fonctionnent.
Si je désactive le code 3, le 1 et 2 fonctionnent.
Si je désactive le code 2, seul le code 3 fonctionne.
Pourriez-vous m'aider à exécuter les 3 codes des 2 subs simultanément? Merci d'avance.
J'ai deux fonctions à exécuter, dans une même feuille, qui sont de type worksheet_change et worksheet_selection_change. En parcourant des forums, j'ai remarqué qu'elles peuvent se trouver dans la même feuille. Mes 2 subs contiennent 3 codes à exécuter:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
If Target.Column <> 14 Then Exit Sub
On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
'Code 1: Multi-select data validation in a single cell
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then
'do nothing
Else
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If Target.Column = 14 Then
If oldVal = "" Then
'do nothing
Else
If newVal = "" Then
'do nothing
Else
Target.Value = oldVal _
& "; " & newVal
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Code 2: Display column I&J if "Scolaire" or "Service Spécial" is selected at least once in the data validation list of the column H.
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim LR As Long
LR = ActiveSheet.Range("H" & Rows.Count).End(xlUp).Row
Dim LA As Long
LA = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
Select Case Target.Column
Case 8
If WorksheetFunction.CountIf(Range("H2:H" & LR), "Scolaire") > 0 Or _
WorksheetFunction.CountIf(Range("H2:H" & LR), "Service Spécial") > 0 Then
Columns("I:J").EntireColumn.Hidden = False
Else
Columns("I:J").EntireColumn.Hidden = True
End If
'Code 3:
Case 1
If WorksheetFunction.CountIf(Range("A2:A" & LA), "(Quasi) Echec") > 0 Or _
WorksheetFunction.CountIf(Range("A2:A" & LA), "(Quasi) Réussite") > 0 Then
Columns("B").EntireColumn.Hidden = False
Else
Columns("B").EntireColumn.Hidden = True
End If
End Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Étonnement, les 3 codes ne fonctionnement pas simultanément.
Si je désactive le code 1, le 2 et 3 fonctionnent.
Si je désactive le code 3, le 1 et 2 fonctionnent.
Si je désactive le code 2, seul le code 3 fonctionne.
Pourriez-vous m'aider à exécuter les 3 codes des 2 subs simultanément? Merci d'avance.
Pièces jointes
Dernière édition: