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 :

VBA - AdvancedFilter : problème de critère (texte) [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2023
    Messages : 8
    Par défaut VBA - AdvancedFilter : problème de critère (texte)
    Bonjour à tous,

    J'ai créé un userform sur Excel et j'utilise la fonction AdvancedFilter avec laquelle je rencontre une difficulté.
    Pour simplifier, je souhaite filtrer le tableau de données suivant :

    Numéro de fiche Numéro de série
    1 00123456789
    2 7410258963


    NB : Les cellules de ce tableau sont en format texte et sont récupérés à partir de textBox de mon userform.

    Mon tableau de critère (également en format 'texte') est le suivant :

    Numéro de série
    0123456789

    Mon code VBA est le suivant :

    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
     
    Sub filtreAvance1()
     
        'Déclaration des variables
        Dim rgDonnees As Range
        Dim rgCritere As Range
        Dim rgDestination As Range
     
        'Affectation des variables
        Set rgDonnees = Feuil4.Range("A1").CurrentRegion 'équivalent au 1er tableau exemple
        Set rgCritere = Feuil3.Range("Q3").CurrentRegion 'équivalent au 2nd tableau exemple
        Set rgDestination = Feuil2.Range("A1")
     
        'Suppression l'ancien filtre
        Feuil2.Cells.ClearContents
     
        'Exécute l'outil FiltreAvancee
        rgDonnees.AdvancedFilter xlFilterCopy, rgCritere, rgDestination
     
    End Sub
    J'aimerai que le résultat du filtre soit vide mais ce dernier m'extrait la fiche n°1 associée au numéro de série "00123456789" (dans mon critère, le numéro de série est "0123456789").
    J'ai l'impression qu'Excel supprime les "0" du début des nombres, pourtant dans les deux tableaux (données & critère) les cellules sont au format 'texte'.
    J'ai essayé différentes variantes telles que modifier mon tableau critère comme tel :

    Numéro de série
    =0123456789

    Cependant, le résultat est le même. La seule solution que j'ai trouvé est de modifier mes numéros de série, en ajoutant une lettre au début comme "b" et là le résultat est conforme à mes attentes. J'aimerai une solution plus optimale s'il vous plaît ?

    Merci par avance, bonne journée à vous

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas si cela peut vous aider mais en plaçant une apostrophe devant le nombre il se comporte comme une valeur alphanumérique
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2023
    Messages : 8
    Par défaut
    Bonjour,

    Merci pour votre retour rapide. J'ai essayé mais cela ne fonctionne pas... J'ai bien ajouté une apostrophe devant mes numéros de série des tableaux données et critère mais rien n'y fait :/

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une image des données partielles serai un plus car vous avez deux critères "Numéro de fiche" et "Numéro de série", je ne vois pas la raison pour laquelle cela ne fonctionne pas.
    Avez vous vérifié si toutes les lignes contenant vos données sont de même type que les critères, à l'aide de la fonction ESTNUM ou ESTTEXTE ?

    Sinon, ce serait peut-être plus simple de passer par POWER QUERY
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 239
    Par défaut
    Hello,
    dans la plage de critère il faut mettre :

    Numéro de série
    ="0123456789"

    Ami calmant, J.P

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2023
    Messages : 8
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses. J'ai tenu compte de vos remarques mais j'ai toujours le même problème. Je vais répondre dans l'ordre à vos remarques.

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Une image des données partielles serai un plus car vous avez deux critères "Numéro de fiche" et "Numéro de série", je ne vois pas la raison pour laquelle cela ne fonctionne pas.
    Avez vous vérifié si toutes les lignes contenant vos données sont de même type que les critères, à l'aide de la fonction ESTNUM ou ESTTEXTE ?

    Sinon, ce serait peut-être plus simple de passer par POWER QUERY
    Dans mon premier message, j'ai présenté deux tableaux, le premier était un exemple restreint de ma table de données et le second mon tableau de critère, le critère est unique, il s'agit du "Numéro de série". @Philippe Tulliez voici une capture d'écran de mon tableau complet de donnée ainsi que mon tableau de critère qui sont à présent sur la même feuille de calcul (j'ai suivi la remarque de @Niagala) :

    Nom : Capture.JPG
Affichages : 124
Taille : 39,5 Ko

    @Philippe Tulliez, toutes les lignes contenant mes données et en particulier la colonne "Numéro de série" (C2:C4) sont de même type que le critère (J2), à savoir du texte.
    Je ne souhaite pas utiliser power query car la méthode filtreAvance1() est appelé depuis un userform.

    @jurassic pork, j'ai bien essayé votre conseil mais le filtre ne fonctionne plus du tout. Par exemple lorsqu'en J2 je mets <<="00123456789">>, le filtre ne sort aucun résultat alors qu'il devrait ressortir la fiche n°3.

    @Niagala, j'ai essayé mais le problème est le même malheureusement.

    En tout cas merci pour vos messages

    Je vais créer un fichier Excel "modèle" que je vais vous partager, peut-être plus simple de travailler sur le même document.

    Bonne journée à vous
    Images attachées Images attachées  

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour Niagala,
    Après avoir tenu compte des suggestions de Philippe Tulliez, il faut que rgDonnees et rgCritere soient sur la même feuille pourque le filtre puisse se faire.
    Je ne sais pas où vous avez lu dans cette discussion que j'aurais écrit qu'il faut mettre les critères et les données sur la même feuille.
    Les trois zones (source des données, critères, et exportation) peuvent parfaitement être sur des feuilles séparées.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 239
    Par défaut
    Hello
    Citation Envoyé par quent-fgx Voir le message
    @jurassic pork, j'ai bien essayé votre conseil mais le filtre ne fonctionne plus du tout. Par exemple lorsqu'en J2 je mets <<="00123456789">>, le filtre ne sort aucun résultat alors qu'il devrait ressortir la fiche n°3.
    Effectivement il faut mettre en fait :
    ="=00123456789"
    Using the equal sign to type text or a value

    Because the equal sign (=) is used to indicate a formula when you type text or a value in a cell, Excel evaluates what you type; however, this may cause unexpected filter results. To indicate an equality comparison operator for either text or a value, type the criteria as a string expression in the appropriate cell in the criteria range:
    =''= entry ''
    Where entry is the text or value you want to find. For example:
    What you type in the cell What Excel evaluates and displays
    ="=Davolio" =Davolio
    ="=3000" =3000
    Ami calmant, J.P

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations forums :
    Inscription : Octobre 2007
    Messages : 223
    Par défaut
    Citation Envoyé par quent-fgx Voir le message

    'Affectation des variables
    Set rgDonnees = Feuil4.Range("A1").CurrentRegion 'équivalent au 1er tableau exemple
    Set rgCritere = Feuil3.Range("Q3").CurrentRegion 'équivalent au 2nd tableau exemple
    Bonjour

    Après avoir tenu compte des suggestions de Philippe Tulliez, il faut que rgDonnees et rgCritere soient sur la même feuille pourque le filtre puisse se faire.

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations forums :
    Inscription : Octobre 2007
    Messages : 223
    Par défaut
    Bonjour Philippe Tulliez.
    Vous ne m'avez pas compris. Je veux dire que après avoir tenu compte de vos propositions de réponses, qu'il tienne aussi compte des miennes.

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

Discussions similaires

  1. [XL-2013] problème sur critère texte/numérique de SOMME.SI.ENS
    Par Pierre Dumas dans le forum Excel
    Réponses: 5
    Dernier message: 29/02/2016, 14h33
  2. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  3. [VBA-A] problème d'import de données texte
    Par David M dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/05/2006, 15h45
  4. [Flash Mx] Problème de contour texte
    Par tahiti bob dans le forum Flash
    Réponses: 13
    Dernier message: 12/03/2004, 13h52
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17

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