Macro pour masquer des lignes
Je suis en train de monter un classeur Excel, mais je me heurte à une difficulté.
J'ai posté un précédent post, mais je pense qu'il a été mal compris, ou que j'en demandait beaucoup trop…
J'ai donc eu une nouvelle idée, mais même si elle m'a l'air plus accessible, mon niveau en macro est beaucoup trop limité pour que j'y parvienne seul.
Pour être plus concret :
J'ai un classeur comprenant 2 feuilles :
-> 1ere feuille : comprend une liste de sélection
-> 2ème feuille : comprend cette même liste avec toutes les informations
J'aimerai pouvoir y incorporer une macro qui masquerai les lignes sur la 2ème feuille grâce à la valeur "Faux" qui s'affiche lorsque la case correspondante sur la 1er feuille est décochée.
Pour ça j'ai créer un bouton "actualisation" avec la macro suivante :
(J'ai mis un bouton car je pense que la macro ne peut pas s'activer toute seule lorsque l'on coche ou décoche les cases, mais je ne sais pas)
Sub MasquerLigne()
DebutLgn = 1
FinLgn = 14
Valeur = 2
For NbLgn = DebutLgn To FinLgn
If Cells(NbLgn, Valeur).Value < 14 Then
Cells(NbLgn, Valeur).EntireRow.Hidden = True
End If
Next NbLgn
End SubSauf que je n'arrive pas à adapter cette macro à ma situation.
(Petit plus que j'aimerai aussi, c'est que le premier bouton "TOUS" permet de tous sélectionner ou désélectionner, si c'est possible)
Voici l'exemple de ce que j'aimerai accomplir :
Je vous remercie d'avance pour le temps que vous êtes entrain de m'accorder !
Et bonne année à vous tous !
Bonjour,
Je ne comprends pas très bien ton code, en effet tu utilises des variables qui en fait sont des constantes :
DebutLgn = 1
FinLgn = 14
Valeur = 2
donc ta boucle se résume à :
For NbLgn = 1 To 14
If Cells(NbLgn, 2).Value < 14 Then
Cells(NbLgn, 2).EntireRow.Hidden = True
End If
Next NbLgn
De plus tu testes le contenu des cellules de la deuxième colonne par rapport à la valeur 14, or je ne vois aucune valeur dans la colonne 2, ou alors je n'ai vraiment pas compris ton objectif
Cordialement
JackyBonjour Jacky,
La macro que j'ai mis dans ma description est celle que j'ai trouvé sur internet en cherchant justement "macro pour masquer des lignes", mais n'y connaissant quasiment rien en code je n'y ai pas touché.
C'est aussi pour cela que j'ai mis un exemple de ce que je souhaite faire visuellement sur le fichier Excel de mon post
Cordialement,
Fyou
Re bonjour,
Non malheureusement la macro ne fonctionne pas.
Pour faciliter l'opération j'ai réussi à transférer sur la bonne feuille intitulée "classeur" la valeur "vrai" "(si la fiche est cochée) et la valeur "faux" (si la fiche n'est pas cochée). J'ai mis cette valeur sur la colonne B.
J'aimerai donc pouvoir cacher les lignes lorsque la valeur est "FAUX".
Pour ça j'ai utilisé la macro suivante :
Sub Masque()
Dim i%
Application.ScreenUpdating = False 'Rafraichissement écran (pour ne pas voir défiler les lignes)?
If ActiveWorkbook.ActiveSheet.Shapes("Actualisation").TextFrame.Characters.Text = "Actualisation" Then 'Si le texte du bouton est Actualisation
For i = 300 To 3 Step -1 'boucle depuis le bas est masque les lignes dont la valeur en colonne B est = à "FAUX"
If Cells(i, 2).Value = "FAUX" Then
Rows(i).Hidden = True
Else
Rows(i).Hidden = False
End If
Next i
End If
End SubMais elle ne fonctionne pas j'ai un bug sur la ligne If ActiveWorkbook.ActiveSheet.Shapes("Actualisation").TextFrame.Characters.Text = "Actualisation" Then, l'erreur me dis que le nom n'existe pas.
D'ailleurs je ne pense pas que cette macro soit bien sur ma deuxième feuille mais la première, je ne sais pas comment lui ordonner de s'activer sur la deuxième.
J'espère avoir été assez clair
Voici le fichier refait avec la nouvelle macro :
Merci pour votre soutien !