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 :

Cacher des lignes en fonction de la valeur d'une ComboBox


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut Cacher des lignes en fonction de la valeur d'une ComboBox
    Bonjour,

    Je souhaite pouvoir cacher des lignes en fonction de la valeur d'une ComboBox. J'ai déja réussi avec les colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox3_Change()
    Dim Celt As Range
        Application.ScreenUpdating = False
        Cells.EntireColumn.Hidden = False
        If ComboBox3.value <> "Tasks" Then
            For Each Celt In Range("StandardTasksTable")
                If Celt.value <> ComboBox3.value Then Celt.EntireColumn.Hidden = True
            Next Celt
        End If
    End Sub
    J'ai ensuite essayé d'adapter ce code à des lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox2_Change()
    Dim Celd As Range
        Application.ScreenUpdating = False
        Cells.EntireRow.Hidden = False
        If ComboBox2.value <> "Operations" Then
            For Each Celd In Range("OperationsList")
                If Celd.value <> ComboBox2.value Then Celd.EntireRow.Hidden = True
            Next Celd
        End If
    End Sub
    Mais une erreur s'affiche sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells.EntireRow.Hidden = False
    Voici l'erreur : '1004' Impossible de définir la propriété Hidden de la classe Range.

    Je bloque totalement, quelqu'un aurait une solution ?

    Cordialement, Noctis.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    A tout hasard, essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.EntireRow.Hidden = False
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Toujours la même erreur, cette fois sur la ligne que tu m'a demandé d'essayer. Une autre idée ?

  4. #4
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    A tout hasard n'aurais-tu pas une feuille protégée avec l'option : autoriser tous les utilisateurs de cette feuille à : format de colonnes?

    Si oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        ActiveSheet.Unprotect '"motdepasse"
        Cells.EntireRow.Hidden = False
        ActiveSheet.Protect '"motdepasse"
    Cordialement,
    Franck

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord merci pour vos réponses.

    Pijaku, j'ai tenté en ajoutant la desactivation/reactivation de la protection, et toujours la même erreur. J'ai oté la protection manuellement, et toujours rien.

    Enfin j'ai tout d'abord ocpier coller ton code et l'erreur est ensuite passée à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Celd.EntireRow.Hidden = True

  6. #6
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Forcément...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ComboBox2_Change()
    Dim Celd As Range
        ActiveSheet.Unprotect '"motdepasse"
        Application.ScreenUpdating = False
        Cells.EntireRow.Hidden = False
        If ComboBox2.value <> "Operations" Then
            For Each Celd In Range("OperationsList")
                If Celd.value <> ComboBox2.value Then Celd.EntireRow.Hidden = True
            Next Celd
        End If
        ActiveSheet.Protect '"motdepasse"
    End Sub
    Cordialement,
    Franck

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu ne souhaite pas les réafficher?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Celd.EntireRow.Hidden = Celd.value <> ComboBox2.value

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Es-tu sûr au moins que le nom OperationsList contient des cellules ?

    En début de code, essaye de mettre un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Range("OperationsList").Count
    Histoire de voir la valeur affichée dans la fenêtre d'exécution...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par pijaku Voir le message
    Forcément...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ComboBox2_Change()
    Dim Celd As Range
        ActiveSheet.Unprotect '"motdepasse"
        Application.ScreenUpdating = False
        Cells.EntireRow.Hidden = False
        If ComboBox2.value <> "Operations" Then
            For Each Celd In Range("OperationsList")
                If Celd.value <> ComboBox2.value Then Celd.EntireRow.Hidden = True
            Next Celd
        End If
        ActiveSheet.Protect '"motdepasse"
    End Sub
    Même chose...

  10. #10
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Es-tu sûr au moins que le nom OperationsList contient des cellules ?

    En début de code, essaye de mettre un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Range("OperationsList").Count
    Histoire de voir la valeur affichée dans la fenêtre d'exécution...
    Oui cette liste contient une plage de cellules, les valeurs s'affiche bien dans la liste déroulante de la combobox.

    J'ai tenté la ligne que tu m'as fourni, aucune différence.

    Je suis perplexe car sur la même feuille, le programme pour les colonnes fonctionne sans probème.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,
    tu ne souhaite pas les réafficher?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Celd.EntireRow.Hidden = Celd.value <> ComboBox2.value
    Si, elles se réaffiche lorsque la combobox affiche la valeur "Operations".

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Noctis76 Voir le message
    J'ai tenté la ligne que tu m'as fourni, aucune différence.
    La ligne que j'ai indiqué n'a pas pour but de corriger le problème mais d'essayer d'en trouver la source.
    Mais comme tu ne dis pas quel résultat tu obtiens, je décroche.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Menhir Voir le message
    La ligne que j'ai indiqué n'a pas pour but de corriger le problème mais d'essayer d'en trouver la source.
    Mais comme tu ne dis pas quel résultat tu obtiens, je décroche.
    Eh bien le truc c'est que je n'ai obtenu aucun résultat !

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Noctis76 Voir le message
    Eh bien le truc c'est que je n'ai obtenu aucun résultat !
    Est-ce que au moins ta fenêtre d'exécution est ouverte ?

    Au pire, remplace le Debug.Print par un MsgBox.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Et ôte moi d'un doute, le Range("OperationsList") est bien sur la feuille active lorsque tu lances le code?
    Cordialement,
    Franck

  16. #16
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Est-ce que au moins ta fenêtre d'exécution est ouverte ?

    Au pire, remplace le Debug.Print par un MsgBox.
    Avec le Msgbox; aucune pop-up juste un message d'erreur, erreur de compilation: Argument non facultatif.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par pijaku Voir le message
    Et ôte moi d'un doute, le Range("OperationsList") est bien sur la feuille active lorsque tu lances le code?
    Oui, il fait référence aux lignes d'un tableau.

  18. #18
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Noctis76 Voir le message
    Avec le Msgbox; aucune pop-up juste un message d'erreur, erreur de compilation: Argument non facultatif.
    Rassure-moi : tu as quand même pris la peine de mettre la bonne syntaxe pour MsgBox ou tu attends que ça te tombe tout cuit dans le bec ?
    https://msdn.microsoft.com/fr-fr/lib.../gg251821.aspx
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 61
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Rassure-moi : tu as quand même pris la peine de mettre la bonne syntaxe pour MsgBox ou tu attends que ça te tombe tout cuit dans le bec ?
    https://msdn.microsoft.com/fr-fr/lib.../gg251821.aspx
    Je ne savais pas que cela fonctionnait ainsi, je débute en VBA. J'en ai un peu marre du ton condescendant que tu emploies, passe ton chemin je me débrouillerais sans toi. Merci comme même.

  20. #20
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ca tombe bien, moi aussi j'en avais un peu marre de ta passivité dans la résolution de ton problème.
    Bonne chance.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. afficher et masquer des lignes en fonction de la valeur d'une cellule
    Par kif550 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/05/2017, 07h01
  2. Copier des lignes en fonction de la valeur d'une cellule
    Par leirbag1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/03/2017, 15h24
  3. Copier coller des lignes en fonction de la valeurs d'une cellule
    Par Tyu38 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/09/2014, 09h38
  4. [XL-2010] Colorer des lignes en fonction de la valeur d'une colonne
    Par antoninr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2013, 13h33
  5. Réponses: 5
    Dernier message: 21/12/2011, 08h31

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