Deux macros qui se genent l'une et l'autre

carotte78 Messages postés 50 Statut Membre -  
carotte78 Messages postés 50 Statut Membre -
Bonjour tout le monde,
Voila mon petit problème:

J'ai deux macros :
Private Sub Worksheet_Change(ByVal Target As Range)
Rows("12:27").Select
If Range("B10").Value = "Cas 3: 1 seule mesure > VLEP ou sur 3 campagnes (9 mesures), la probabilité de dépassement >5% " Then
Selection.EntireRow.Hidden = True
Else
Selection.EntireRow.Hidden = False
End If
Rows("16:18").Select
If Range("B10").Value = "Cas 1 bis : 3 CEP < 10% de la VLEP ou 3 campagnes (soit 9 mesures) avec une probabilité de dépassement < ou égale à 0,1% sans EPI respiratoires requis " Then
Selection.EntireRow.Hidden = True
Else
Selection.EntireRow.Hidden = False
End If

End Sub

Le problème est que quand je suis dans le cas 3 les lignes 16-18 ne s'efface pas. Quand dans le dernier SELECTION.ENTIRE.Row.HIDDEN (en gras) je mes "Cas 3" ca marche mais des que je touche a une case ca me met debogage.... Pouvez vous m'aider ? MERCIII beaucoup :)

8 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    Tu parles de 2 macros mais je n'en vois qu'une....

    le "cas 3" concerne les lignes 12:27 et non 12:18.... ???

    Pas clair ton explication
    0
    1. carotte78 Messages postés 50 Statut Membre
       
      Bonjour,
      si il y a deux macros mais je les ai mis l'une dans l'autre Private Sub Worksheet_Change(ByVal Target As Range)
      Rows("12:27").Select
      If Range("B10").Value = "Cas 3: 1 seule mesure > VLEP ou sur 3 campagnes (9 mesures), la probabilité de dépassement >5% " Then
      Selection.EntireRow.Hidden = True
      Else
      Selection.EntireRow.Hidden = False
      End If
      Rows("16:18").Select
      If Range("B10").Value = "Cas 1 bis : 3 CEP < 10% de la VLEP ou 3 campagnes (soit 9 mesures) avec une probabilité de dépassement < ou égale à 0,1% sans EPI respiratoires requis " Then
      Selection.EntireRow.Hidden = True
      Else
      Selection.EntireRow.Hidden = False
      End If

      End Sub

      En faite la cas 3 concerne le slignes 12 A 27 et les cas 1Bis les lignes 16 A18. en fait dans le cas 3 le slignes 12 a 27 s'efface et dans le cas 1 bis c'est les lignes 16 a 18. Mais lorsque je met cas 3 les lignes 16 à 18 ne s'efface pas alors qu'elles devraient merci de votre aide
      0
    2. carotte78 Messages postés 50 Statut Membre
       
      Et qiuand les macro marchent sa me met que je dois debogue en surlignant des phrases en jaune mais je sais pas ce que sa veut dire.
      0
  2. carotte78 Messages postés 50 Statut Membre
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Rows("12:27").Select
    If Range("B10").Value = "Cas 3: 1 seule mesure > VLEP ou sur 3 campagnes (9 mesures), la probabilité de dépassement >5% " Then
    Selection.EntireRow.Hidden = True
    Else
    Selection.EntireRow.Hidden = False
    End If
    Rows("16:18").Select
    If Range("B10").Value = "Cas 1 bis : 3 CEP < 10% de la VLEP ou 3 campagnes (soit 9 mesures) avec une probabilité de dépassement < ou égale à 0,1% sans EPI respiratoires requis " Then
    Selection.EntireRow.Hidden = True
    Else
    Selection.EntireRow.Hidden = "Cas 3:1 seule mesure > VLEP ou sur 3 campagnes (9 mesures), la probabilité de dépassement >5% "
    End If

    End Sub
    Il me met cette phrase en jaune...
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Cette ligne là est incorrecte
    Selection.EntireRow.Hidden = "Cas 3:1 seule mesure > VLEP ou sur 3 campagnes (9 mesures), la probabilité de dépassement >5% "
    Après Selection.EntireRow.Hidden =
    il te faut un booleen true ou false
    Avant il faudrait définir une selection

    Peux tu envoyer ton fichier sur cjoint.com si possible au format excel 2003) et joindre le lien obtenu à ton prochain message, avec quelques explications

    RQ. il n'y a pas 2 macros, mais une seule

    bonne suite
    0
    1. carotte78 Messages postés 50 Statut Membre
       
      https://www.cjoint.com/?CBCpGKhB4k5 Alors j'aimeraiq ue lorsqu'on choisi cas 1ou cas 2 rien ne change , casx 1 bis les lignes 16 à 18 se masquent et quand on choisit cas 3 les lignes 12 a 27 se masquent.

      Merci beaucoup
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      je t'ai demandé au format excel 2003
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Ce que j'ai compris
    Cas 1 et 2 on montre toutes les lignes
    Cas 3 on cache les lignes 12:27
    Cas 1 bis on cache (uniquement) les lignes 16:18
    Le code est (actif) dans la feuille 1

    https://www.cjoint.com/?3BCtn7zM5Tu

    RQ. J'ai du nettoyer tous tes codes qui interféraient (du moins avec excel 2003)

    bonne suite
    0
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    et pour généraliser à toutes les feuilles
    https://www.cjoint.com/?3BCuj74H8Nt
    0
    1. carotte78 Messages postés 50 Statut Membre
       
      Merci beaucoup jz regarde sa demain et je vous dis si ca marche.
      0
    2. carotte78 Messages postés 50 Statut Membre
       
      Bonjour, votre macro ne marche pas...:( je ne comprend pourtant pas pourquoi ...j'ai copié coller
      0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    1. Est ce que ça fonctionne dans mon fichier?

    2. Un code un peu plus simple
    https://www.cjoint.com/?3CbqTJQXjZE
    Le mode d'emploi est dans la feuille 1
    0
    1. carotte78 Messages postés 50 Statut Membre
       
      Oui dans votre feuille sa marche
      j'essaye votre nouveau code
      0
    2. carotte78 Messages postés 50 Statut Membre
       
      Oui votre code fonctionne dans votre fichier;
      Pour votre nouveau fichier je ne comprend pas la différence entre ce qu'est un module et une feuille. J'ai copier votre macro dans mon document mais cela ne marche pas non plus. Je vous donne le Vrai fichier sur lequel j'aimerai faire fonctionner cette macro:https://www.cjoint.com/?3Cboq79G6Kf

      Merci beaucoup
      0
    3. ccm81 Messages postés 11033 Statut Membre 2 434
       
      au format axcel 2003
      0
    4. carotte78
       
      A oui pardon . Voila je l'ai pas enregistré pour squil prennent des macro je savais pas si ca affecterai l'ouverture chez vous http://cjoint.com/?3Cbr57R4czJ
      0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    OK, mais

    1. tu as changé la cellule cible: B9 au lieu de B10
    2. tu as mis des Alt-Entree pour forcer les passages à la ligne dans B9
    donc, la macro ne retrouve plus ses petits

    Le bon côté c'est que je t'ai simplifié le code
    https://www.cjoint.com/?3CbsuAw0oik

    Un module de feuille (situé dans la liste des feuilles fenêtre de gauche dans l'éditeur VBA est destiné à recevoir les procédures et fonctions propres à cette feuille
    Un module "général" (Module 1, Module 2 quand tu fais Insertion/module) est un module dans lequel les procédures et fonctions concernent n'importe quelle feuille

    Dans Module 1 tu trouveras la procédure
    Masque_Montre(target As Range)
    qui fait le boulot à partir de la cellule target reçue au moment de l'appel depuis la procédure WorksheetChange du module de la feuille active

    Dans les modules des feuilles 1-2-3- ... tu trouveras la procédure Worksheet_Change(ByVal target As Range)
    qui appelle Montre_Cache en lui envoyant la cellule active comme paramètre

    Il ne te reste plus qu'à copier l'intégralité du code du module de la feuille 1 dans les modules des autres feuilles

    Si tu as besoin d'autres précisions, n'hésites pas

    bonne soirée
    0
    1. carotte78 Messages postés 50 Statut Membre
       
      Mercii beaucoup :)
      0