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
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Déplacer une colonne excel - Guide
- Outil selection illustrator ne fonctionne pas ✓ - Forum Illustrator
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Inverser selection excel - Forum Excel
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