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 :

masquer des lignes dans un fichier Excel par commande VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    autre
    Inscrit en
    Novembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Novembre 2016
    Messages : 14
    Par défaut masquer des lignes dans un fichier Excel par commande VBA
    Bonjour à tous,

    Je suis nouvelle sur le Forum et j'espère que vous pourrez m'aider dans ma requête. J'aimerais masquer des lignes de mon fichier Excel via des demandes précises textes dans les cellules A2 et B2 qui renvoient au contenu de la colonne 4 de mon fichier.

    Vous allez me dire pourquoi ne pas appliquer tout simplement un autofilter et sélectionner dans la colonne 4 ce qui doit s'afficher!! mes responsables ne veulent pas voir le filtre ni même avoir la possibilité de sélectionner autre chose et voir d'autres résultats.

    J'ai mis en pièce jointe un fichier simplifié car le fichier d'origine peut contenir 300 à 500 lignes voire plus et un autofilter et assez compliqué puisque il ne faut rien oublier.

    Dans le fichier vous trouverez un soupçon de code dans l'onglet de la feuille1 qui ne marche pas trop... d'où votre aide Help!!

    Ce que j'aimerai c'est que lorsque j'inscris MIT dans la cellule B2 seules les lignes contenant dans la colonne 4 POL,POL2,TYM s'affichent.
    J'aimerai également avoir la possibilité de n'afficher qu'une demande exemple si j'inscris SLC2 dan la cellule A2 seule la ligne SLC2 s'affiche.
    Ah oui j'oubliais lorsque rien n'est inscrit dans les cellules A2 et B2 alors toutes les lignes sont masquées.

    Merci bcp pour votre aide précieuse


    Pièce jointe 225958

  2. #2
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Bienvenue.
    Avant que Marc ... vienne rappeler certains principes avec vivacité, je te conseilles d'expliquer davantage ... en postant les "soupçons de code" en lieu et place d'un fichier.

  3. #3
    Membre averti
    Femme Profil pro
    autre
    Inscrit en
    Novembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Novembre 2016
    Messages : 14
    Par défaut
    Merci d'avoir précisé!

    voici ce que j'ai essayé de faire je continue à travailler dessus!

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Application.ScreenUpdating = False
        If Target.Address = "$A$2" Then
                    If [A2] = Empty Then
                Range("D9:D15").EntireRow.Hidden = True
                 Exit Sub
            End If
            Set MyPlage = Range("D9:D15")
            For Each cell In MyPlage
                If cell.Value <> [A2] Then
                    cell.EntireRow.Hidden = True
                ElseIf cell.Value = [A2] Then
                cell.EntireRow.Hidden = False
                End If
            Next
        End If
        Application.ScreenUpdating = True
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re
    juste une petite question comme ca en passant
    Ah oui j'oubliais lorsque rien n'est inscrit dans les cellules A2 et B2 alors toutes les lignes sont masquées.
    ah!! oui!!! et comment tu veux taper en A2 ou B2 si elle sont invisibles

    c'était juste comme ca en passant comme personne ne te l'a demandé
    j'ai cru bon te faire entrevoir un 1 er problème de conception dans ton system hein!!....

    re
    bon a regarder ton exemple on est tranquile ca comence en ligne 9

    2 soucis

    si j'ai lc2 en B et que je tape en A2 quelle est la règle de priorité la A ou la B
    doit on effacer B si on tape dans A?
    doit ton empêcher de taper en A si B plein ?
    tout c'est des soucis de conception qui ne sont pas suffisamment pensés
    reprends ton énoncé et di nous avec ces nouveaux paramètres comment tu veux que cela fonctionne
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Femme Profil pro
    autre
    Inscrit en
    Novembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Novembre 2016
    Messages : 14
    Par défaut
    Bonjour Patricktoulon,

    Oui effectivement ce sont des problématiques que je n'avais pas encore mises en avant et qui se seraient présentées.

    Lorsque les deux B2 et A2 sont avec une sélection via la colonne 4 alors les deux affichent les lignes qui les concernent.
    B2 est prioritaire sur A2 dans les sens ou rien n'est inscrit dans A2.Autrement dit si rien n'est inscrit dans la cellule A2 seule la sélection dans B2 s'affiche.
    Lorsque les deux B2 et A2 sont vides alors toutes les lignes sont masquées.

    En espérant avoir été plus précise!

    Merci pour votre aide

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut RE
    Bonjour line 78

    voila une idée parmi tant d'autre
    a placer ce code dans le module du sheets concerné

    TAPE SLC2 EN MAJ OU MIT PUIS ENTER ET TU AURA CE QUE TU SOUHAITE
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    'Ce que j'aimerai c'est que lorsque j'inscris MIT dans la cellule B2 seules les lignes contenant dans la colonne 4 POL,POL2,TYM s'affichent.
    ' j 'aimerai également avoir la possibilité de n'afficher qu'une demande exemple si j'inscris SLC2 dan la cellule A2 seule la ligne SLC2 s'affiche.
    ' Ah oui j'oubliais lorsque rien n'est inscrit dans les cellules A2 et B2 alors toutes les lignes sont masquées.
    'Ce que j'aimerai c'est que lorsque j'inscris MIT dans la cellule B2 seules les lignes contenant dans la colonne 4 POL,POL2,TYM s'affichent.
    ' j 'aimerai également avoir la possibilité de n'afficher qu'une demande exemple si j'inscris SLC2 dan la cellule A2 seule la ligne SLC2 s'affiche.
    ' Ah oui j'oubliais lorsque rien n'est inscrit dans les cellules A2 et B2 alors toutes les lignes sont masquées.
    Private Sub Worksheet_Change(ByVal Target As Range)
        Select Case Target.Address
        Case "$A$2"
            Range("D9:D200").EntireRow.Hidden = False    'Cells(Rows.Count, 4).End(xlUp)).EntireRow.Hidden = False
            If [A2] & [b2] = "" Then Range("D9", Cells(Rows.Count, 4).End(xlUp)).EntireRow.Hidden = True
            If [A2] = "SLC2" Then
                For Each cel In Range("D9", Cells(Rows.Count, 4).End(xlUp))
                    If cel <> "SLC2" Then cel.EntireRow.Hidden = True
                Next
            End If
        Case "$B$2"
            Range("D9:D200").EntireRow.Hidden = False    'Cells(Rows.Count, 4).End(xlUp)).EntireRow.Hidden = False
            If [A2] & [b2] = "" Then Range("D9", Cells(Rows.Count, 4).End(xlUp)).EntireRow.Hidden = True
            param1 = "POL,POL2,TYM"
            If [b2] = "MIT" Then
                For Each cel In Range("D9", Cells(Rows.Count, 4).End(xlUp))
                    If Not param1 Like "*" & cel.Value & "*" Then cel.EntireRow.Hidden = True Else cel.EntireRow.Hidden = False
                Next
            End If
        End Select
        Application.ScreenUpdating = True
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Select Case Target.Address
        Case "$A$2": [A2:B2].Value = ""
        Case "$B$2": [A2:B2].Value = ""
        End Select
        If [A2] & [b2] = "" Then Range("D9", Cells(Rows.Count, 4).End(xlUp)).EntireRow.Hidden = True
    End Sub
            End If
        End Select
        Application.ScreenUpdating = True
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Select Case Target.Address
        Case "$A$2": [A2:B2].Value = ""
        Case "$B$2": [A2:B2].Value = ""
        End Select
        If [A2] & [b2] = "" Then Range("D9", Cells(Rows.Count, 4).End(xlUp)).EntireRow.Hidden = True
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/10/2016, 15h49
  2. Réponses: 1
    Dernier message: 03/02/2015, 11h54
  3. [Lazarus] Insérer une ligne dans un fichier Excel par OLE
    Par Yoanben dans le forum Lazarus
    Réponses: 0
    Dernier message: 01/04/2010, 07h49
  4. Attraper des lignes dans un fichier excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/01/2007, 11h27
  5. Mettre des donnees dans un fichier Excel
    Par Mouawad dans le forum C++Builder
    Réponses: 6
    Dernier message: 07/10/2004, 14h55

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