Sélection de colonne en fonction d'une sélection
UnVBAliable
-
Kalissi Messages postés 221 Statut Membre -
Kalissi Messages postés 221 Statut Membre -
Bonjour à tous,
Un problème se pause à moi j'aimerais faire fonctionner la boucle suivante, cependant l'erreur d'exécution "13" (Incompatibilité de type).
Pour d'écrire le processus que je voudrais faire, il serait de sélectionner des colonnes en fonction d'une sélection :
Merci d'avance pour vos réponses
Cordialement
Un problème se pause à moi j'aimerais faire fonctionner la boucle suivante, cependant l'erreur d'exécution "13" (Incompatibilité de type).
Pour d'écrire le processus que je voudrais faire, il serait de sélectionner des colonnes en fonction d'une sélection :
Dim Maplage As Range
Dim i As Integer
Set Sel = Selection
For i = 3 To 74
If Sel = Range("B" & i & ":C" & i) Then
Set Maplage = Range("B3:C74")
ElseIf Sel = Range("D" & i & ":E" & i) Then
Set Maplage = Range("D3:E74")
ElseIf Sel = Range("F" & i & ":G" & i) Then
Set Maplage = Range("F3:G74")
ElseIf Sel = Range("H" & i & ":I" & i) Then
Set Maplage = Range("H3:I74")
ElseIf Sel = Range("J" & i & ":K" & i) Then
Set Maplage = Range("J3:K74")
ElseIf Sel = Range("A" & i & ":L" & i) Then
Set Maplage = Range("L3:M74")
ElseIf Sel = Range("N" & i & ":O" & i) Then
Set Maplage = Range("N3:O74")
End If
Next i
Maplage.Select
Merci d'avance pour vos réponses
Cordialement
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Sélection de colonne en fonction d'une sélection
- Déplacer une colonne excel - Guide
- Fonction si et - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
2 réponses
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
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