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 :

Macro pour filtrer et isoler une ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut Macro pour filtrer et isoler une ligne
    Bonjour,
    Je souhaite automatiser avec une macro la recherche d'une valeur dans une base de donnée Excel. Puis d'isoler la ou les lignes pour n'avoir que celles-ci visibles.

    Merci !

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    Mais encore?
    Pourrais tu poster ton code actuel? Tes données sont bien dans un tableau structuré, le nom de la colonne à filtrer ?,...
    C'est un peu lights comme info.

    L'enregistreur de macro pourrait aussi être une base de travail intéressante.

    Bat,

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut Suite
    Je complète ma demande.
    J'ai une base de données clients avec 50 champs (colonnes ) et près de 2000 enregistrements (lignes)
    Lorsque je filtre sur une colonne seules la ou les colonnes filtrées apparaissent. il est plus facile de remplir ou de modifier les enregistrements. Pas de risque de changement de ligne involontaire.
    J'utilise en plus une formule pour mettre en surbrillance toute la ligne, ce qui limite également les erreurs.
    L'enregistreur de Macro n'enregistre pas les commandes Ctrl+F ou bien les "filtres textuels, Est égale à... "dans les colonnes. C'est la première chose que j'ai tenté.
    on devrait pouvoir créer une macro qui va jusqu'au au moment ou il faut introduire la valeur recherchée (comme Ctrl+F), ou bien une autre qui pointerait sur un champs (code client, par exemple) non ? et qui du coup isolerai la ou les lignes qui contiennent la ou les valeurs recherchées.
    Licence Office 365 complète, donc Excel 2019.
    Merci pour ton aide !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    XL365 donc je suppose que tu travailles avec des tableaux structurés...

    Avec le tableau suivant nommé Tableau1

    Nom : 2020-11-15_170015.png
Affichages : 122
Taille : 3,6 Ko

    Tu peux utiliser le code suivant, à adapter à ton cas. Note que sans ShowAllData, le filtre s'ajoute au précédent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub setFilter()
      Dim ls As ListObject
     
      Set ls = Range("tableau1").ListObject
      With ls
        .AutoFilter.ShowAllData
        .Range.AutoFilter .ListColumns("Nom").Index, "Térieur"
      End With
    End Sub

    Bien sûr, on pourrait (devrait?) rendre cela générique.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut
    Bon,
    Si j'ai bien compris, il n'est pas possible d’arrêter une macro pour introduire la valeur recherchée. introduire une boite de dialogue pour la saisir ?
    trop compliqué. je reste sur mes commandes manuelles !
    Merci pour ton aide.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu peux demander à l'utilisateur de transmettre une valeur à la macro avec Inputbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub setFilter()
      Dim ls As ListObject
      Dim Value As String
     
      Value = InputBox("Valeur du filtre svp")
      Set ls = Range("tableau1").ListObject
      With ls
        .AutoFilter.ShowAllData
        .Range.AutoFilter .ListColumns("Nom").Index, Value
      End With
    End Sub

    Sans voir ton code, difficile de t'aider mieux. Si tu découpes ton code en petites "briques" constituées de procédures et fonctions qui s'appellent durant le déroulement de ton "programme", tu pourras facilement faire intervenir l'utilisateur quand tu le souhaites. Le but serait d'avoir une procédure qui filtre ton tableau en fonction d'une valeur reçue en paramètre

    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
    Sub setFilter(CustomerName As String)
      Dim ls As ListObject
     
      Set ls = Range("tableau1").ListObject
      With ls
        .AutoFilter.ShowAllData
        .Range.AutoFilter .ListColumns("Nom").Index, CustomerName
      End With
    End Sub
     
    Sub MaMacro()
      Dim CustomerName As String
     
      '...
      '...
      CustomerName = InputBox("Nom du client pour le filtre svp")
      setFilter CustomerName
      '...
      '...
      '...
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2003] Macro pour copier coller automatiquement une ligne selon un critère
    Par Hardeads dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/09/2019, 16h16
  2. [XL-2016] Macro pour suppression donnée d'une ligne + format
    Par bouly.db78 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2018, 13h46
  3. [XL-2013] Macro pour copie conditionnelle d'une ligne
    Par Archipad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2017, 11h54
  4. [XL-2010] Macro pour filtrer un TCD à partir d'une cellule
    Par Chrislezoud dans le forum Excel
    Réponses: 5
    Dernier message: 22/03/2013, 10h38
  5. Réponses: 3
    Dernier message: 07/08/2006, 11h25

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