Problème de code pour afficher / masquer des colonnes selon condition
Bonsoir,
Je voudrais afficher/masquer des colonnes de ma feuille "Tableau de saisie" en fonction d'un choix d'une liste déroulante en B2.
Chaque choix se retrouve en plage DU24:DU34 de la même feuille.
Si aucun choix = " " --> toutes les colonnes sont affichées.
Lorsque je sélectionne la cellule "DU24" en B2, j'ai une erreur "d'incompatibilité de type" au niveau de la ligne rouge ci-dessous.
Pourtant ma target se compare bien à une seule valeur, j'ai du mal à comprendre l'erreur ! :)
Merci pour votre aide !
Cordialement !
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2")) Is Nothing Then
If Target.Value = "" Then Exit Sub
If Target.Value = Range("DU24") Then
Sheets("Tableau de saisie").Columns("F:N,AM:AW,BO:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("O:AL,AX:BN,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU25") Then
Sheets("Tableau de saisie").Columns("F:N,AM:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("O:AL,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU26") Then
Sheets("Tableau de saisie").Columns("F:N;V:BW,CC:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("O:V,BX:CB,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU27") Then
Sheets("Tableau de saisie").Columns("I:AL,AX:BN,BX:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("F:H,AM:AW,BO:BW,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU28") Then
Sheets("Tableau de saisie").Columns("F:H,M:U,AM:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("I:L,V:AL,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU29") Then
Sheets("Tableau de saisie").Columns("F:H,M:AL,AX:BN,BX:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("I:L,AM:AW,BO:BW,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU30") Then
Sheets("Tableau de saisie").Columns("F:H,M:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("I:L,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU31") Then
Sheets("Tableau de saisie").Columns("I:U,AM:AW,BO:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("V:AL,AX:BN,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU32") Then
Sheets("Tableau de saisie").Columns("I:U,AM:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("V:AL,CQ:CT").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU33") Then
Sheets("Tableau de saisie").Columns("F:CB,CG:CT").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("CC:CF").EntireColumn.Hidden = False
ElseIf Target.Value = Range("DU34") Then
Sheets("Tableau de saisie").Columns("F:CP").EntireColumn.Hidden = True
Sheets("Tableau de saisie").Columns("CQ:CT").EntireColumn.Hidden = False
End If
End If
End Sub
Salut Arkadia,
peut-être y a-t-il une autre écriture encore mais celle-ci fonctionne...
Case "DU28"
Union(.Columns("F:H"), .Columns("M:U"), .Columns("AM:CP")).EntireColumn.Hidden = True
Union(.Columns("I:L"), .Columns("V:AL"), .Columns("CQ:CT")).EntireColumn.Hidden = False
Alors là ! Super, le code fonctionne nickel et tu m'as appris a utiliser Case super ! (et à créer une liste déroulante via VBA cool :) ). J'ai changé les DUxx par les vrais noms, idem dans la liste et j'ai rajouté le cas " " = tous les onglets affichés ainsi qu'un autre cas.
Merci beaucoup ! Je passe le post en résolu :)