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-E]Problème avec la fonction Find


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut [VBA-E]Problème avec la fonction Find
    Re-bonjour !

    Je rencontre un p'tit problème avec Find .... Voilà la situation :
    J'ai un tableau avec de multiples colonnes dont une "Date" et une "Pays". (Ce tableau est rempli par quelques 10 000 lignes.) Pour un ligne donnée, je me sers du champ "Date" pour obtenir une adresse de cellule dans un autre tableau comportant lui aussi une catégorie "Date", de même avec "Pays".

    Tout marche bien pour la recherche sur les dates avec Find : (je tape de mémoire ... mais ça doit être ça)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set CellDate = Range("....").Find(date)
    Je fais pareil avec les pays

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set CellPays = Range("....").Find(pays)
    Et là ça marche pas .... Aucun résultat trouvé. Alors que la recherche devrait en trouver ! Un problème avec les formats de cellule ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    up ....

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    cela vient peu être des .... ( ou des caractéres qu'ils remplace ) ...

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par bbil
    cela vient peu être des .... ( ou des caractéres qu'ils remplace ) ...
    Les "..." remplacent des plages que j'ai oublié Mais j'ai essayé en remplaçant tous les pays par des chiffres et ça marche ....

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Plus probable que ce soit un probleme de range ou de variable Pays...
    N'oubliez pas de mettre le

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Vesta
    Plus probable que ce soit un probleme de range ou de variable Pays...
    de range non : l'essai fait sur la même plage mais en changeant les données à rechercher fonctionne.
    de variable peut-être .... en recherchant un chiffre ça marche. Mais en recherchant directement du texte "Maroc" (au lieu de Maroc contenu dans Pays) ça marche pas

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Je viens de tester ca :

    12 fae fzz efzeaf 1332 AR3 faez 1234 afezf AZ Maroc zef aezf af aze zef

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set CellChiffre = Range("A1:D4").Find(1234)
    Set CellPays = Range("A1:D4").Find("Maroc")
    et ca marche...
    N'oubliez pas de mettre le

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    et si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pays = "Maroc"
    Set CellPays = Range("A1:D4").Find(pays)
    ?

    en fait vais tester j'ai excel ici aussi ....

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    realise tu? d'autre recherche manuelle ... ou par code VBA dans ton classeur ...voir aide en ligne excel :

    Citation Envoyé par Aide en ligne Find..
    Remarques
    Les paramètres des arguments LookIn, LookAt, SearchOrder et MatchByte sont enregistrés chaque fois que vous utilisez cette méthode. Si vous ne spécifiez aucun paramètre pour ces arguments lors du prochain appel de la méthode, les paramètres enregistrés sont utilisés. Le fait de définir les paramètres de ces arguments modifie les paramètres de la boîte de dialogue Rechercher, ce qui a pour effet de changer les paramètres enregistrés qui sont utilisés lorsque vous ne spécifiez pas les arguments. Pour éviter toute ambiguïté, définissez ces arguments de façon explicite chaque fois que vous utilisez cette méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set CellPays = Range("....").Find(pays, , xlValues, xlPart)

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    J'ai testé aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pays = "Maroc"
    Set CellPays = Range("A1:D4").Find(pays)

    Essaie peu être de faire un au dessus...

    Vérifie aussi le contenu de la variable pays juste avant de faire le find juste au cas ou
    N'oubliez pas de mettre le

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    j'ai tenu compte des paramètres dans mon code : je ne les ai pas retapés ici mais ils y sont et sont identiques pour les deux recherches ....

    j'ai fait la vérif de pays avant le find et j'ai meme fait afficher la cellule où "Maroc" était ....
    Résultat :
    les 2 donnent

  12. #12
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Bien sûr chez moi tout marche .... :-/

    Un problème de format de cellules p'tet ?

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé !!

    Après étude approfondie il s'avère qu'en fait certains des champs "Pays" contenaient des espaces .... "Maroc " au lieu de "Maroc" par exemple ...

    Donc forcément la recherche ne trouvait pas. Par contre je n'ai pas réussi à trouver de fonction en VB qui enlève ces espaces donc j'ai du le faire à la main mais ma solution n'est pas terrible : Je regarde le dernier élément de la chaine et si c'est un espace, je l'enlève. Le pb c'est que je n'ai pas non plus de fonction VB pour connaitre le nb de caracs de la chaine ... Je prends donc 50 caracs et je descends. Après si le nom de pays est plus grand que 50 caracs j'ai perdu

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu as l'option lookAt
    LookAt Argument de type Variant facultatif. Il peut s'agir de l'une des constantes XlLookAt suivantes : xlPart ou xlWhole.

  15. #15
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    arg ! merci ! j'avais oublié ça !

  16. #16
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Après réflexion non ça ne marchera pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XlLookAt : xlPart  ou xlWhole
    c'est fait pour les cellules où l'on recherche. Or moi les espaces en trop sont dans le texte à rechercher.
    Je m'explique :

    J'ai une cellule "Maroc" et je recherche "Maroc " donc le fait de chercher "Maroc " dans tout ou partie de la cellule ne changera rien. L'inverse aurait fonctionné : "Maroc" est bien inclus dans "Maroc ". Problème non résolu donc ....

  17. #17
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    et bien enléve les ces espaces en trop... voir fonction Trim...

  18. #18
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    RTrim a fait mon bonheur ... Merci !

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

Discussions similaires

  1. Problème avec la fonction Find
    Par kyros21 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/01/2013, 13h50
  2. problème avec la fonction Find et un passage en argument
    Par paiva44 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2009, 18h56
  3. [E - 03] Problème avec la fonction Find
    Par documentation dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/02/2009, 17h54
  4. [VBA-E]Problème avec la fonction [B]LIKE[/B]
    Par srame dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 23/04/2007, 14h53
  5. [VBA-E] problème avec la fonction print#
    Par phoon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2006, 09h51

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