masquer ligne en focntion valeur d'une cellule résultat d'une somme

murielbruno

XLDnaute Nouveau
Bonjour, je souhaiterai en fonction de la valeur de la cellule t70 (dont le résultat est une somme en fonction de zones cochés sur les ligne 60 à 69) masquer ou affiches les lignes en jaunes
t70 est par défaut à 0
si t70 = 0
les lignes 74 à 77 sont affichés et les lignes 79 à 82 sont masqués
et si t70 = 1
les lignes 74 à 77 sont masqués et les lignes 79 à 82 sont affichés

la feuille sera protégée par un mot de passe

merci par avance pour votre aide
 

Pièces jointes

  • test.zip
    21.5 KB · Affichages: 37
  • test.zip
    21.5 KB · Affichages: 35
  • test.zip
    21.5 KB · Affichages: 41

pat01200

XLDnaute Occasionnel
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Bonjour,

Essaie ce code:

ActiveSheet.Unprotect Password:="Mon code"

If Range("T70").Value = "0" Then
Rows("74:77").Select
Selection.EntireRow.Hidden = False
Rows("79:82").Select
Selection.EntireRow.Hidden = True
End If
ActiveSheet.Protect Password:="Mon code"
Exit Sub

If Range("T70").Value = "1" Then
Rows("74:77").Select
Selection.EntireRow.Hidden = True
Rows("79:82").Select
Selection.EntireRow.Hidden = True
End If
ActiveSheet.Protect Password:="Mon code"
Exit Sub
 

pat01200

XLDnaute Occasionnel
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Oups ! Il faut bien évidemment :

If Range("T70").Value = "1" Then
Rows("74:77").Select
Selection.EntireRow.Hidden = True
Rows("79:82").Select
Selection.EntireRow.Hidden = False
End If
ActiveSheet.Protect Password:="Mon code"
Exit Sub
 

Efgé

XLDnaute Barbatruc
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Bonjour murielbruno, pat01200,
Le projet est vérouillé avec mot de passe :rolleyes:.
Une proposition sans Select :
Code:
[COLOR=blue]Sub[/COLOR] Masque()
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Feuil1")
    .Unprotect Password:="Mot_de_passe"
    .Rows.Hidden = [COLOR=blue]False[/COLOR]
    .Rows("79:82").Hidden = .Range("T70") = "0"
    .Rows("74:77").Hidden = .Range("T70") = "1"
    .Protect Password:="Mot_de_passe"
[COLOR=blue]End With[/COLOR]
Application.ScreenUpdating = [COLOR=blue]True[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

murielbruno

XLDnaute Nouveau
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Voici le fichier sans le code de protection.
Où dois je coller la formule ?

merci par avance
 

Pièces jointes

  • test.zip
    21.6 KB · Affichages: 39
  • test.zip
    21.6 KB · Affichages: 44
  • test.zip
    21.6 KB · Affichages: 41

pat01200

XLDnaute Occasionnel
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Ce n'est pas une formule, mais le code d'une macro qu''il faut insérer dans un module (Onglet "Outils", puis "Macro", "Visual Basic editor". Là tu vas à "Insertion" puis "Module" et tu copies le code)
 

GuillaumA

XLDnaute Occasionnel
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

A placer sur la feuille ou tu veux voir tes lignes se masquer


Code:
Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Target, Range("T70")) Is Nothing Then
With Sheets("[COLOR="Red"]Feuil1[/COLOR]") [COLOR="Green"]'Le nom de la feuille ou se trouve T70[/COLOR]
    .Rows.Hidden = False
    Select Case Range("T70")
        Case "0"
            Var = "1"
        Case "1"
            Var = "0"
    End Select
For i = 74 To .Cells(Rows.Count, 20).End(xlUp).Row  [COLOR="Green"]'Pour info: Cela commence à la ligne 74 et scan à partir de la la colonne 20 c'est à dire la colonne T [/COLOR]
    .Rows(i).Hidden = (.Cells(i, 20) = Var )
Next i
End With
End If
End Sub

Cordialement,
Guillaume A.

Edit: j'avais oublié une parenthèse a la fin
 
Dernière édition:

murielbruno

XLDnaute Nouveau
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

cela ne marche pas. En fait, la macro doit se déclencher si la valeur de la cellule t70 à 0 (par défaut lorsque le fichier s'ouvre) devient 1. Cette cellule est une somme de deux autres cellules q70 et r70 qui se modifie si au moins une case est cochée sur les lignes 60 à 69

si la cellule t70 devient 1
alors je masque les lignes 74 à 77
et j'affiche les lignes 79 à 82
si la cellule t70 redevient 0 (car sont décochés toutes les cases à cocher ligne 60 à 69)
alors j'affiche les lignes 74 à 77
et je masque les lignes 79 à 82

Pour précisions lorsque le fichier s'ouvrira les lignes 79 à 82 seront masqués (ce n'est pas le cas dans le fichier que je vosu ai envoyé afin de bien visualiser les lignes concernés)

excusez moi je n'ai pas été assez précises dans ma 1ère demande
 

Pièces jointes

  • test.zip
    21.6 KB · Affichages: 30
  • test.zip
    21.6 KB · Affichages: 34
  • test.zip
    21.6 KB · Affichages: 30

GuillaumA

XLDnaute Occasionnel
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Je t'ai répondu juste au dessus de ton précédent post muriel, mais tu as envoyé ton explication juste après ma publication.

Ceci est un remind histoire que tu zappes pas mon post =)
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Re murielbruno, pat01200, Bonsoir GuillaumA,
Le vrai problème, à l'heure actuelle, est la possible protection de la feuille...
Une proposition quand même(Click droit sur l'onglet / visualiser le code):
Code:
[COLOR=blue]Private Sub[/COLOR] Worksheet_Calculate()[COLOR=green] 'La macro se déclenche à chaque fois que la formule est calculée par Excel[/COLOR]
[COLOR=green]'On bloque les evennements sur la feuille pour éviter une boucle sans fin[/COLOR]
Application.EnableEvents = [COLOR=blue]False[/COLOR]
[COLOR=green]'On bloque l'affichage de l'écran[/COLOR]
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=green]'On affiche toute les lignes[/COLOR]
Rows.Hidden = [COLOR=blue]False[/COLOR]
[COLOR=green]'On masque les lignes de 79 à 82 si la cellule T70 = 0[/COLOR]
Rows("79:82").Hidden = Range("T70") = "0"
[COLOR=green]'On masque les lignes de 74 à 77 si la cellule T70 = 1[/COLOR]
Rows("74:77").Hidden = Range("T70") = "1"
[COLOR=green]'On Réactive l'affichage de l'écran[/COLOR]
Application.ScreenUpdating = [COLOR=blue]True[/COLOR]
[COLOR=green]'On Réactive les evennements sur la feuille[/COLOR]
Application.EnableEvents = [COLOR=blue]True[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Pièces jointes

  • test(2).zip
    36.9 KB · Affichages: 85
  • test(2).zip
    36.9 KB · Affichages: 87
  • test(2).zip
    36.9 KB · Affichages: 82

murielbruno

XLDnaute Nouveau
Re : masquer ligne en focntion valeur d'une cellule résultat d'une somme

Merci à vous tous cela fonctionne avec le fichier test(2) envoyé par Efgé c'est top. Je suis débutante en vba et je m'aperçois que cela a bien masqué les lignes mais les coses à cocher qui sont sur les lignes qui se masquent restent apparentes y a t'il un moyen pour qu'elles aussi se masquent ?

cordialement

murielbruno
 

Discussions similaires

Statistiques des forums

Discussions
312 694
Messages
2 091 042
Membres
104 741
dernier inscrit
amalhamid