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 :

Insérer MsgBox si valeur recherchée n'est pas écrite correctement [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Par défaut Insérer MsgBox si valeur recherchée n'est pas écrite correctement
    Bonjour,

    J'ai une question sur la fonction Find, fonction qui m'est très pratique dans le cadre où je fais des inscriptions et la fonction Find me sert à retrouver rapidement un nom.

    Cependant, lorsque l'on ne tape pas la valeur exacte qui se trouve dans la colonne à rechercher, il met le message d'erreur suivant :
    Erreur d'éxécution '91' : Variable objet ou variable de bloc With non définie.

    Comment permettre à la recherche d'afficher par exemple un MsgBox si le mot recherché ne se trouve pas dans la colonne (ou alors qu'il y a une syntaxe différente).
    Pour le MsgBox, par exemple on pourrait avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox = "La valeur recherchée ne se situe pas dans le tableau"
    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Set MyRange = Range("MaValeurCherchée")
         'Nom de ma case de recherche
    Set x = Sheets(1).Range("A:A").Find(MyRange.Value, , xlValues, xlWhole, , , False)
         'Recherche dans la colonne A:A
    If Not x Is Nothing Then Range(x.Address).Select
         'Place le curseur sur la valeur retrouvée
    Ce code est bon mais si j'ai le malheur de taper par exemple : "Chloe" ou "Cloé" au lieu de "Chloé", le message d'erreur précédent s'affiche.

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 905
    Par défaut
    Bonjour,

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set MyRange = Range("MaValeurCherchée")
         'Nom de ma case de recherche
    set x = nothing
    On error resume next
    Set x = Sheets(1).Range("A:A").Find(MyRange.Value, , xlValues, xlWhole, , , False)
    on error goto 0
         'Recherche dans la colonne A:A
    If Not x Is Nothing Then Range(x.Address).Select
         'Place le curseur sur la valeur retrouvée
    Tu initialises ta variable de résultat à Nothing (tjrs bon de le faire) et ton on error resume next passe à la suite si le résultat n'est pas trouvé.

    Cordialement,

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Par défaut
    Merci.

    Ca fonctionne en effet, mais je n'arrive pas à caser mon MsgBox sans que la macro plante par le message suivant :
    Erreur de compilation :
    Un appel de fonction dans partie gauche de l'affectation doit renvoyer Variant ou Object.
    Merci.

  4. #4
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 905
    Par défaut
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Not x Is Nothing Then 
        Range(x.Address).Select
    else
        msgbox "Erreur ici"
    end if
    Cordialement,

    Edit : D'ailleurs, pourquoi avoir mis un "=" sur ton msgbox ? Il n'y a rien de tel à faire pour un msgbox...

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

Discussions similaires

  1. La valeur récupérée n'est pas celle insérée (collection)
    Par wassim_boy dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 04/01/2012, 06h12
  2. La somme de valeurs numeriques n'est pas celle que j'attends.
    Par jeanphi45 dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 02/04/2010, 17h19
  3. Réponses: 0
    Dernier message: 09/09/2009, 22h06
  4. [XHTML 1.0] Insérer un élément permanent(qui n'est pas rafraîchi) sur mon site sans frames
    Par DarkSoul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 24/02/2009, 16h38
  5. Trouver une valeur qui n'est pas dans un champ
    Par eric41 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2006, 16h48

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