[Excel]Masquer 3 lignes lorsqu'une case = 0

Résolu/Fermé
Ludo - 26 oct. 2006 à 07:41
 suricate55 - 4 déc. 2011 à 21:43
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
A voir également:

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
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
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
26 oct. 2006 à 15:36
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+
1
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
26 oct. 2006 à 16:40
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+
1
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???
0

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

Posez votre question
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
26 oct. 2006 à 17:13
Bonjour,

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

A+
0
c'est parfait!!!

Merci beaucoup
0
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
0
Problème résolu.

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

++
0