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

Excel Discussion :

Rendre le masque de recherche vierge si aucune saisie [XL-2013]


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut Rendre le masque de recherche vierge si aucune saisie
    Bonjour,

    Avec l'assistance du forum j'ai adapté plusieurs macro pour faire un fichier de recherche bien utile dans mon activité.
    Ce fichier est censé contenir à terme plusieurs listes de prix (onglet) allant de 2005 à aujourd'hui.
    Certains onglet pèsent relativement lourd (+ de 1.000.000 de lignes).

    Le fichier allegé contenant des macros
    GPS search test.xlsm

    Mon problème est que je ne trouve pas la bonne formule qui rendrait les lignes vides si rien n'est saisie dans la fonction recherche.
    Car dans ce cas la formule copie l'ensemble des catalogues (onglets) dans ce cas test nous n'en avons que 1, mais dans ma version complète + de 10 (1/années grosso modo)

    Qui accepterait de m'aider sur ce petit problème.
    Vous en remerciant par avance
    Bien cordialement

    Christophe

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

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je n'ai pas ouvert ton xlsm donc je ne sais pas comment tu obtiens ton critère de recherche et comment tu traites ta recherches.
    Mais il me sembles qu'un simple If sur le contenu de ton critère de recherche avant de lancer la recherche devrait régler problème, non ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je n'ai pas ouvert ton xlsm donc je ne sais pas comment tu obtiens ton critère de recherche et comment tu traites ta recherches.
    Mais il me sembles qu'un simple If sur le contenu de ton critère de recherche avant de lancer la recherche devrait régler problème, non ?
    Merci de ta réponse je vais essayer, comme je débute sur ce point je vais continuer a tatillonner

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Muzzik Voir le message
    Merci de ta réponse je vais essayer, comme je débute sur ce point je vais continuer a tatillonner
    en regardant ma macro j'ai des IF un peu partout ????

    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
    Option Explicit
     
    Sub Filtre()
    Dim Ws As Worksheet
    Dim Nblg As Long
    Dim Ligne As Long
    Dim Entete As Boolean
     
      Application.ScreenUpdating = False
      Ligne = 16
      If Range("A" & Ligne) <> "" Then
        Range("A" & Ligne & ":D" & Range("A" & Rows.Count).End(xlUp).Row).Clear
      End If
      For Each Ws In Sheets
        If Ws.Name <> ActiveSheet.Name Then
          With Ws
            Nblg = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A1:D" & Nblg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B9:D10"), copytorange:=Range("A" & Ligne)
            If Entete = True Then
              Range("A" & Ligne & ":D" & Ligne).Delete shift:=xlShiftUp
            End If
            Entete = True
            Ligne = Range("A" & Rows.Count).End(xlUp).Row + 1
          End With
        End If
      Next Ws
     
    End Sub
     
    Sub Precision()
      If Range("A9") = True Then
        Range("B10:D10").Value = Range("B11:D11").Value
      Else
        If Range("B11") <> "" Then Range("B10") = "*" & Range("B11") & "*"
        If Range("C11") <> "" Then Range("C10") = "*" & Range("C11") & "*"
        If Range("D11") <> "" Then Range("D10") = "*" & Range("D11") & "*"
      End If
      Filtre
    End Sub

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Muzzik Voir le message
    en regardant ma macro j'ai des IF un peu partout ????

    Option Explicit

    Sub Filtre()
    Dim Ws As Worksheet
    Dim Nblg As Long
    Dim Ligne As Long
    Dim Entete As Boolean

    Application.ScreenUpdating = False
    Ligne = 16
    If Range("A" & Ligne) <> "" Then
    Range("A" & Ligne & "" & Range("A" & Rows.Count).End(xlUp).Row).Clear
    End If
    For Each Ws In Sheets
    If Ws.Name <> ActiveSheet.Name Then
    With Ws
    Nblg = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A1" & Nblg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B910"), copytorange:=Range("A" & Ligne)
    If Entete = True Then
    Range("A" & Ligne & "" & Ligne).Delete shift:=xlShiftUp
    End If
    Entete = True
    Ligne = Range("A" & Rows.Count).End(xlUp).Row + 1
    End With
    End If
    Next Ws

    End Sub

    Sub Precision()
    If Range("A9") = True Then
    Range("B1010").Value = Range("B1111").Value
    Else
    If Range("B11") <> "" Then Range("B10") = "*" & Range("B11") & "*"
    If Range("C11") <> "" Then Range("C10") = "*" & Range("C11") & "*"
    If Range("D11") <> "" Then Range("D10") = "*" & Range("D11") & "*"
    End If
    Filtre
    End Sub
    Bon je n'avance pas sur mon problème,
    Je tourne en rond,
    et mes connaissances etant limitées je ne sais pas ou prendre le problème.
    Merci de tout aide disponible.

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

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Muzzik Voir le message
    Bon je n'avance pas sur mon problème,
    Je tourne en rond,
    et mes connaissances etant limitées je ne sais pas ou prendre le problème.
    Tu as pensé à regarder l'aide VBA d'Excel ? C'est une mine d'or pour obtenir des informations, par exemple la structure de la commande If.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Tu as pensé à regarder l'aide VBA d'Excel ? C'est une mine d'or pour obtenir des informations, par exemple la structure de la commande If.
    Bonjour et desolé pour l'absence mais j'étais pris sur d'autres taches...
    Mon problème est toujours le meme et je ne trouve pas de solutions sur mon problème.
    j'ai consulté l'aide Excel, parcouru bon nombre de forum et statu quo.

    Si quelqu'un pouvait m'aider sur cette demande car si je ne renseigne pas une recherche en B11/C11/D11, ma macro tente d'afficher l'intégralité des lignes présentes sur l'ensemble de mes fichiers de recherches et la plantage car je dépasse un affichage de plus de 2.000.000,00 de lignes..

    Merci de votre aide

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il s'agit également de savoir ce que doit faire ton code quand tes deux critères sont vides

    par exemple ici, le filtre avancé ne se lance pas.

    une condition pour lancer le filtre si les critères ne sont pas vides

    à mettre dans ta procédure évènementielle Worksheet_Change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.WorksheetFunction.CountA(Range("B11:C11")) <> 0 Then Filtre
    je n'ai travaillé que sur les deux premiers critères .... ton troisième critère ne contenant pas d'en-tête, il ne sert à rien

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    il s'agit également de savoir ce que doit faire ton code quand tes deux critères sont vides

    Justement je souhaiterai qu'il ne fasse rien quand rien n'est renseigné

    par exemple ici, le filtre avancé ne se lance pas.

    une condition pour lancer le filtre si les critères ne sont pas vides

    à mettre dans ta procédure évènementielle Worksheet_Change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.WorksheetFunction.CountA(Range("B11:C11")) <> 0 Then Filtre
    je n'ai travaillé que sur les deux premiers critères .... ton troisième critère ne contenant pas d'en-tête, il ne sert à rien
    Merci Joe.levrai

    Etant un novice je ne sais pas ou mettre cette commande dans mon code

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Dans la macro évènementielle de ta feuille, tu as une ligne de code qui permet d'appeler ta macro filtre

    tu remplaces ça par la ligne que je t'ai donné

    ainsi, si tu effaces tes critères, la macro "filtre" ne se lancera pas, ton filtre avancé ne se mettra pas à jour, et tu n'importera pas tes millions de lignes


    c'est une demie-solution, mais tu n'a donné que des demi-informations

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Dans la macro évènementielle de ta feuille, tu as une ligne de code qui permet d'appeler ta macro filtre

    tu remplaces ça par la ligne que je t'ai donné

    ainsi, si tu effaces tes critères, la macro "filtre" ne se lancera pas, ton filtre avancé ne se mettra pas à jour, et tu n'importera pas tes millions de lignes


    c'est une demie-solution, mais tu n'a donné que des demi-informations
    Bonjour Joe,
    Je dois etre une triple buse car je n'y arrive pas,

    j'ai bien essayé de remplacer en suivant tes indications mais j'ai un message d'erreur

  12. #12
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    mais encore ?

    quelle ligne provoque l'erreur ?
    quel est le message d'erreur ?
    à quoi ressemble ton code maintenant ?

    avant de te proposer ceci, j'ai téléchargé ton classeur, modifié la ligne que j'ai indiqué
    et obtenu le comportement conforme à ce que j'ai décris.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Alors je ne dois pas avoir compris ce que tu m'as demandé de faire.

    J'ai en lieu et place de la ligne
    Sub Filtre() (supprimer cette ligne et ajouter celle que tu m'as transmise) If Application.WorksheetFunction.CountA(Range("B11:C11")) <> 0 Then Filtre
    Dim Ws As Worksheet
    Dim Nblg As Long
    Dim Ligne As Long
    Dim Entete As Boolean

    N'étant absolument pas compétent j'ai sans nul doute interprété ton message.

  14. #14
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Je suis désolé, j'en reviens à me demander si c'est toi qui a adapté ces macros et mis en place ton classeur
    Ce qui expliquerait que l'utilisation du filtre avancée te semble correcte (trois critères) alors que ce n'est pas le cas (seuls 2 critères peuvent fonctionner, cf mon message précédent à ce sujet)

    là tu viens de remplacer le titre de ta procédure "Filtre" par ma ligne de code
    moi je t'ai dis de remplacer la ligne de code qui contient uniquement "Filtre", présente dans ta procédure évènementielle Worksheet_Change, par ma ligne de code


    Donc, faisons simple :

    1) tu fais un clic droit sur l'onglet de ta feuille (j'ai plus le nom en tête)
    2) tu sélectionnes "visualiser le code"
    3) là tu es maintenant dans le module de la feuille, tu verras ta procédures évènementielles
    4) tu remplaces dans cette procédure la ligne qui ne contient que le mot "Filtre" ==> tu y mets à la place ma ligne
    5) tu nous confirmes après ça si le comportement est conforme à tes souhaits
    6) tu vas prendre un peu de temps, et lire/assimiler les tutoriels sur les base du VBA, tu ne semble pas en maîtriser l'environnement (je n'ai pas parlé de capacité à écrire du code, on en est même pas encore là)

    sans le point 6, tu ne pourras même pas tâtonner et bidouiller des macros fonctionnelles sans être bloqué

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Oupssss,

    Je suis désolé mais en cherchant à comprendre j'ai trouvé.....
    Je n'avais pas vu la partie Worksheet de ma feuille recherche, gros C....... que je suis.
    Merci de ton aide Joe, est il possible qu'avec ton petit bout de code on rafraîchisse plutôt que de figer sur la dernière recherche.
    C'est à dire rendre vide toute les lignes si rien renseigné.

    Sinon de base cela répond à ma demande, un grand merci.
    Bien à toi Joel

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Je suis désolé, j'en reviens à me demander si c'est toi qui a adapté ces macros et mis en place ton classeur
    Ce qui expliquerait que l'utilisation du filtre avancée te semble correcte (trois critères) alors que ce n'est pas le cas (seuls 2 critères peuvent fonctionner, cf mon message précédent à ce sujet)

    Oui je confirme j'ai adapté ces macros à l'utilisation de mon fichier, il vaut ce qu'il vaut pour mes besoins.

    là tu viens de remplacer le titre de ta procédure "Filtre" par ma ligne de code
    moi je t'ai dis de remplacer la ligne de code qui contient uniquement "Filtre", présente dans ta procédure évènementielle Worksheet_Change, par ma ligne de code

    En me posant sérieusement j'ai compris ce que tu essayais de me faire comprendre, je sais je comprend vite mais parfois il faut appuyer longtemps sur les explications.
    Donc, faisons simple :

    1) tu fais un clic droit sur l'onglet de ta feuille (j'ai plus le nom en tête)
    2) tu sélectionnes "visualiser le code"
    3) là tu es maintenant dans le module de la feuille, tu verras ta procédures évènementielles
    4) tu remplaces dans cette procédure la ligne qui ne contient que le mot "Filtre" ==> tu y mets à la place ma ligne
    5) tu nous confirmes après ça si le comportement est conforme à tes souhaits
    6) tu vas prendre un peu de temps, et lire/assimiler les tutoriels sur les base du VBA, tu ne semble pas en maîtriser l'environnement (je n'ai pas parlé de capacité à écrire du code, on en est même pas encore là)

    sans le point 6, tu ne pourras même pas tâtonner et bidouiller des macros fonctionnelles sans être bloqué
    J'ai tenté d'apprendre en tatillonnant sans pour autant en comprendre sérieusement les fondements, tu as raison.

    Merci néanmoins de ta patience et de ta pédagogie.

  17. #17
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    remplace ma ligne par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        If Application.WorksheetFunction.CountA(Range("B11:C11")) <> 0 Then
            Filtre
        Else
            Application.EnableEvents = False
            Range("A17").Resize(UsedRange.Rows.Count - 16, 1).EntireRow.Delete
            Application.EnableEvents = True
        End If
    ça devrait être bon

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Gérant de pme
    Inscrit en
    Juin 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Gérant de pme
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 79
    Points : 28
    Points
    28
    Par défaut
    Merci Joe

    Cela fonctionne je te remercie de ton aide, et de ta patience, a moi de me perfectionner avec ton travail.

    Cordialement

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

Discussions similaires

  1. [MySQL] Simple moteur de recherche qui retourne aucun résultat si plus de 1 mot clef
    Par yule dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/06/2010, 20h17
  2. [MySQL] Recherche multi critere "aucun resultat"
    Par fahdo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/01/2010, 00h17
  3. probléme avec une recherche qui donne aucun résultat
    Par lila23 dans le forum Débuter
    Réponses: 8
    Dernier message: 18/04/2009, 21h47
  4. Recherche ne retourne aucun resultat
    Par ninou212212 dans le forum SharePoint
    Réponses: 1
    Dernier message: 23/10/2008, 09h32
  5. Lire des répertoire avec un masque de recherche
    Par ram-0000 dans le forum Windows
    Réponses: 3
    Dernier message: 18/07/2008, 12h25

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