Automatiser l'affichage des lignes

Résolu
Nastine -  
michel_m Messages postés 18903 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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    essaies
    Call penalty
    0
    1. Nastine
       
      Idem, Excel cesse de fonctionner et redémarre...
      0
  2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    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
    1. 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
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      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
    3. Nastine
       
      Y a-t-il moyen d'éviter cela ?
      0
    4. 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
    5. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. 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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > 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
    3. Nastine
       
      Non, non, tu es le bienvenu :)
      0
    4. Nastine > michel_m Messages postés 18903 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
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Nastine
       
      Comme on ne sait pas à qui tu écris....

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

      Abandon
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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