Masquer réafficher lignes différentes avec liste déroulante
Bonjour,
Je suis débutante en VBA mais je dois créer des formulaires pour mon boulot et à chaque fois les collègues copains me demandent si lorsque je crée des formulaires je peux en fonction des choix masquer et réafficher des lignes. J'ai regardé les posts mais j'ai essayé de bidouiller pleins de macros proposées (je crois à peu près comprendre comment les codes marchent) pour que cela fonctionne mais apparemment je n'y arrive vraiment pas.
J'ai plusieurs onglets dans le fichier excel
Dans l'onglet ARP 3-4 approbation, j'ai mis une liste déroulante en D7. Il y a 2 choix possibles :
PROCEDE (PROCESS) ou PROCEDE SOUS-TRAITE (SUBSUPPLIED PROCESS). En fonction du choix sélectionné les cartouches de signature doivent apparaître ou disparaêtre
Dans le cas PROCEDE (PROCESS) les lignes 29 à 54 doivent s'afficher mais pas les lignes 55 à 62 puis inversement
Dans le cas PROCEDE SOUS-TRAITE (SUBSUPPLIED PROCESS) les lignes 55 et 62 doivent s'afficher mais pas les lignes 29 à 53 puis inversement
Tout coup de main serait plus que bienvenue je galère
Voici ce que j'ai bidouillé mais je suis vraiment débutante
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$7" Then
Application.ScreenUpdating = False
If Range("$D$7").Value = "PROCEDE (PROCESS) " Then
Rows("55:62").Select
Selection.EntireRow.Hidden = True
ElseIf Range("$D$7").Value = "PROCEDE SOUS-TRAITE (SUBSUPPLIED PROCESS)" Then
Rows("55:62").Select
Selection.EntireRow.Hidden = False
Rows("29:53").Select
Selection.EntireRow.Hidden = True
End If
End If
End Sub
D'avance merci!
Bonjour,
Dans le module de la feuille "ARP 3-4 approbation", remplaces la procédure évènementielle "Worksheet_SelectionChange()" par la procédure "Worksheet_Change()" ci-dessous :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$7" Then Exit Sub
Application.ScreenUpdating = False
Rows("55:62").EntireRow.Hidden = Target.Value = "PROCEDE (PROCESS) "
Rows("29:53").EntireRow.Hidden = Target.Value = "PROCEDE SOUS-TRAITE (SUBSUPPLIED PROCESS)"
Application.ScreenUpdating = True
End Sub
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ma
If Target.Address = "$D$7" Then
ma = Array(False, True)
ElseIf Range("$D$7").Value = "PROCEDE SOUS-TRAITE (SUBSUPPLIED PROCESS)" Then
ma = Array(True, False)
Else
ma = Array(False, False)
End If
Application.ScreenUpdating = False
Me.Rows("29:53").Hidden = ma(0)
Me.Rows("55:62").Hidden = ma(1)
End Sub
NB- Pense à utiliser les balises Code pour citer du code dans ton post...
On évite de sélectionner lorsque c'est inutile (et c'est toujours inutile pour toute opération ne visant pas à redéfinir l'image-écran pour l'utilisateur...)
Indenter son code permet de le lire plus vite...
[Pas regardé ton fichier]
Cordialement.
MERCI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vous m'avez ôté une belle épine du pied, j'ai essayé les 2 options
Bon week end