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 . çà fait plaisir une bonne chose de faites qui me soulage.

Bon week end

Rechercher des sujets similaires à "masquer reafficher lignes differentes liste deroulante"