Masquer/Afficher

Résolu
cedrico9797 Messages postés 10 Statut Membre -  
 lionel -
Bonjour, je ne sais pas si mon sujet sera au bon endroit mais voici ma demande et merci a celui qui pourra m'aider :) :

je souhaite réaliser un fichier excel de quantitatif de materiel comme le modele en PJ.

et je voudrais masquer chaque ligne ou la colonne quantité est a 0, a l'aide d’un bouton Masquer/Afficher

merci pour votre aide! salutations

6 réponses

ccm81 Messages postés 11033 Statut Membre 2 433
 
Bonjour

plutôt qu'une image, envoies un bout de fichier anonymisé avec
https://mon-partage.fr/

Cdlmnt
0
lionel
 
Bonjour cedrico,

J'ai vu que ta colonne G est celle des quantités "Qté" ; tu veux donc
masquer les lignes de ta colonne G pour lesquelles Qté = 0.

Il semble que ton texte "Qté" est en G13 ; si oui, ta 1ère ligne de
données est en G14 ; donc mon code VBA ci-dessous utilise 14
en ligne #7 et en ligne #8 ; à toi d'adapter si besoin : tu pourrais
vouloir commencer à partir de la ligne 16.

Le code vérifie la colonne G, de la ligne 14 à la dernière ligne ;
si la couleur de remplissage de ta cellule (= le fond) est en
vert clair (index de couleur : n° 35), alors :
ne rien faire si cette cellule est vide ; s'il y a 0, la masquer.

NB : si jamais tu saisis du texte sur fond vert clair en colonne G,
ces lignes resteront visibles ; si ta couleur de fond est une autre
que la mienne, tu dois bien sûr adapter le n° d'index couleur.


Option Explicit

Sub Essai()
  Dim dlig As Long, lig As Long
  dlig = Range("G" & Rows.Count).End(xlUp).Row
  Application.ScreenUpdating = False: Rows("14:" & dlig).Hidden = 0
  For lig = 14 To dlig
    With Cells(lig, 7)
      If .Interior.ColorIndex = 35 Then
        If Not IsEmpty(.Value) And .Value = 0 Then Rows(lig).Hidden = -1
      End If
    End With
  Next lig
End Sub


Merci de me dire si ça te convient, et si ton problème est réglé,
n'oublie pas de passer le sujet en résolu.  ;)
 
0
cedrico9797 Messages postés 10 Statut Membre
 
salut Lionel, merci bcp pour ton code!
ça correspond très bien a ce que je veux faire!

en revanche, j'aimerai pouvoir tout faire ré-apparaître au 2eme clic de mon bouton associé a la macro. tu as une idée? merci bcp!
0
lionel
 
 
Bonjour cedrico,

La proposition de ccm81 utilise un 2ème bouton ; j'ai préféré faire ta
nouvelle demande avec ton même bouton « Afficher/Masquer » ;
de plus, j'ai ajouté une petite correction pour ta 1ère ligne de départ.

Dans mon 1er code VBA, avant de masquer des lignes, j'ai commencé
par toutes les afficher avec la 2ème instruction de la ligne #7 :

Rows("14:" & dlig).Hidden = 0

Donc si on s'arrête aussitôt après, ça fait ce que tu demandes :
afficher toutes les lignes ; reste à le rendre conditionnel.

-------------------------------------------------------

Pour faire cela, j'ai besoin d'une cellule de ta feuille qui conservera l'état
masqué ou non des lignes adéquates : 0 = visible ; 1 = masqué ; c'est un
choix purement arbitraire, et j'aurais pu inverser ces valeurs.

⚠  Au début, le nombre doit obligatoirement correspondre avec la réalité :
1 si des lignes sont masquées ; 0 si toutes les lignes sont affichées ;
ensuite, la macro inversera systématiquement cette valeur.

-------------------------------------------------------

Où mettre cette valeur ? J'ai vu que tu as 2 nombres en J94 et J95 ; j'ai donc choisi
une cellule de la même colonne, en J2 ; si tu préfères utiliser une autre cellule,
ce sera à toi d'adapter la ligne #8 du code VBA ci-dessous :


Option Explicit

Sub Essai()
  Dim dlig As Long, lig As Long
  dlig = Range("G" & Rows.Count).End(xlUp).Row
  Application.ScreenUpdating = False: Rows("15:" & dlig).Hidden = 0
  [J2] = 1 - [J2]: If [J2] = 0 Then Exit Sub
  For lig = 15 To dlig
    With Cells(lig, 7)
      If .Interior.ColorIndex = 35 Then
        If Not IsEmpty(.Value) And .Value = 0 Then Rows(lig).Hidden = -1
      End If
    End With
  Next lig
End Sub


Seule différence avec mon code VBA précédent : ajout de la ligne #8 ;
fais un clic droit sur ton bouton « Afficher/Masquer » et choisis l'item :
« Affecter une macro... » (pour lier ma macro Essai à ton bouton).

-------------------------------------------------------

Si tu veux que la valeur de J2 n'apparaisse pas, mets lui une couleur de
texte identique à celle du fond ; autre solution : utilise H2 à la place de J2
car ainsi, ta cellule sera cachée sous ton bouton « Masquer/Afficher » ;
si tu fais comme ça, n'oublie pas de changer ainsi la ligne #8 :

  [H2] = 1 - [H2]: If [H2] = 0 Then Exit Sub

⚠  il faut faire 3 changements !

-------------------------------------------------------

Comme ta ligne d'en-têtes qui contient "Qté" est en ligne 14, la 1ère ligne
peut être celle qui suit => la ligne n° 15 et plus la n° 14 ; 2 changements
déjà faits, en lignes #7 et #9 du code VBA.

Merci de me dire si ça te convient, et si ton problème est réglé,
n'oublie pas de passer le sujet en résolu.  ;)


PS :  Je préfère ne pas te retourner ton fichier joint, car à son ouverture, j'ai eu
le message d'erreur "contenu illisible" ; je l'ai quand même ouvert (et j'en ai vu
le contenu), mais un message a indiqué : "certaines parties sont perdues".
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cedrico9797 Messages postés 10 Statut Membre
 
Voici mon fichier, merci d'avance!

https://mon-partage.fr/f/FcIvCKdY/
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
Bonjour à tous les deux

J'ai complété la proposition de lionel, avec un deuxième bouton pour afficher tout
http://www.cjoint.com/c/GFBmpQ4UMXB

Cdlmnt
0
cedrico9797 Messages postés 10 Statut Membre
 
Génial, merci bcp! c'est ok pour moi, bonne soirée a tous
0
lionel > cedrico9797 Messages postés 10 Statut Membre
 
La solution de ccm81 avec 2 boutons marche très bien ; si tu préfères une solution
avec un seul bouton, tu peux lire mon message du 27 juin à 15:54 ; il y a en plus
une petite correction pour la ligne de départ : à partir de la ligne n° 15 ; c'est aussi
ma réponse à tes 2 messages de 09:31 et 09:55.
0