Change / Selection Change

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 !

Valentin_Loupe

XLDnaute Occasionnel
Bonjour à tous,

Je voudrais tout d'abord connaître la différence entre Change et Selection Change.

Ensuite je voudrais savoir comment faire lorsque l'on veut insérer plusieurs conditions différentes dans une procédure Change : je m'explique : j'ai :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Name = Range("C3").Value
    If Range("C110") = "Local" Then
        Range("C111").Validation.Delete
        Range("C111").Validation.Add Type:=xlValidateList, Formula1:="=TextesLocal"
    ElseIf Range("C110") = "Sous Sol" Then
        Range("C111").Validation.Delete
        Range("C111").Validation.Add Type:=xlValidateList, Formula1:="=TextesSousSol"
    ElseIf Range("C110") = "Vide Sanitaire" Then
        Range("C111").Validation.Delete
        Range("C111").Validation.Add Type:=xlValidateList, Formula1:="=TextesVideSanitaire"
    ElseIf Range("C110") = "Combles" Then
        Range("C111").Validation.Delete
        Range("C111").Validation.Add Type:=xlValidateList, Formula1:="=TextesCombles"
    ElseIf Range("C110") = "Circulation intérieure, sans paroi extérieure" Then
        Range("C111").Validation.Delete
        Range("C111").Validation.Add Type:=xlValidateList, Formula1:="=TextesCirculationIntérieure"
    End If
End Sub

Sauf que désormais je voudrais ajouter :

Code:
If Target.Address = "$C$141" Then
    [$C$142] = "Précisez..."
    End If
If Target.Address = "$C$141" Then
    [$C$173] = "Précisez..."
    End If
If Target.Address = "$C$141" Then
    [$C$202] = "Précisez..."
    End If

Mais aussi :

Code:
    If Range("C172") = "Local" Then
        Range("C173").Validation.Delete
        Range("C173").Validation.Add Type:=xlValidateList, Formula1:="=TextesLocal"
    ElseIf Range("C172") = "Sous Sol" Then
        Range("C173").Validation.Delete
        Range("C173").Validation.Add Type:=xlValidateList, Formula1:="=TextesSousSol"
    ElseIf Range("C172") = "Vide Sanitaire" Then
        Range("C173").Validation.Delete
        Range("C173").Validation.Add Type:=xlValidateList, Formula1:="=TextesVideSanitaire"
    ElseIf Range("C172") = "Combles" Then
        Range("C173").Validation.Delete
        Range("C173").Validation.Add Type:=xlValidateList, Formula1:="=TextesCombles"
    ElseIf Range("C172") = "Circulation intérieure, sans paroi extérieure" Then
        Range("C173").Validation.Delete
        Range("C173").Validation.Add Type:=xlValidateList, Formula1:="=TextesCirculationIntérieure"
    End If
End Sub

Et enfin :
Code:
    If Range("C201") = "Local" Then
        Range("C202").Validation.Delete
        Range("C202").Validation.Add Type:=xlValidateList, Formula1:="=TextesLocal"
    ElseIf Range("C201") = "Sous Sol" Then
        Range("C202").Validation.Delete
        Range("C202").Validation.Add Type:=xlValidateList, Formula1:="=TextesSousSol"
    ElseIf Range("C201") = "Vide Sanitaire" Then
        Range("C202").Validation.Delete
        Range("C202").Validation.Add Type:=xlValidateList, Formula1:="=TextesVideSanitaire"
    ElseIf Range("C201") = "Combles" Then
        Range("C202").Validation.Delete
        Range("C202").Validation.Add Type:=xlValidateList, Formula1:="=TextesCombles"
    ElseIf Range("C201") = "Circulation intérieure, sans paroi extérieure" Then
        Range("C202").Validation.Delete
        Range("C202").Validation.Add Type:=xlValidateList, Formula1:="=TextesCirculationIntérieure"
    End If
End Sub

Merci de votre aide précieuse !

Valentin
 
Re : Change / Selection Change

Bonjour,

Il y a dans excel une aide excelente qui explique les différences entre Change et Selection_Change.

Bref: Evènement Change -> quand une cellule change de valeur
Evènement Selection_Change -> quand la selection change

Les if elseif peuvent être favorablement changé en
Select case range(???)
case "Local"
case "machin"
case "truc"
end Select

L'aide en ligne est très efficace pour cela aussi.


Pour le reste, je m'en tiens là car je m'absente.

Peut-être à plus tard
 
Re : Change / Selection Change

Bonjour
Le select case proposé par Hasco est une réponse.
On ne connait pas ton classeur ni sa finalité mais je ne suis pas sûre que tout ce code doivent dépende d'une seule cellule.
Il faut optimiser :
  • plutot utiliser des positions relatives que des adresses en dur si tu ne veux pas avoir tout à refaire au moindre changement
  • remplacer ce type de code
    If Target.Address = "$C$141" Then
    [$C$142] = "Précisez..."
    End If
    If Target.Address = "$C$141" Then
    [$C$173] = "Précisez..."
    End If
    If Target.Address = "$C$141" Then
    [$C$202] = "Précisez..."
    End If

    par
    If Target.Address = "$C$141" Then
    [$C$142] = "Précisez..."
    [$C$173] = "Précisez..."
    [$C$202] = "Précisez..."
    End If
  • le code
    If Range("C110") = "Local" Then
    Range("C111").Validation.Delete
    Range("C111").Validation.Add Type:=xlValidateList, Formula1:="=TextesLocal"
    .....
    .....
    ......
    par
    Range("C111").Validation.Delete
    Range("C111").Validation.Add Type:=xlValidateList, Formula1:="=Textes" & Replace(Range("C110").value," ","")

    car sauf erreur de ma part, la logique ne changeant pas, 2 lignes remplacent toutes les autres
Edit : replace ajouté pour tenir compte des espaces dans les libellés de C110
 
Dernière édition:
- 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

T
  • Résolu(e)
XL pour MAC lenteur du vba
Réponses
16
Affichages
3 K
A
Réponses
4
Affichages
1 K
azerty56
A
P
Réponses
7
Affichages
2 K
I
Réponses
1
Affichages
932
inconnu
I
O
  • Question Question
XL 2016 Erreur VBA
Réponses
3
Affichages
708
O
B
Réponses
2
Affichages
1 K
L
Réponses
2
Affichages
518
Laguich
L
T
Réponses
10
Affichages
2 K
titom59280
T
S
Réponses
3
Affichages
1 K
S
G
Réponses
2
Affichages
2 K
guigol
G
Retour