Sélection de colonne en fonction d'une sélection
UnVBAliable
-
Kalissi Messages postés 218 Date d'inscription Statut Membre Dernière intervention -
Kalissi Messages postés 218 Date d'inscription Statut Membre Dernière intervention -
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