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
    7 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : juin 2007
    Messages : 7 619
    Points : 13 890
    Points
    13 890

    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 expérimenté
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 912
    Points : 1 664
    Points
    1 664

    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 P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  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 expérimenté
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 912
    Points : 1 664
    Points
    1 664

    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 P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  7. #7
    Membre expert
    Avatar de dysorthographie
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2016
    Messages : 1 885
    Points : 3 193
    Points
    3 193
    Billets dans le blog
    1

    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
    Il dit non avec la tête
    mais il dit oui avec le coeur
    il dit oui à ce qu’il aime
    il dit non au professeur {Jacques PRÉVERT}

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

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : juin 2007
    Messages : 7 619
    Points : 13 890
    Points
    13 890

    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
    7 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : juin 2007
    Messages : 7 619
    Points : 13 890
    Points
    13 890

    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
    7 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : juin 2007
    Messages : 7 619
    Points : 13 890
    Points
    13 890

    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 expérimenté
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 912
    Points : 1 664
    Points
    1 664

    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 P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  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
    7 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : juin 2007
    Messages : 7 619
    Points : 13 890
    Points
    13 890

    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
    7 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : juin 2007
    Messages : 7 619
    Points : 13 890
    Points
    13 890

    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