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 :

améioration d'un code


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 améioration d'un code
    Bonjour à tous,

    J'ai besoin de votre aide pour améliorer un code concernant le masquage de mes lignes.L'explication du code ci-dessous est la suivante: lorsque j'inscris en A2 une donnée faisant référence à la colonne 5 seules les lignes comportant cette donnée s'affichent. Le même Concept s'applique pour la donnée inscrite en E3 qui fait référence à la colonne B2.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
          Select Case Target.Address
        Case "$A$2"
            Range("E14:E3000").EntireRow.Hidden = False    'Cells(Rows.Count, 5).End(xlUp)).EntireRow.Hidden = False
            If [A2] & [E3] = "" Then Range("E14", Cells(Rows.Count, 5).End(xlUp)).EntireRow.Hidden = True
            If [A2] <> "" Then
                        For Each cel In Range("E14", Cells(Rows.Count, 5).End(xlUp))
                    If cel.Value = [A2] Then Else cel.EntireRow.Hidden = True
                Next
            End If
     
     
    Case "$E$3"
         Range("B14:B3000").EntireRow.Hidden = False    'Cells(Rows.Count, 2).End(xlUp)).EntireRow.Hidden = False
            If [A2] & [E3] = "" Then Range("B14", Cells(Rows.Count, 2).End(xlUp)).EntireRow.Hidden = True
                     If [E3] <> "" Then
                For Each cel In Range("B14", Cells(Rows.Count, 2).End(xlUp))
                   If cel.Value = [E3] Then Else cel.EntireRow.Hidden = True
    Next
            End If
        End Select
        Application.ScreenUpdating = True
    End Sub


    Voici ma demande:
    Dans mon code, A2 et E2 fonctionnent de manière indépendantes. J'aimerais afficher simultanément toutes les
    lignes faisant référence à ma sélection à la fois en A2 et E2.


    Merci à vous tous pour votre aide

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    tu peux intégrer dans ton code l'utilisation de filtres élaborés.

    De cette manière pas de parcours séquentiel de ton tableau et un résultat quasi instantané.

    Pour tout savoir sur l'utilisation de ces filtres :
    http://philippetulliez.developpez.co...dvancedfilter/

    En espérant que cela t'aide.

  3. #3
    Membre expérimenté Avatar de EBRAG
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Avril 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 125
    Par défaut
    Bonsoir,

    voire même un filtre automatique ?

    sinon, on peut refaire le filtre avec un exemple de ce type...
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim cel As Range
      Dim oCell As Range
      For Each oCell In Target
        Select Case Target.Address
          Case "$A$2", "$E$3"
            Range("E14:E" & Range("A1").SpecialCells(xlCellTypeLastCell).Row).EntireRow.Hidden = False   
            If Range("A2") = "" And Range("E3") = "" Then
              Range("E14", Cells(Rows.Count, 5).End(xlUp)).EntireRow.Hidden = True
            End If
            If Range("A2") <> "" Then
              For Each cel In Range("E14:E" & Range("E1").SpecialCells(xlCellTypeLastCell).Row)
                If cel.Value = Range("A2") And Cells(cel.Row, 2) = Range("E3") Then
                  cel.EntireRow.Hidden = False
                Else
                  cel.EntireRow.Hidden = True
                End If
              Next
            End If
     
     
        End Select
      Next
    End Sub
    dis-nous quoi ?

  4. #4
    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 à tous,

    ERBRAG, ton code ne fonctionne pas dans ma feuille car j'applique en première instance un autre code pour la mise en forme de mon fichier. cependant ton code est intéressant et je vais travailler dessus dans un autre contexte.

    L'idée des filtres élaborés dont j'ai lu tout le tuto ne fonctionnera pas car j'ai un code plus compliqué avec du paramétrage dans les cellules. Je n'avais posté ici qu'une forme simplifiée. J'ai trouvé une parade temporaire en copiant que mes résultats visible dans une autre feuille du classeur.

    Je vais travailler sur le code de ERBRAG pour essayer de l'adapter à mon code existant.

    Je vous tiens au courant.

    Merci à vous+++

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