Liste déroulante et colonnes masquées
Résolu
lilas
-
lilas -
lilas -
Bonjour,
J'ai une liste déroulante (dans la cellule B16 de ma feuille "Structure") où 15 choix sont possibles.
Si on choisit le choix 1, certaines colonnes sont masquées.
Le problème est le suivant: dès que je clique sur choix 1 ou 2 ou ..., le code ne fonctionne pas je dois à chaque fois re exécuter la macro en question pour que les colonnes voulues soient masquées.
Voilà mon code:
Comment faire ?? Merci d'avance
J'ai une liste déroulante (dans la cellule B16 de ma feuille "Structure") où 15 choix sont possibles.
Si on choisit le choix 1, certaines colonnes sont masquées.
Le problème est le suivant: dès que je clique sur choix 1 ou 2 ou ..., le code ne fonctionne pas je dois à chaque fois re exécuter la macro en question pour que les colonnes voulues soient masquées.
Voilà mon code:
Sub nb_t() If Sheets("Structure").Range("B16") = "1" Then Sheets("Méthode Exposition").Columns("R:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("R:DI").Hidden = False End If End Sub Sub nb_t2() If Sheets("Structure").Range("B16") = "2" Then Sheets("Méthode Exposition").Columns("Y:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("Y:DI").Hidden = False End If End Sub Sub nb_t3() If Sheets("Structure").Range("B16") = "3" Then Sheets("Méthode Exposition").Columns("AF:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("AF:DI").Hidden = False End If End Sub Sub nb_t4() If Sheets("Structure").Range("B16") = "4" Then Sheets("Méthode Exposition").Columns("AM:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("AM:DI").Hidden = False End If End Sub Sub nb_t5() If Sheets("Structure").Range("B16") = "5" Then Sheets("Méthode Exposition").Columns("AT:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("AT:DI").Hidden = False End If End Sub Sub nb_t6() If Sheets("Structure").Range("B16") = "6" Then Sheets("Méthode Exposition").Columns("BA:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("BA:DI").Hidden = False End If End Sub Sub nb_t7() If Sheets("Structure").Range("B16") = "7" Then Sheets("Méthode Exposition").Columns("BH:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("BH:DI").Hidden = False End If End Sub Sub nb_t8() If Sheets("Structure").Range("B16") = "8" Then Sheets("Méthode Exposition").Columns("BO:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("BO:DI").Hidden = False End If End Sub Sub nb_t9() If Sheets("Structure").Range("B16") = "9" Then Sheets("Méthode Exposition").Columns("BV:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("BV:DI").Hidden = False End If End Sub Sub nb_t10() If Sheets("Structure").Range("B16") = "10" Then Sheets("Méthode Exposition").Columns("CC:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("CC:DI").Hidden = False End If End Sub Sub nb_t11() If Sheets("Structure").Range("B16") = "11" Then Sheets("Méthode Exposition").Columns("CJ:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("CJ:DI").Hidden = False End If End Sub Sub nb_t12() If Sheets("Structure").Range("B16") = "12" Then Sheets("Méthode Exposition").Columns("CQ:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("CQ:DI").Hidden = False End If End Sub Sub nb_t13() If Sheets("Structure").Range("B16") = "13" Then Sheets("Méthode Exposition").Columns("CX:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("CX:DI").Hidden = False End If End Sub Sub nb_t14() If Sheets("Structure").Range("B16") = "14" Then Sheets("Méthode Exposition").Columns("DE:DI").Hidden = True Else: Sheets("Méthode Exposition").Columns("DE:DI").Hidden = False End If End Sub Sub nb_t15() If Sheets("Structure").Range("B16") = "15" Then Sheets("Méthode Exposition").Columns("K:DI").Hidden = False Else: Sheets("Méthode Exposition").Columns("K:DI").Hidden = False End If End Sub
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICIMerci d'y penser dans tes prochains messages.Jordane45 |
Comment faire ?? Merci d'avance
A voir également:
- Liste déroulante et colonnes masquées
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Comment faire des colonnes sur word - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Liste code ascii - Guide
3 réponses
Bonjour Lilas, bonjour le forum,
Essaie avec la macro événementielle Change à placer dans l'onglet Structure :
C'est plus court mais normalement tout aussi efficace (si je ne me suis pas planté)...
Essaie avec la macro événementielle Change à placer dans l'onglet Structure :
Private Sub Worksheet_Change(ByVal Target As Range) Dim O As Worksheet Dim CD As Integer Dim CL As String Set O = Worksheets("Méthode Exposition") If Target.Address <> "$B$16" Then Exit Sub CD = IIf(Target.Value = "1", 18, 18 + (CInt(Target.Value) - 1) * 7) CL = Split(Columns(CD).Address(0, 0), ":")(0) O.Columns.Hidden = True O.Columns(CL & ":DI").Hidden = False If Target.Value = "15" Then O.Columns.Hidden = True O.Columns("K:DI").Hidden = False End If End Sub
C'est plus court mais normalement tout aussi efficace (si je ne me suis pas planté)...
Bonjour,
Dans ton fichier excel, tu peux déclencher l'appel à une macro en utilisant Private Sub Worksheet_Change(ByVal Target As Range)
NB: Code à placer dans l'objet Worsheet correspondant ....
Un truc du genre :
Dans ton fichier excel, tu peux déclencher l'appel à une macro en utilisant Private Sub Worksheet_Change(ByVal Target As Range)
NB: Code à placer dans l'objet Worsheet correspondant ....
Un truc du genre :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$16" Then ' de là .. tu peux appeller ton code pour afficher/masquer tes colonnes Dim sh_b16 As Worksheet Dim sh_expo As Worksheet Dim b16Val As Integer Dim colVisible As String 'Définit la taille du tableau Dim listCol(15) As String 'Alimente les éléments du tableau (dans l'ordre des valeurs de la liste déroulante...) listCol(0) = "R:DI" listCol(1) = "Y:DI" listCol(2) = "AF:DI" listCol(3) = "AM:DI" 'etc... 'maintenant on affiche toutes les colonnes par défaut Set sh_expo = Worksheets("Méthode Exposition") For i = 0 To UBound(listCol) If listCol(i) <> "" Then sh_expo.Columns(col) = True End If Next 'On affiche les colonnes voulues en fonction du choix en b16 Set sh_b16 = Worksheets("Structure") sh_expo.Columns(sh_b16.Range("B16").Value - 1) = True End If End Sub