Automatiser l'affichage des lignes

Résolu
Nastine -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous, bonne année ! :)

J'ai une question par rapport à l'automatisation de l'affichage des lignes sous VBA.

Ce que je veux faire: dans la cellule B4 de la feuille Prêt j'ai une formule qui cherche la valeur de cette cellule dans la feuille à côté Synthèse. Je voudrais que quand la valeur de la cellule B4 = "Rachat", j'ai trois lignes qui apparaissent dans la feuille (qui sont masquées si la valeur n'est pas "Rachat").

Voici le code que j'ai fait mais à l'exécution mon Excel cesse de fonctionner...

Private Sub Worksheet_Calculate()
Dim Target As Range
If Range("B4").Value = "Rachat" Then
Call Module2.Penalty
End If
End Sub


La procédure pour les lignes est déjà faite et marche si je l'associe à un bouton.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

4 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Bonjour

essaies
Call penalty
0
Nastine
 
Idem, Excel cesse de fonctionner et redémarre...
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Mets un point d'arrêt (F9) sur l'appel de la fonction et observe en pas à pas (F8) ce que ça donne.

Peux-tu fournir le code de ta fonction appelée ?
0
Nastine
 
Bonjour, voici le code de la procédure appelée:

Sub Penalty()
Dim Plage As Range
Dim Plage1 As Range
Set Plage = Range("A47:D47").EntireRow
Set Plage1 = Range("A48:D48").EntireRow
With Plage
.Hidden = Not .Hidden
End With
With Plage1
.Hidden = Not .Hidden
End With
End Sub



Elle marche si je l'associe à un bouton.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
A vérifier en mode pas à pas, mais il est possible que le fait de masquer ou pas les lignes puisse relancer l'événement de recalcul du tableau.
0
Nastine
 
Y a-t-il moyen d'éviter cela ?
0
Nastine
 
Car je viens de vérifier et je crois que effectivement la macro Penalty s'arrête au milieu et revient sur le Calculate
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
A voir si tu ne peux pas déplacer ton code dans l'event "change" (ou similaire) pour détecter les modifications au lieu de le faire dans le "calculate".
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
RE,
assaies cette macro à installer dans le module feuille "prêt"
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$4" And Target = "achat" Then
Call factory
end if
End If


au passage: hidden est un booléen
Hidden=true 'cache
Hidden=false 'montre

mais tu pourrais te contenter d'une seule macro
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$4" And Target = "rachat" Then
Range("A47:A48").EntireRow.Hidden = False
End If
End Sub


 Michel
0
Nastine
 
Je viens d'essayer, et rien... Tu m'écris un évènement Change; c'est rien si j'ai une formule dans la cellule Target ? j'avais l'impression que si c'est le cas, il faut passer par Calculate.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313 > Nastine
 
je viens de rectifier mon dernier message
j'ai essayé: ca marche

REmarque: tu le dis si ca te gène que je participe
0
Nastine
 
Non, non, tu es le bienvenu :)
0
Nastine > michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention  
 
Est-ce que tu peux jeter un oeuil sur le fichier stp ? je mets ta macro et rien ne se passe...

http://www.cjoint.com/c/FAboIHLXAm3
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313 > Nastine
 
Comme on ne sait pas à qui tu écris....

Sur ta demande initiale , ce que je t'ai proposé fonctionne

Abandon
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Apparament il ya des post qui ont été supprimés :-(


La macro
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$4" And Target = "rachat" Then
Range("A47:A48").EntireRow.Hidden = False
End If
End Sub


pour l'installer de le module feuille concerné "compratif prêt"

copier la macro ci dessus
clic droit sur l"onglet(en bas d'écran"comparatif prêt") -visualiser le code
coller la macro
 Michel
0