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 :

RechercheV en VBA avec gestion des #N/A [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 227
    Par défaut RechercheV en VBA avec gestion des #N/A
    Bonjour,

    Je souhaite pouvoir gérer les valeurs non trouvées "#N/A" dans ma formule rechercheV en VBA et je bloque.

    Voici ma formule actuelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub RUN()
    Dim DerLig As Long
     With Sheets("Feuil1")
        DerLig = .UsedRange.Rows.Count
         .Range("L1:L" & DerLig).Value = WorksheetFunction.VLookup(.Range("C1:C" & DerLig).Value, Sheets("Feuil2").Range("A1:A" & DerLig, "B1:B" & DerLig), 2, False)
     End With
    End Sub
    J'ai essayé plusieurs tests notamment avec Iff(IsError( mais ça ne fonctionne pas.

    Je souhaite juste remplacer #N/A par "Non Trouvé".

    Pourriez-vous m'aider ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    déclare une variable Variant
    n'utilises pas Vlookup de la classe Worksheetfunction mais celle de l'objet application
    affecte à ce variant le résultat de la formule
    teste le type de la variable retournée
    si c'est une erreur, tu affiches "Non Trouvé" dans la cellule, si tu affiches le résultat de la variable

    exemple illustratif, j'ai fixé derlig à 10 arbitrairement et je travaille sur la feuille active, je te laisse adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ioi()
    Dim Resultat As Variant, Derlig As Long
    Derlig = 10
    Resultat = Application.VLookup("tonton", Range("A1:A10"), 1, False)
    If IsError(Resultat) Then Resultat = "non précisé"
    Range("B1") = Resultat
    End Sub

  3. #3
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut joe.levrai,

    Une petite question pour éclaire ma petite bougie.

    Quelle différence y a t'il entre Application.Vlookup et Application.WorksheetFunction.Vlookup ?

    De plus, dans l'explorateur d'objet, quand on va dans WorksheetFunction, on trouve bien le Vlookup. Par contre dans l'objet Application ... rien.

    Dans ce cas, comment savoir que le Vlookup de la classe Application est utilisable ?

    Merci pour de faire briller les étoiles sur les nuits de mon ignorance (c'est issue de ce proverbe chinois : "L'ignorance est la nuit de l'esprit, et cette nuit n'a ni lune ni étoiles")

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour jerome.vaussenat ,
    La différence entre Application. et Application.WorksheetFunction est la gestion d'erreur. Je ne sais pas très bien l'expliquer, mais en gros :
    • Si tu utilises WorksheetFunction, il faut gérer les erreurs avec On Error ...
    • Si tu utilises Application seulement, tu peux déclarer ta variable de renvoie comme Variant et tester avec IsError.

    Peut-être que joe.levrai saura donner plus de précisions !
    Dans ce cas, comment savoir que le Vlookup de la classe Application est utilisable ?
    En fait, tout ce qui existe après Application.WorksheetFunction existe aussi avec Application. Du coup, si tu veux travailler avec Application seulement et que tu ne te souviens plus trop des syntaxes, il suffit d'écrire ton instruction avec Application.WorksheetFunction, puis d'enlever WorksheetFunction

  5. #5
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    salut Riaolle,

    Merci d'avoir été ma lune. On verra si le soleil vient finir le travail !

    Mais je le note, je le note dans mes tablettes.

    Juste une question, Riaolle, çà à une signification. A chaque fois, je dois aller vérifier pour ne pas faire d'erreur en le saisissant

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    La documentation expliquant précisément les deux comportements est relativement pauvre.
    J'ai appris "sur le tas" (comme d'habitude) surtout au travers des exemples et explications de Marc-L.

    Worksheetfunction est une méthode de l'objet application, qui utilise les fonctions Excel. Une erreur dans l'évaluation de la fonction utilisée est impossible à neutraliser sans gestion d'erreur.

    En passant par l'objet Application (= le parent de Worksheetfunction), on évite de passer dans la classe et en cas d'erreur d'évaluation, on peut récupérer un "objet Error", d'où le fait de toujours tester le retour avec un Variant et de regarder ce qu'il contient ensuite.

    Je ne suis pas expert pointu, mais je pense que la classe Worksheetfunction ne sait pas renvoyer un objet erreur, ce qui génère l'erreur d'exécution

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Recherchev
    Bonjour à vous, bonjour au forum,

    Si je peux me permettre.

    Pour ma pat, je n'apprécie pas cette fonction VLOOKUP.
    Ce à cause de ses contraintes (sauf erreur, 1ère colonne de matrice et tri ce cette colonne).

    Je proposerais volontiers les méthodes pour la valeur cherchée, et pour la valeur retournée.
    Voir l'aide en ligne de la méthode Un retour de valeur "Non trouvé" peut alors être envisagé si Revenir si nécessaire.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/04/2012, 13h53
  2. [VBA-E] Gestion des dates selon format de départ
    Par Gamal le Celte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/02/2007, 14h41
  3. Réponses: 8
    Dernier message: 15/10/2006, 18h45
  4. [VBA-E] GEstion des shapes
    Par Grokouik_13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2006, 10h49
  5. [VBA-E] gestion des fichiers ouverts ...
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 20/01/2006, 17h10

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