[Excel]Masquer 3 lignes lorsqu'une case = 0 [Résolu/Fermé]

Signaler
-
 suricate55 -
Bonjour,

Voici mon problème:
Je suis en train de créer un fichier avec les rapport d'heures ainsi que du matériel et des machines utilisé sur un chantier. Je dois pouvoir sortir à la fin une facture totale de chantier. Justement, dans ma facture, j'ai une ligne par enrobé avec le nombre totale de tonne utilisé. J'aimerai que lorsque la quantité est égal à zéro (aucun enrobé de cette sorte n'a été utilisé), les 3 lignes se masquent. Mais si par la suite, on ajoute une quantité elle revienne.
Je ne sais pas si j'étais assez clair, mais j'avais pensé à integrer une macro dans une fonction SI mais je ne sais pas si c'est réalisable.

Merci beaucoup

8 réponses

Merci pour ta réponse

La structure est déjà toute faite et j'utilise un fichier par chantier. J'ai fait des recherche ce matin et j'ai fait une macro avec:
'Masque les lignes 31 à 33 si la case AE33 est égal à zéro
If Range("ae33") = "0" Then
    Rows("31:33").Select
    Selection.EntireRow.Hidden = True
    End If
    
'Affiche les lignes 31 à 33 si la case AE33 n'est pas égal à zéro
If Range("ae33") <> "0" Then
    Rows("30:34").Select
    Selection.EntireRow.Hidden = False
    End If


J'ai rajouté à la suite dans la même macro les mêmes lignes de code, en changeant les numéros de ligne et le "Range". ça a l'air de fonctionner, mais j'ai pas encore totalement fini. Par contre, j'aimerai que ma macro s'exécute à chaque fois que je visualise ma feuille "facture". Je ne sais pas si c'est possible de le faire.

Merci beaucoup
8
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 75999 internautes nous ont dit merci ce mois-ci

Je ne comprends pas quel est mon erreur. Pouvez-vous m'aider
ActiveSheet.Unprotect
If Range("E73:E75,M73:M75") <> "0" Then
Rows("137:193").Select
Selection.EntireRow.Hidden = True
End If
If Range("E73:E75,M73:M75") = "0" Then
Rows("75:193").Select
Selection.EntireRow.Hiden = True
ActiveWindow.SmallScroll Down:=-14
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
Messages postés
1938
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
16 août 2019
781
Bonjour Ludo,

il y a plusieurs façons de faire et pas forcément par macro.
tout dépend de l'organisation de tes données.

on peut imaginer un classeur par chantier, un classeur clients/chantiers.
le classeur chantier récupèrerait les données client du classeur client, tu y mettrais un onglet "prestations" d'où tu extrairais les lignes non nulles pour les mettre dans l'onglet devis/facture.

si tu as déjà choisi une structuration de tes données et un modèle de sortie pour tes devis/factures, fais-en un zip et monte le sur https://www.cjoint.com/

A+
Messages postés
1938
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
16 août 2019
781
Bonjour,

si les lignes à ausculter vont de 3 en 3, tu peux boucler sur une variable i

for i=33 to 1000 step 3
If Range("ae" & i) = "0" Then
Rows(i-2 & ":" & i).Select
Selection.EntireRow.Hidden = True
End If

et pour afficher,

Cells.EntireRow.Hidden = False

je n'ai pas testé mais ça doit le faire.

A+
C'est vrai, je n'y avais pas pensé. Mais c'est pas grave, j'ai bientot fini... Mais est il possible de faire exécuter automatiquement la macro quand je clique sur la feuille facture???
Messages postés
1938
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
16 août 2019
781
Bonjour,

oui, avec l'évènement Worksheet_Activate()
(tu mets ton code derrière la feuille qui t'intéresse)

A+
c'est parfait!!!

Merci beaucoup
Bonjour

J'ai appliqué la méthode décrite plus haut pour faire apparaitre et disparaitre des lignes dans mes feuilles.
Par contre je décroche au niveau du worksheet et pourtant j'en ai besoin.

Faut il créer une deuxieme macro?

Voici mon code on ne peut plus simple
Sub Macro1()

'Masque chambre
If Range("d18") = "0" Then
Rows("9:19").Select
Selection.EntireRow.Hidden = True
End If

'Affiche chambre
If Range("d18") <> "0" Then
Rows("9:19").Select
Selection.EntireRow.Hidden = False
End If

End Sub

Merci d'avance
Problème résolu.

j'écrivais mon code dans un modue au lieu de le mettre dans la feuille.

++