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 :

Rechercher une valeur dans une colonne fonctionne pas avec formule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut Rechercher une valeur dans une colonne fonctionne pas avec formule
    Bonjour à tous,

    J'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With wbExcel.Sheets(NOM_FEUILLE)
        Set a = .Range("C:C").Find(p_nom_court_appli, lookat:=xlWhole)
    Mon problème est que j'ai dans p_nom_court_appli par exemple TOTO. il ne me le trouve pas car mes données dans la colonne C dont des formules.
    Pour tester j'ai copié la colonne C en D en faisant une copie spéciale valeurs.
    Et si je fais ma recherche dans la colonne D, ca fonctionne mais je ne veux pas devoir faire cette manipulation .
    Les formules affichent bien les bon résultats, mais le Find semble se baser sur le texte de la formule et non pas le résultat de celle ci.

    Des idées, conseils.
    Merci @+

  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,
    Si "Toto" est la valeur renvoyée par une formule, chez moi, votre code me renvoie bien l'objet Range

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub t()
     Dim a As Range
     With ActiveSheet
        Set a = .Range("C:C").Find("Toto", lookat:=xlWhole)
        Debug.Print a.Address
     End With
    End Sub
    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 éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut
    OK, mais chez moi ca ne marche pas, mince,
    et je viens de faire un Ctrl +F pour chercher TOTO dans ma feuille et il ne me le trouve que dans la colonne D que j'ai copiée en valeur .
    Je suis sous windows 11 ... et office 365
    Je viens de refaire un test dans un autre fichier pour être sur que ça ne vient pas du fichier et idem, cf pièce jointe, ça ne marche pas chez moi.


    Je désespère.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    J'ai testé et ça ne marche pas chez moi non plus, sauf si je remplace lookat:=xlWhole par lookat:=xlPart.

  5. #5
    Membre éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut
    Salut, dans le fichier de test c'est OK avec ton code mais sur mon projet réel, c'est toujours raté:

    J'ai fait un copier de la cellule en question et un coller valeur dans une autre cellule pour voir si je n'ai pas un caractère spécial ou un truc caché, ...
    J'ai ensuite repris la valeur et je l'ai copiée dans notepad ++ et il n'y a que ma chaine de caractères.

    Je sèche.

  6. #6
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut
    Salut
    Sauf erreur TOTO est calculé ! Donc au lieu d'utiliser LookIn:=xlValues faudrait-il utiliser LookIn:=xlFormulas
    Et si TOTO est présent plusieurs fois dans la colonne peut-être faudra-t-il utiliser FindNext() !

  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,
    Je confirme que si "Toto" est une valeur renvoyée par une formule, l'argument nommé LookIn avec comme valeur la constante xlValues et avec comme valeur à l'argument nommé lookat, xlWhole, cela fonctionne.

    En revanche si la valeur renvoyée par la formule est "La tête à Toto", là, il faudra mettre comme valeur, la constante xlPart et peut être également ajouter l'argument nommé MatchCase avec comme valeur True si l'on souhaite la sensibilité à la casse.

    Cependant, il faut être prudent avec cette méthode car elle conserve la valeur des arguments LookIn, LookAt, SearchOrder et MatchByte lors de la recherche précédente, comme c'est expliqué dans l'aide Range.Find method (Excel)

    [EDIT]
    @ hyperion13
    Sauf erreur TOTO est calculé ! Donc au lieu d'utiliser LookIn:=xlValues faudrait-il utiliser LookIn:=xlFormulas
    On utilise la constante xlFormulas si l'on doit chercher "Toto" utilisé comme constante de la formule (Exemple : =RECHERCHEV("Toto";Tableau1;2;FAUX))
    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

Discussions similaires

  1. Rechercher une valeur dans une colonne fonctionne pas
    Par bartimeus35 dans le forum VBA Access
    Réponses: 5
    Dernier message: 15/06/2023, 14h42
  2. [LibreOffice][Tableur] recherche de valeur dans plusieurs colonnes
    Par boboss123 dans le forum OpenOffice & LibreOffice
    Réponses: 9
    Dernier message: 25/05/2016, 11h02
  3. [XL-2010] Somme sur une recherche de valeur dans plusieurs colonnes
    Par Marmouz dans le forum Excel
    Réponses: 2
    Dernier message: 21/01/2012, 15h06
  4. Réponses: 4
    Dernier message: 18/12/2009, 13h44
  5. Recherche d'une valeur dans plusieurs colonnes
    Par Arnaud F. dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2009, 11h44

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