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 :

Macro : masquer / afficher une ligne si la valeur d'une cellule est nulle ou pas


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Macro : masquer / afficher une ligne si la valeur d'une cellule est nulle ou pas
    Bonjour,

    Après avoir cherché en vain dans les posts, je viens vous demander de l'aide.

    J'ai créé un tableau de saisie avec divers onglets (Excel 2000 + VBA 6.3). Dans chaque onglet, j'ai créé 100 lignes. Grace à une macro appliquée sur une colonne, Excel masque par exemple la ligne 11 si la cellule B10 n'a pas été saisie. Idem pour les autres lignes (ligne 12 masquée si la cellule B11 n'a pas été saisie). Inversement si la cellule B10 est saisie, la ligne 11 s'affiche.

    Je n'ai pas eu de mal à faire cette macro car les cellules de la colonne B étaient totalement vides : pas de formules et pas de valeurs. Pour mon dernier onglet, je veux appliquer la même macro. Cependant, les cellules de la colonne, sur laquelle je veux appliquer ma macro, contiennent une formule.

    A la place de ma ligne VBA qui dit : si la cellule n'est pas vide, affiche moi la ligne suivante, sinon masque-la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Cells(row, 2) <> "" Then 
        status_indNov(row - 14) = 1
        counterindNov = counterindNov + 1
    Else
        status_indNov(row - 14) = 0
    End If
    je veux écrire : " si la valeur de la cellule n'est pas vide, affiche moi la ligne suivante, sinon masque-la". J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    - If Cells(row, 6).Value <> "" Then
    - If Cells(row, 6).Value <> "IsNull" Then 
    - If Cells(row, 6).Value <> IsNull Then 
    - If Not IsEmpty(Cells(row, 6)) Then
    - if isempty(Cells(row, 6)) = false Then
    - If Cells(row, 6). Value <> 0 Then
    - If Cells(row, 6) <> 0 Then
    mais ça ne fonctionne pas. Auriez-vous une idée ?

    Merci d'avance
    Bonne journée

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Points : 323
    Points
    323
    Par défaut
    Tu peux essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull Cells(row, 6).Value Then

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    - If not IsNull (Cells(row, 6)).Value Then
    - If Cells(row, 6). text? then
    (si j'ai bien compris ?...)

    Mais cela ne fonctionne pas

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Non tu n'as pas bien compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(row, 6).Text <> "" Then

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut docland,
    quand tu dis que cela ne fonctionne pas, peux tu préciser dans quels cas cela ne fonctionne pas, car cela doit fonctionner pour d'autres.

    et merci de préciser le contenur de Cell(row, 6) (au début tu parlais de Cell(row, 2)) pour un cas qui ne fonctionne pas.

    Et tu ne semble pas avoir essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    - If Cells(row, 6).text = "" Then
    il y a quoi dans tes celleules : des formules, des valeurs, ... ?
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    non, il ne se passe rien. C'est vraiment bizarre. Toutes ces formules ont l'air correct et mon fichier Excel ne réagit pas !!!

    Merci quand même. Si vous avez d'autres idées, je serais ravie de les recevoir.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Je suis persuadé que ce que je t'ai proposé va fonctionner, si au moins tu adaptes également le reste de ton code et de ta feuille Excel.

    Car c'est pas la peine de mettre ce que je t'ai donné si les formules Excel n'auront jamais comme résultat une cellule vide.

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Cela fonctionne dans les 3 premiers onglets de mon tableau. J'applique ma macro sur la colonne B où les cellules n'ont pas de formules à l'intérieur. Donc quand j'ajoute une valeur, une ligne s'ajoute en dessous. Si je supprime la valeur, la ligne du dessous disparait.

    Neanmoins, dans mon 4ème onglet, j'applique la macro sur la colonne F où les cellules on une formule à l'intérieur. A savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(E18=31;E18=60;E18=91;E18=121;E18=152;E18=182);"";E18)
    Et c'est là que ma ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(row, 2) <> "" Then
    doit être changée pour que VBA comprenne qu'il doit ignorer la formule mais faire la condition sur la valeur (nulle ou pas)

    J'espère que mon explication ne vous embrouille pas !

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(row, 6).text <> "" Then
    mais toujours rien
    Merci encore

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    As-tu vérifié que c'est bien cette formule Excel qui se situe dans ta 4e feuille?
    As-tu vérifié que E18 contient bien l'un des nombres que tu voulais?

    Et dernière chose: vérifie avec la fenêtre espions la valeur de Cells(row, 6).text, il se peut que le résultat ne soit pas celui attendu.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Pour répondre à tes questions :
    - C'est la bonne formule
    - E18 contient bien l'un des nombres que je voulais


    Je ne trouve néanmoins pas la fonctionnalité de fenêtre espion. Je pense que ma version d'Excel (2000) ne la possède pas...

    Merci beaucoup pour ta persévérance.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour,


    à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(row, 2) = 0 And Cells(row, 2).HasFormula = True Then

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pur cette nouvelle réponse.
    Mais toujours rien. J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    - If Cells(row, 6) = "" And Cells(row, 6).HasFormula = True Then
    - If Cells(row, 6) = 0 And Cells(row, 6).HasFormula = True Then

  14. #14
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Je serais toi, je mettrais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if sheets("feuilmachin").cells(row, 6) = "" then ...
    On ne sait jamais, si tu es encore sur un autre onglet ?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Oui je n'y avais même pas pensé à ça.

    La fenêtre espions, dans l'éditeur VBA, tu l'as dans "Affichage"->"Fenêtre espions".

    Un conseil: rajoute-toi une barre d'outils blindée (pas trop non plus) d'outils de débogage c'est plus pratique que de passer par les menus.

Discussions similaires

  1. [XL-2003] Macro masquer/afficher des lignes et colonnes
    Par Estimea dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/03/2011, 17h18
  2. Selection d'une ligne via les valeur de ces cellules
    Par bleuerouge dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/08/2010, 19h18
  3. Réponses: 2
    Dernier message: 25/04/2009, 20h46
  4. [AC-2007] Alimenter une Liste par les valeurs d'une ligne
    Par curt dans le forum IHM
    Réponses: 11
    Dernier message: 19/04/2009, 12h00
  5. Réponses: 2
    Dernier message: 13/12/2006, 20h30

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