Sélection de colonne en fonction d'une sélection
Fermé
UnVBAliable
-
Modifié le 20 févr. 2018 à 13:25
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 21 févr. 2018 à 04:27
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 21 févr. 2018 à 04:27
A voir également:
- Sélection de colonne en fonction d'une sélection
- Déplacer une colonne excel - Guide
- Fonction si et - Guide
- Formule somme excel colonne - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
2 réponses
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
21 févr. 2018 à 01:40
21 févr. 2018 à 01:40
Bonjour,
Je ne sais pas si tu connais ... mais enfin ...
Dans un module place le code suivant :
Derrière la feuille place le code suivant :
Bon, perso je ne suis pas un fan du ElseIf, mais tu pourras ajuster à ton aise...
Ce sera quand même plus performant que de boucler sur toute les cellules ...
K
Je ne sais pas si tu connais ... mais enfin ...
Dans un module place le code suivant :
Option Explicit ' Public Const PlageA = "B3:C74" Public Const PlageB = "D3:E74" Public Const PlageC = "F3:G74" Public Const PlageD = "H3:I74" Public Const PlageE = "J3:K74" Public Const PlageF = "L3:M74" Public Const PlageG = "N3:O74" ' Public Maplage As Range ' Public Sub TestMaPlage() MsgBox Maplage.Address End Sub
Derrière la feuille place le code suivant :
Option Explicit ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not (Intersect(Target, Range(PlageA)) Is Nothing) Then Set Maplage = Range(PlageA) Else If Not (Intersect(Target, Range(PlageB)) Is Nothing) Then Set Maplage = Range(PlageB) Else If Not (Intersect(Target, Range(PlageC)) Is Nothing) Then Set Maplage = Range(PlageC) Else If Not (Intersect(Target, Range(PlageD)) Is Nothing) Then Set Maplage = Range(PlageD) Else If Not (Intersect(Target, Range(PlageE)) Is Nothing) Then Set Maplage = Range(PlageE) Else If Not (Intersect(Target, Range(PlageF)) Is Nothing) Then Set Maplage = Range(PlageF) Else If Not (Intersect(Target, Range(PlageG)) Is Nothing) Then Set Maplage = Range(PlageG) End If End If End If End If End If End If End If End Sub '
Bon, perso je ne suis pas un fan du ElseIf, mais tu pourras ajuster à ton aise...
Ce sera quand même plus performant que de boucler sur toute les cellules ...
K
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
Modifié le 21 févr. 2018 à 04:28
Modifié le 21 févr. 2018 à 04:28
re:
Une variante ... plus tordu ... mais plus rapide ... pour le plaisirs
K
Une variante ... plus tordu ... mais plus rapide ... pour le plaisirs
Option Explicit ' Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim PlageAA As Range Dim PlageAB As Range Set PlageAA = Union(Range(PlageA), Range(PlageB), Range(PlageC), Range(PlageD)) Set PlageAB = Union(Range(PlageE), Range(PlageF), Range(PlageG)) If Not (Intersect(Target, PlageAA) Is Nothing) Then Set PlageAA = Union(Range(PlageA), Range(PlageB)) Set PlageAB = Union(Range(PlageC), Range(PlageD)) If Not (Intersect(Target, PlageAA) Is Nothing) Then If Not (Intersect(Target, Range(PlageA)) Is Nothing) Then Set MaPlage = Range(PlageA) Else If Not (Intersect(Target, Range(PlageB)) Is Nothing) Then Set MaPlage = Range(PlageB) End If End If Else If Not (Intersect(Target, PlageAB) Is Nothing) Then If Not (Intersect(Target, Range(PlageC)) Is Nothing) Then Set MaPlage = Range(PlageC) Else If Not (Intersect(Target, Range(PlageD)) Is Nothing) Then Set MaPlage = Range(PlageD) End If End If End If End If Else If Not (Intersect(Target, PlageAB) Is Nothing) Then Set PlageAA = Union(Range(PlageE), Range(PlageF)) If Not (Intersect(Target, PlageAA) Is Nothing) Then If Not (Intersect(Target, Range(PlageE)) Is Nothing) Then Set MaPlage = Range(PlageE) Else If Not (Intersect(Target, Range(PlageF)) Is Nothing) Then Set MaPlage = Range(PlageF) End If End If Else If Not (Intersect(Target, Range(PlageG)) Is Nothing) Then Set MaPlage = Range(PlageG) End If End If End If End If End Sub
K