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 :

Fonction RechercheV en vba avec un appel d'un nom défini [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Fonction RechercheV en vba avec un appel d'un nom défini
    Bonjour,
    Je ne suis pas un pro de la programmation en VBA sous Excel.
    Je me suis mis à ce loisir dans le cadre d'un développement de projet personnel.

    J'ai un tableau de bord où plusieurs matrices sont renseignées dans différentes feuilles et après un certain nombre de calculs intermédiaires, un résultat apparait dans une feuille dédiée pour un utilisateur X.

    J'ai donc dû me mettre à la "programmation" de petites macros et la création de fonctions.
    J'ai souhaité créer un fonction type RechercheV avec une seule donnée d'entrée la valeur recherchée.

    Après avoir investigué différents forums ou supports, je suis arrivé à écrire la fonction suivante:

    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
    Function VLookUpForm(ByVal ValeurRecherchee) As Double
     
    Range("TableDeRecherche").Select
     
    Dim NbLignes As Integer
    NbLignes = Range("TableDeRecherche").Rows.Count
     
    For i = 1 To NbLignes
        If Range("TableDeRecherche")(i, 1).Value = ValeurRecherchee.Value Then
            VLookUpForm = Range("TableDeRecherche")(i, 2).Value
            GoTo FinDeRecherche
        End If
    Next i
     
    FinDeRecherche:
     
    End Function
    Grâce à l'outil "Définir un nom", j'ai créé "TableDeRecherche" pour cibler ma matrice de valeurs.
    Au début de mes tests, la matrice et la valeur recherchée étaient sur la même feuille. Tout fonctionnait bien.
    J'ai donc souhaité passer à l'étape supérieure.
    Dans mon classeur final, ma matrice et la valeur recherchée ne sont pas sur la même feuille.
    J'ai donc simulé cette réalité dans mon fichier test.

    Il s'avère que ma fonction ne marche plus. Elle me renvoit "#Valeur!"
    J'ai vérifié que ma définition de nom TableDeRecherche soit sur tout le classeur.
    J'ai tenté également de faire activer la feuille où se trouvait ma matrice.
    Après un petit moment, aucune piste sérieuse ne m'est apparue.

    Je suis revenue à utilisation temporaire de la fonction recherchev avec toutes ses entrées le temps de trouver une solution.

    Je m'adresse à vous en espérant que vous pourrez m'aider.
    Je vous en remercie par avance.

    EssorNum

  2. #2
    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
    Bonjour,

    sans aller plus loin j'aurais enlevé ce Select .... l'instruction Select est rarement utile, si ce n'est pour faire une animation visuelle en déplaçant le curseur..

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tu n'indiques pas si tu utilises cette fonction comme fonction personnelle dans Excel.
    Voici une procédure qui fait exactement la même chose que RECHERCHEV avec valeur exacte et qui fonctionne parfaitement.
    Dans cet exemple, le deuxième argument est optionnel et envoi le contenu de la deuxième colonne par défaut. Je n'ai pas gérer l'erreur et donc la fonction renvoie #VALEUR si la valeur cherchée n'est pas trouvée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function VlookUpForm(ValeurCherchee As Range, Optional ColNumber As Integer = 2)
     Dim fn As WorksheetFunction
     Set fn = Application.WorksheetFunction
     VlookUpForm = fn.VLookup(ValeurCherchee , Range("TableRecherche"), ColNumber, False)
    End Function
    Elle s'utilise dans excel comme ceci
    ou
    Inutile de dire qu'elle n'a aucune raison d'exister puisqu'on peut faire exactement la même chose avec la formule native d'excel RECHERCHEV

    Petit rappel : Dans une fonction personnalisée, on peux pas utiliser la méthode SELECT ni toute autre action telle que l'écriture dans une cellule.
    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

  4. #4
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour ce code.
    J'ai pu l'incorporer après quelques légères modifications pour ma philosophie de cas et ça fonctionne très bien.

    Bonne journée à tous.

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

Discussions similaires

  1. la fonction RECHERCHEV en VBA
    Par a.ouguerzam dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/11/2014, 10h16
  2. [XL-2010] RECHERCHEV en VBA avec index differé
    Par jslpfasc2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/03/2014, 09h57
  3. Insérer la fonction RechercheV dans VBA
    Par thaveau dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/10/2013, 17h34
  4. [XL-2010] Fonction Chr() dans VBA avec Excel 2010
    Par Frenchie_lol dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/06/2010, 22h20
  5. [VBA-E]Etablir une macro d'une fonction rechercheV
    Par dani317 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2005, 11h06

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