masquer et afficher automatiquement

Joe_cooker

XLDnaute Nouveau
Bonjour a tous et bonne année
Tout d’abord j’aimerai remercier tt les membres de ce forum pour leurs contributions à mon savoir ((sur Excel)). Ca ne fait pas longtemps que je consulte ce forum et je trouve intéressant et généreux leur membre. Bref, merci à tt grâce a vous j’ai appris plein chose.
Mon problème concerne le masquage et l’affichage automatique des lignes selon certaines conditions :
Dans le fichier ci-joint, dans un 1er temps, à la feuille « AAA » j’aimerai que lorsque je choisi l’année et je coche pour valider (= vrai) le tableau correspondant dans la feuille « Gabarit » soit afficher alors que lorsque je décoche a la feuille « AAA » (=faux) le tableau correspondant a la feuille « Gabarit » soit masquer. Pour votre information : la 1ère année correspond au tableau 4 et la 2eme année correspond au tableau 3, la 3eme année correspond au tableau 2 et finalement la 4eme année correspond au 1er tableau. De plus, dans la vraie structure de mon fichier ces tableaux ne sont pas nommer par 1, 2 3 et 4. et les cellules sont tt avec formules refereant a d'autres feuille.
Pour résoudre ce problème j'ai essaye d’adapter le code de M. babouze64 XLDnaute
Mais il ne fonctionne pas je ne sais pas pourquoi sachant que ne suis pas très connaisseur des codes VBA et ce code fonctionne correctement dans le fichier envoyer par babouze64 et repond parfaitement a mes attentes. si qlq un peux me dire comme le faire fonctionner je le remercie d'avance.
Le code se trouve dans le module 1 de mon fichier.
De plus, dans la feuille Gabarit et la feuille paiement, j’utilise un code pour afficher et masquer des lignes a l’aide de bouton bascule si certains cellules=0.
J’aimerai si quelqu'un peut m’aider pour que cette opération soit automatique sans bouton bascule. C'est-à-dire que a chaque fois que ces cellules = 0 elles seront cacher si il y a une valeur différente de 0 elles s’affichent.
SVP. Si qlq un peu m’aider je le remercie d’avance et SVP s’il y a des explications je serai reconnaissant. Mon but est aussi d’apprendre pour que je puisse les adapter par la suite pour d’autres applications. j'aimerai aussi savoir est ce que les deux code peuvent cohabiter ensemble, cad meme si j'affiche les tableau par case a cocher et par la suite je masque tt cellule contient une valeur 0.
dans l'attente de votre aide MERCI.
 

Pièces jointes

  • Gabarita.zip
    32.4 KB · Affichages: 74

Joe_cooker

XLDnaute Nouveau
Re : masquer et afficher automatiquement

oh je vous envois aussi le fichier de M. h_babouze64 qui fonctionne correctement et j'aimer que mon fichier fonctionne de la meme facon sur case a cocher avec explications je serai reconnaissant.
Merci
 

Pièces jointes

  • h_babouze64.zip
    20.2 KB · Affichages: 98

PMO2

XLDnaute Accro
Re : masquer et afficher automatiquement

Bonjour,

Je ne me suis occupé que de la 1ère partie de votre demande (masquage et affichage automatique des lignes selon CheckBox)
Téléchargez la pièce jointe pour faire des essais.

MARCHE A SUIVRE

1) Dans la feuille AAA indiquez, en colonne "L", les noms des tableaux de la feuille Gabarit ; ils serviront de calage pour identifier les plages.
2) Dans la fenêtre de code de la feuille AAA, copiez le code suivant

Code:
Private Sub Worksheet_Activate()
Dim CB As Excel.CheckBox
For Each CB In ActiveSheet.CheckBoxes
  CB.OnAction = "CacherAfficherLignes_pmo"
  CB.LinkedCell = ""
Next CB
End Sub

Sélectionnez une autre feuille puis revenez sur la feuille AAA pour initialiser les CheckBoxes

3) Copiez le code suivant dans un module standard (adaptez éventuellement les constantes cernées par des ###)

Code:
'### Constantes à adapter ###
Const FEUILLE_SOURCE As String = "AAA"
Const FEUILLE_CIBLE As String = "Gabarit"
'############################

Sub CacherAfficherLignes_pmo(Optional dummy As Byte)
Dim CB As Excel.CheckBox
Dim C As Range
Dim R As Range
On Error GoTo Erreur
Set CB = Sheets(FEUILLE_SOURCE).Shapes(Application.Caller).DrawingObject
Set C = CB.TopLeftCell.Offset(0, -3)
Set R = Sheets(FEUILLE_CIBLE).[e1:e65536].Find(what:=C)
If R Is Nothing Then
  MsgBox "La chaîne ''" & C & "'' n'a pu être trouvée dans la feuille ''" & FEUILLE_CIBLE & "''."
  Exit Sub
End If
Set R = R.Offset(1, 6)
Do While Not IsEmpty(R)
  If CB = 1 Then
    R.EntireRow.Hidden = False
  Else
    R.EntireRow.Hidden = True
  End If
  Set R = R.Offset(1, 0)
Loop
Exit Sub
Erreur:
MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description
End Sub


J'ai volontairement occulté les autres macros.
Faites vos adaptations et renvoyez, sur ces bases, une nouvelle pièce jointe pour la suite (avec explications s.v.p.).

Cordialement.

PMO
Patrick Morange
 

Joe_cooker

XLDnaute Nouveau
Re : masquer et afficher automatiquement

Merci PMO,
je vais essayer votre code et je reviens la dessus.
Merci pour le temps que vous avez accorder.
je vais tester le code et je vais communiquer a nouveau pour le reste de mon probleme j attend toujour l aide.<
A tt.
 

Joe_cooker

XLDnaute Nouveau
Re : masquer et afficher automatiquement

Un gros merci Patrick Morange

J'ai essayé votre code ca fonctionne correctement saut que dans mon cas quelque petit problème persiste à savoir:

mes case a cocher doivent renvoyer une valeur Vrai ou faux à des cellules liées ex: a la colonne S.

Ces deux valeur me permettent de faire des calcules dans ma feuille Gabarit plus précisément
si la case est cochée (=VRAI) alors des calcules se font dans le tableau correspondant a la colonne K
de la feuille Gabarit sinon (si décochée = FAUX) à la colonne du tableau correspondant
les formules renvoi la valeur 0

le problème est que lorsque j'applique une cellule liée à chaque case, la case ne renvoi pas de valeur a la cellule liée

et donc mes formules ne vont pas fonctionnées.

je pense parce que la case est utilisée dans le code est donc ne peut pas être liée a une cellule.

si vous avez une solution je vous remercie d'avance

J'ai pensé a une piste de solution qui peut résoudre tt mon problème avec un seul code qui cacher des lignes si une cellule
dans 1 colonne contient une valeur 0
je pense designer une seule colonne ex: R et a l'aide d'une formule avec condition (SI) qui renvoi soit une valeur 0
si ma colonne K contient la valeur 0 sinon il revoie
soit la valeur de la colonne K ou tt simplement la valeur 1 par exemple.
Pour les en tète je m’en occupe dans ma formule.

le problème est que mon code est un macro qui s'active avec bouton bascule et moi je veux que ca soit automatique
sans bouton.
Le code est le suivant:

'Option Explicit
'
'Dim ligne As Integer
'Sub Masque()
For ligne = 6 To 120
If Range("R" & ligne) = 0 Then Rows(ligne).EntireRow.Hidden = True
' Next ligne
'End Sub
'
'Sub Affiche()
'Rows.EntireRow.Hidden = False
'End Sub
'
'Private Sub ToggleButton1_Click()
'Application.ScreenUpdating = False
'If ToggleButton1.Value = True Then Call Masque
'If ToggleButton1.Value = False Then Call Affiche
'End Sub
'


Si vous pouvez m'aider a resoudre le probleme de cette facon je serai tres reconnaissant
(SVP si vous pouvez avec explication pour comprendre car j'aimerai l'adapter a d'autre feuille )

qui me cause le meme probleme.

MERCI a vous et pour votre aide
 

Joe_cooker

XLDnaute Nouveau
Re : masquer et afficher automatiquement

Un gros merci Patrick Morange
pour vous tenir au courant de l'évolution de mon probleme j'ai reussi a resoudre le probleme en suivant la piste que j'ai proposé c'est a dire avec le code suivant je masque et affiche selon la valeur 0:

'Option Explicit
'
'Dim ligne As Integer
'Sub Masque()
For ligne = 6 To 120
If Range("R" & ligne) = 0 Then Rows(ligne).EntireRow.Hidden = True
' Next ligne
'End Sub
'
'Sub Affiche()
'Rows.EntireRow.Hidden = False
'End Sub

Avec ce code j'appel le macro masquer a l'ouverture de la feuille et je masque a la fermeture :

Private Sub Worksheet_Activate() ' En activant la feuille.

Masque

End Sub
Private Sub Worksheet_Deactivate() ' En quittant la feuille.

Affiche

End Sub


votre code Patrick foctionne bien donc je vais l'appliquer dans d'autre situation.
Merci encore une fois Patrick Morange
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 023
Membres
101 873
dernier inscrit
excellllll