Code VBA pour cacher des lignes

Bonsoir,

Dans le fichier ci-joint, j'aurais voulu faire dépendre l'ouverture ou la fermeture de certaines lignes de la valeur de la cellule R1 de la feuille "Impression".

Malheureusement (parce que cette cellule contient une formule et qu'il n'y a ainsi pas de changement de valeur ???) le code placé dans cette feuille et reproduit ci-dessous ne fonctionne pas.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("R1")) Is Nothing Then
        If Target.Value = 1 Then
            Rows("28:30").Hidden = True
            Else:
            If Target.Value = 2 Then
                Rows("28:30").Hidden = False
            End If
        End If
    End If 
End Sub

Auriez-vous une solution à me proposer ?

A vous relire.

Bonsoir

Je ne suis pas très doué en VBA.

Peut-être avec un SelectionChange

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If [R1] = 1 Then
            Rows("28:30").Hidden = True
            ElseIf [R1] = 2 Then
                Rows("28:30").Hidden = False
            End If
End Sub

Cordialement

Bonsoir à tous,

Pourquoi ne pas partir de la source ?

c'est à dire de la feuille "Rachat Express" en B9

modifie le code existant

    If Not Application.Intersect(Target, Range("B9")) Is Nothing Then
        Flag = True
        ActiveSheet.Unprotect
            If Target.Value > 0 Then
                Sheets("Impression").Rows("28:30").Hidden = False
                Else:
                    Sheets("Impression").Rows("28:30").Hidden = True
            End If   
***** suite du code actuel *****
    End If

Amicalement

Claude

Salut Amadéus,

Ton code, placé dans la feuille « Impression », ne fonctionne apparemment pas non plus. Est-ce que je l’ai mal utilisé ?

Salut Claude,

J’ai placé ton bout de code au milieu du mien, selon le fichier ci-joint. Ca fonctionne bien si je modifie la cellule B9 de la feuille «Rachat Express» par un chiffre quelconque (les lignes voulues de la feuille «Impression» sont visibles) ou par un 0 (les lignes sont cachées).

Par contre il est illogique de placer un 0 dans cette cellule ; si l’utilisateur désire ne plus utiliser cette partie de calcul, il va plutôt effacer conjointement les cellules B9 et B10. Dans ce cas-là, les lignes de la feuille «Impression» ne sont pas cachées.

As-tu une idée de ce que je peux essayer ?

Merci à tous deux pour vos réponses et bonnes salutations.

Bonjour,

Si tu efface B9, çà fonctionne également

ton Private Sub devait être désactivé avec Flag = True

---- pour réactiver ----

ajoute dans un module la macro "test" et lance cette macro

Option Explicit
Public Flag As Boolean

Sub test()
    Flag = False
End Sub

tu remarquera que le "Public Flag As Boolean" doit être dans un module

et non dans une feuille VBE

Bonne journée

Claude

Salut Claude,

Merci pour ta réponse.

Il me semble que j'ai bien suivi tes explications, mais ça ne fonctionne toujours pas comme désiré.

Peux-tu voir ce que j'ai fait de faux ?

Bonjour

Ton code, placé dans la feuille « Impression », ne fonctionne apparemment pas non plus. Est-ce que je l’ai mal utilisé ?

Un SelectionChange se déclenche lors de la sélection d'une cellule quelconque sur la Feuille.

J'ai testé et cela fonctionne.

Cordialement

Bonsoir,

Ton dernier fichier fonctionne chez moi,

zéro ou effacer en B9, masque bien les lignes 28 à 30 sur feuille "Impression"

peut-être supprimer dans le VBE de la Feuil7

Public Flag As Boolean

qui ferait double emploi avec le Module1

vérifie que les macros sont bien activées

Claude

Bonsoir,

Peut être avec ce code

Private Sub Worksheet_Activate()
Select Case Range("R1")
Case Is = 1: Rows("28:30").Hidden = True
Case Is = 2: Rows("28:30").Hidden = False
End Select
End Sub

Code à place dans la feuille Impression. Il fonctionne à l'activation de la feuille Impression.

Attention que dans ton fichier la feuille est protégée. Déprotège là avant d'exécuter le code. Le cas contraire tu auras un bug.

Amicalement

Salut Claude, Salut Dan,

Mes macros sont bien activées, mais rien n'y fait ! Le code de Claude ne fonctionne pas chez moi ; et ceci bien que j'ai essayé en plus de supprimer le deuxième "Public Flag As Boolean" dans le code de la Feuil7.

Par contre avec le code de Dan, je résouds mon problème et j'ai pu y inclure de plus une solution pour ma plage à imprimer (avec l'un de mes calculs, j'ai deux pages à imprimer, avec l'autre, seulement une)

Merci infiniment à vous deux et à tous les autres qui se sont penchés sur mon problème.

La solution finale est - une fois de plus - géniale.

Bonnes salutations.

Edit : Salut Amadéus, Je suis désolé, je n'avais pas vu ta réponse de 18:55 lors de ma réponse à Claude et à Dan

En fait je voulais que ma feuille "Impression" se modifie lors de la modification de la cellue B9 sur la feuille "Rachat Express". Est-ce de là que vient le problème ?? Merci à toi aussi pour ta collaboration.

Rechercher des sujets similaires à "code vba cacher lignes"