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 une ligne avec une variable


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Cacher une ligne avec une variable
    Bonjour,

    Je suis en train de faire une macro attachee a un formulaire (liste deroulante a choix multiple).
    Dans excel, j'ai des lignes qui contiennent en colonne C les noms de services de ma listbox (ceux qui apparaissent ds ma liste deroulante). Ce que je veux, c'est que les lignes contenant les noms de services qui ne sont pas selectionnees dans la liste deroulante du formulaire soient cachees.

    Ma macro ressemble donc a ca:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub CommandButton2_Click() 
     
    Dim G, H As Integer 
     
    'H, la ligne du premier service, G les membres selectionnes 
     
    H = 43 
    'Netoyer les selections precedentes 
    Worksheets("REV ANALYSIS").Activate 
    Range("E43:H54").ClearContents 
     
     
    'assure que toutes les lignes ne sont pas cachees 
    Worksheets("REV ANALYSIS").Activate 
    Rows("43:54").EntireRow.Hidden = False 
     
    For G = 0 To 11 
    H = 43 
    If ListBox1.Selected(G) = True Then 
     
    If Worksheets("REV ANALYSIS").Cells(H, 3) <> ListBox1.List(G) Then 
     
    Rows("H:H").Hidden = True 
     
    End If 
     
    H = H + 1 
     
    End If 
    Next G 
     
    UserForm2.Hide 
     
    End Sub
    Le bug intervient au niveau de la ligne "Rows("H:H").Hidden = True", il semble qu'il ne reconnaisse pas ma variable H.

    Quelqu'un peut il m'aider, je suis vraiment bloquee......

    Merci beaucoup,
    anais

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    attention, tu confonds row et column...

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Comment ca?
    Il s'agit bien des lignes que mon tableau excel que je veux cacher....

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    C'est que H n'est pas un numero de colonne, c'est ma variable.
    Mais peut etre que le dormat est mauvais? Qu'est ce que je devrais avoir pour faire appel a ma ligne H ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    bon alors il faut t'exprimer un poil mieux stp...
    ton rows("h:h") ne peut pas marcher car tu lui files deux lettres => des colonnes dans des lignes, ca fait désordre.

    au fait pense à mettre ton premier post avec les balises code stp, c'est un peu illisible

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Quand je mets Rows("H"), j'ai toujours une erreur....

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    row désigne des lignes, hors une ligne comporte un numéro, pas une lettre, si tu veux juste la ligne avec la valeur de ta variable h :

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci, je n'ai plus l'erreur..

    Mais maintenant, j'en ai une autre, c'est que la "H=H+1" ne semble pas se declencher: Il se bloque a H=43.

    Merci de ta patience...

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    ton imbrication dans ta boucle for g n'est à ce moment pas juste.
    Jusqu'où est sensé aller H ?
    je recommande une deuxième boucle

  11. #11
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bonne idee...

    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
    22
    For G = 0 To 11
     
     
    If ListBox1.Selected(G) = True Then
     
    For H = 43 To 54
     
    If Worksheets("REV ANALYSIS").Cells(H, 3) <> ListBox1.List(G) Then
     
    Rows(H).Hidden = True
     
    Else
     
    Rows(H).Hidden = False
     
     
    End If
     
    Next H
     
    End If
    Next G
    Ici, il ne m'applique la fonction que pour la derniere ligne selectionnee dans mon formulaire.... Je ne comprends pas pourquoi...

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    ici, on va avoir un auter soucis : tu passes plusieurs fois sur la les lignes 43 à 54 (boucle h) hors, si tu souhaites cacher les lignes qui figurent dans ta listbox, tu enlèves la partie qui figure dans le else, en te limitant à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Worksheets("REV ANALYSIS").Cells(H, 3) <> ListBox1.List(G) Then
     
    Rows(H).Hidden = True
     
    End If
    tu pourras faire précéder une "remise à zéro" de toutes les lignes avant le passage dans les boucle g et h.

  13. #13
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Quand je retire le else, il me cache direct toutes les lignes allant de 43 a 54...

    A quoi tu te referes quand tu dis remettre a zero les lignes?

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    l'idée est de cacher toute les lignes au départ, et de les faire apparaitre petit à petit, ou l'inverse. Il faut effectuer un test du type = plutôt que <> entre
    Wor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksheets("REV ANALYSIS").Cells(H, 3)
    et

  15. #15
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Super! Ca a marche!!

    Merci beaucoup pour ton aide, et bonne soiree..

    Anais

  16. #16
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    pense au tag résolu

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. Réponses: 6
    Dernier message: 30/08/2007, 16h47

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