IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Demande d'aide code vba erroné


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Contrôleur interne
    Inscrit en
    Juillet 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Contrôleur interne

    Informations forums :
    Inscription : Juillet 2020
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Demande d'aide code vba erroné
    Bonsoir,

    Voici le code repris dans mon fichier excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = 0
     
    Rows("4:13").EntireRow.Hidden = False
    If Range("C4").Value = "NON" Then Rows("5:13").EntireRow.Hidden = True
    If Range("C4").Value = "NA" Then Rows("5:13").EntireRow.Hidden = True
    If Range("C9").Value = "OUI" Then Rows("5:8").EntireRow.Hidden = True
    If Range("C9").Value = "NON" Then Rows("5:8").EntireRow.Hidden = True
    If Range("C5").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C5").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    If Range("C6").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C6").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    If Range("C7").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C7").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    If Range("C8").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C8").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    If Range("C9").Value = "NON" Then Rows("10:13").EntireRow.Hidden = True
    If Range("C5:C8").Value = "NON" Then Rows("10:13").EntireRow.Hidden = True
     
    Application.ScreenUpdating = -1
    End Sub
    La ligne suivante ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("C5:C8").Value = "NON" Then Rows("10:13").EntireRow.Hidden = True
    Je souhaite voir les lignes 10 à 13 cachées si les cellules, C5 + C6 + C7 + C8 sont renseignées "NON"

    Quelqu'un peut-il m'aider ? Merci par avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    Bonsoir

    Pour la ligne ci-dessous, nous sommes bien d'accord qu'il s'agit de quatre cellules ? Si tu lis ton test, il traite quoi ? C5 ou C6 ou ... ?

    If Range("C5:C8").Value = "NON" Then Rows("10:13").EntireRow.Hidden = TrueCeci aurait plus de chance de fonctionner :

    If (Range("C5").Value = "NON") AND (Range("C6").Value = "NON") AND (Range("C7").Value = "NON") AND (Range("C8").Value = "NON") Then Rows("10:13").EntireRow.Hidden = TrueMaintenant, c'est plutôt bof bof de faire comme ça. Déjà, le fait d'utiliser "OUI" et "NON", c'est problèmatique car quid si je mets YES et NO dans les cellules => tu forces l'utilisation du français. Pourquoi pas 1 et 0 qui sont plus portables ? Ou alors tu peux faire ce que tu écris si tu as forcé un "Data validation" (je ne connais pas la correspondance en français) càd forcé l'apparition d'une liste déroulante où tu forces un choix de valeur.

    Imaginons qu'au lieu de "NON" on met "0" (le chiffre zéro). Du coup, c'est facile : If (Sum(Range("C5:C8").Value) = 0) Then ... et là, vaut que la somme des quatre cellules donne zéro, ben, c'est que j'avais NON partout.

    Plus haut dans ton code tu as les lignes ci-dessous. A première vue c'est bizarre : que ce soit oui ou non tu masques la ligne 9 et cela pour C5 à C8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Range("C5").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C5").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    If Range("C6").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C6").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    If Range("C7").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C7").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    If Range("C8").Value = "OUI" Then Rows("9").EntireRow.Hidden = True
    If Range("C8").Value = "NON" Then Rows("9").EntireRow.Hidden = True
    Cela fait beaucoup de lignes de code pour, au final, la même chose; cacher la ligne 9.

    Ne pourrais-tu pas améliorer cela ? Dire que la ligne est toujours masquée sauf si ... Qu'as-tu d'autres comme valeurs que OUI ou NON ? N'est-ce pas plus lisible de dire, je ne sais pas, si Range("C5").Value = "NA" Then ... et d'afficher la ligne au lieu de la masquer ?

    Sinon de faire une boucle foreach ... histoire d'éviter de se répéter.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Contrôleur interne
    Inscrit en
    Juillet 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Contrôleur interne

    Informations forums :
    Inscription : Juillet 2020
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Merci
    Merci beaucoup pour ton aide. Le problème est résolu. Je suis très contente. Bonne Soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DEMANDE D'AIDE code vba
    Par amiinaa dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/12/2016, 18h16
  2. Aide code VBA
    Par auxboman dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/03/2010, 20h43
  3. Aide Code VBA
    Par Dan21 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/02/2010, 17h07
  4. Aide code VBA, fonction SubdatasheetExpanded
    Par Fredo67 dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/02/2008, 10h28
  5. demande d'aide sur VBA
    Par aralth dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2007, 05h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo