Regrouper plusieurs macro conditionnelles en une même sentence

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

J'ai dans une feuille plusieurs cellules qui, quand on clique dessus, déclenchent toutes le même événement.

Dans le module de la feuille, voici ce que j'ai écrit :

Private Sub Worksheet_Change(ByVal Target As Range)

'Pour la cellule "DilNbUXFl1"
If Not Application.Intersect(Target, [DilNbUXFl1]) Is Nothing Then
Application.EnableEvents = False

If ControleSaisie([DilNbUXFl1], 1) = 1 Then [DilNbUXFl1] = "? ? ?" '---> Contrôles saisies

End If

'Pour la cellule "DilVolS1a"
If Not Application.Intersect(Target, [DilVolS1a]) Is Nothing Then
Application.EnableEvents = False

If ControleSaisie([DilVolS1a], 1) = 1 Then [DilVolS1a] = "? ? ?" '---> Contrôles saisies

End If

'et ceci pour une quinzaine de cellules

Application.EnableEvents = True
End Sub

Ça marche.

---------------------------------------------

Plutôt que de réécrire sempiternellement la même sentence, j'ai essayé ceci :

'Pour les cellules "DilNbUXFl1", "DilVolS1a"...
If Not Application.Intersect(Target, [DilNbUXFl1], [DilVolS1a],...) Is Nothing Then
Application.EnableEvents = False

If ControleSaisie([DilNbUXFl1], 1) = 1 Then
[DilNbUXFl1] = "? ? ?"
ElseIf ControleSaisie([DilVolS1a], 1) = 1 Then
[DilVolS1a] = "? ? ?"
.
.
.
End If


End If

Ça ne marche pas.
Comment résoudre ce problème ?

Merci d'avance.
 
Re : Regrouper plusieurs macro conditionnelles en une même sentence

Bonsoir le fil, MagicDoctor

Un exemple avec "SelectCase" et "Target.Address" (à adapter)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    If Target.Count > 1 Then Exit Sub
 
    Application.EnableEvents = False
 
    Select Case Target.Address
        Case "$D$3"
            ' code
        Case "$F$4"
            ' code
        Case "$B$7"
            ' code
        ' ...
 
    End Select
 
    ' . . .
 
    Application.EnableEvents = True
 
End Sub
A plus

Edition : Oups! Bonsoir Skoobi
 
Dernière édition:
Re : Regrouper plusieurs macro conditionnelles en une même sentence

Bonsoir,

N'apporte rien au fil (comme dirait un certain frèrot), mais juste pour le plaisir de saluer l'ami Skoobi😀😀😀

A+
A+++Skoobi
 
Re : Regrouper plusieurs macro conditionnelles en une même sentence

Merci Skoobi & Soenda, bonsoir Hasco,

J'ai fait une synthèse de ce que m'ont proposé Skoobi & Soenda, et ça marche très bien :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("DilNbUXFl1, DilVolS1a,...")) Is Nothing Then
Application.EnableEvents = False

If ControleSaisie(Target, 1) = 1 Then Target = "? ? ?"

Application.EnableEvents = True
End If

End Sub

"ControleSaisie" étant une petite fonction que j'ai rédigée, permettant de contrôler les saisies. Si celles-ci sont erronées ---> "? ? ?"

Très bonne fin de soirée et encore merci.
 
- 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

Discussions similaires

Réponses
9
Affichages
508
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
588
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour