Macro VBA Affichage et masquage
Bonjour,
Je créé un document pour plusieurs personnes.
Le but est de faire une liste des équipements et de les classer par genre. Cette liste servirait de source pour des tableaux projet présenté de la même manière.
La liste commence à être trop longue et j'aimerais pouvoir n'afficher que le genre que je cherche par un jeux de masquage et d'affichage des lignes.
Pour ca, je souhaite crééer un bouton pour chaque genre. Il afficherait les équipements du genre recherché.
J'ai fonctionné avec les listes déroulantes au début mais cela pose soucis à plusieurs personnes.
J'ai créé des colonnes ou J'ai mis des X pour dire que cet équipement appartient à au genre de la colonne.
Je souhaiterais savoir s'il est possible de faire une macro exemple pour m'en servir et l'adapter à chaque genre (et biensur la lier as un bouton).
J'espère avoir tout bien expliqué.
N'hésitr pas à me poser des question pour plus de renseignements.
J'ai mis un exemple de ce tableau en pièce jointes.
A+
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour,
Tu as du mouron à te faire !
Il faudrait structurer ton fichier en base de données,
déjà sur le peu que j'ai vu sur la 1ère feuille "MET FRA",
tes 43 colonnes de BC à CT ne pourrait en faire qu'une avec une liste déroulante,
le reste étant à l'avenant, je referme vite ce fichier !!
ceci n'est qu'un avis
Amicalement
Claude
Salut Claude,
Sauf que ce fichier est basé sur des éléments de présentation et d'avancement de projet très précis.
Je ne peux pas les changer.
Est ce que tu connaitrait juste comment on affiche et on masque les lignes en fonction des d'onnées d'une colonne?
Bonne journée
Bonjour Jimmy,
partant de ton idée des colonnes avec les X, voici un petit code pour masquer/afficher des lignes à placer dans un module
'Procedure Pour les boutons
Public Sub btnHygiene()
Call AfficherSelonCondition("Hygiène")
End Sub
Public Sub btnToutAfficher()
Call AfficherSelonCondition("Tous")
End Sub
'Procedure d'affichage/Masquage des lignes
Public Sub AfficherSelonCondition(Secteur As String)
Application.ScreenUpdating = False
'Les lignes de début et de fin de la zone à traiter
Dim LigneDebut As Integer
Dim LigneFin As Integer
LigneDebut = 13
LigneFin = 190
'Si le secteur égale tous, afficher toutes les lignes
If Secteur = "Tous" Then
For i = LigneDebut To LigneFin
Sheets("MET FRA").Cells(i, 1).EntireRow.Hidden = False
Next i
Exit Sub
End If
'Détermine la colonne où lire les X
Dim ColMarque As Integer
'La cellule correspondante au nom du secteur
Dim CelluleMarque As Range
With Sheets("MET FRA")
'Recherche le nom du secteur dans la zone BC5 à CQ12, à modifier suivant les modifications
Set CelluleMarque = .Range("BC5:CQ12").Find(What:=Secteur, SearchOrder:=xlByRows)
'Si la recherche à trouver une cellule
If Not CelluleMarque Is Nothing Then
'La colonne de la cellule trouvé sera celle de la recherche des X
ColMarque = CelluleMarque.Column
'Boucle sur les lignes du tableau
For i = LigneDebut To LigneFin
'Si un x, affiche la ligne
If .Cells(i, ColMarque) = "X" Then
.Cells(i, ColMarque).EntireRow.Hidden = False
Else
'Sinon on la masque
.Cells(i, ColMarque).EntireRow.Hidden = True
End If
Next i
Else
'Si le secteur n'est pas trouvé
MsgBox ("Le secteur est inexistant")
End If
End With
Application.ScreenUpdating = True
End Subsi tu as des questions n'hésite pas
Bonne journée
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Autre solution "Filtre élaboré"
avec un minimum d'organisation (une Liste/Validation remplace 35 boutons !)
"C'est vous qui voyez !" comme dirait l'autre
Amicalement
Claude
Bonjour,
Claude,
J'ai essayé ta proposition et c'est vrai qu'elle me paraît pas mal du tout. Le seul soucis est que l'affichage ne se fait pas correctement et que je ne peux pas modifier la taille du texte dans la liste déroulante.
Est-ce que tu pourrais me dire comment modifier la liste déroulante? Je peux avoir des mises à jour ou des modifications à faire dans le le classement.
Math,
Si j’ai bien compris, il faut que j’insère le code dans le document et que je paramètre les boutons. Je ne suis pas un grand expert en macro. Si tu peux me donner des procédures ou autres, je suis preneur.
Merci pour votre aide. C’est super.
A bientôt,
Jimmy
tu n'as qu'à faire une procedure pour chaque bouton, suivant ce modèle
Public Sub NomDuBouton()
Call AfficherSelonCondition("NomDeLaColonne")
End Suboù NomDuBouton représente le nom du bouton ( c'est juste pour plus de lisibilité ) et NomDeLaColonne est le nom inscrit dans la colonne avec les X dont on veut afficher les lignes. Dans mon exemple,
Call AfficherSelonCondition("Hygiène")va afficher toutes les lignes qui ont un X dans la colonne avec le texte "Hygiène".
La procedure AfficherSelonCondition reste la même.
Bonjour Claude,
J'ai inséré des nouveaux équipements et l'affichage est complètement désorganisé.
Je me retrouve avec des fours dans le classement des chariots.
J'ai bien mis les x aux bons endroits.
Est ce que tu as une solution?
Jimmy
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir Jimmy, forum,
La solution était sur mon 1er message !
Tu vire tout les boutons, toutes les colonnes avec croix,
tu remplace tout çà par une colonne "rubrique" et :
sur chaque ligne de cette colonne tu écrit la rubrique (Chariot ; four etc…)
le filtre se fera sur cette colonne qui pourra être masquée.
Tu peux ajouter une 2ème colonne (sous/rubrique)
sur le même principe, ce qui facilite les recherches et limite les longueurs de listes.
Ton fichier aura une autre allure !
Amicalement
Claude.