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 :

Code pour fonction personalisée RECHERCHEV inverse


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut Code pour fonction personalisée RECHERCHEV inverse
    Bonjour à tous,

    Je cherche à contourner la limite de la fonction RECHERCHEV, qui consiste à indiquer la position de la colonne dans laquelle se trouve la donnée recherchée vers la droite à partir de la première colonne de la zone designée dans la fonction.

    Par exemple avec la fonction RECHERCHEV normale:

    A B C
    1 poire verte a
    2 pomme rouge b
    3 raisin noir c
    4 banane jaune d

    si je fais =RECHERCHEV("pomme";$A$1:$C$4;3) ; la fonction me renverra b

    Avec la fonction RECHERCHEV inverse:

    A B C
    1 poire verte a
    2 pomme rouge b
    3 raisin noir c
    4 banane jaune d

    si je fais =RECHERCHEVinv ("b";$A$1:$C$4;3) ; la fonction me renverra pomme.

    C'est à dire que contrairement à la fonction RECHERCHEV qui recherche vers la droite; la fonction personnalisée RECHERCHEV inverse recherche vers la gauche.

    Aujourd'hui on peut déjà obtenir ce résultat en en recopiant la donnée recherchée vers la droite, mais c'est ce que je souhaite éviter avec cette fonction personnalisée.

    En vous remerciant pour votre aide.

    Cordialement

  2. #2
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    fais une recherche avec INDEX et EQUIV.

    Si tu veux, envoie un classeur sans donnée personnelle au format .ZIP

    cordialement

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    ci joint le classeur
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    voici un exemple à adapter à tes besoins

    si tu as besoin de pus d'info, n'hésite pas

    cordialement
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    Merci Fred pour cette solution; maintenant que tu m'as donné la base excel pour retrouver une donnée, je vais essayer de la convertir sous forme VBA afin de regrouper ces fonctions excel au sein d'une seule fonction personnalisée.

    ça sera un bon entraînement pour progresser.

  6. #6
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function RecherchePerso(Valeur As String) As String
    RecherchePerso = Application.Index(Range("Fruits"), Application.Match(Valeur, Range("Lettres"), 0)) & " " & _
       Application.Index(Range("Couleurs"), Application.Match(Valeur, Range("Lettres"), 0))
    End Function
    @+

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut
    un eu hors sujet peut-être, mais regarder ne fera sans doute aucun mal (quoique)
    A+

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    ça y est je viens enfin de finaliser cette fonction; ce fut laborieux mais ô combien instructif... enfin peux surement encore être améliorée (dans le code).

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Function RECHERCHEV2(matrice As Range, valeur As Variant, positionsearch As Integer, sens As Variant) As Variant
     
    Dim zone As Variant
     
    zone = matrice.Address
     
    celbas = Right(zone, (Len(zone) - Application.Search(":", zone)))
    celhaut = Left(zone, Application.Search(":", zone) - 1)
     
    colonnedroite = Range(Right(zone, (Len(zone) - Application.Search(":", zone)))).Column
    colonnegauche = Range(Left(zone, Application.Search(":", zone) - 1)).Column
     
    Dim i As Long, t As String
        For i = 1 To Len(celbas)
            t = Mid$(celbas, i, 1)
            If Asc(t) > 47 And Asc(t) < 58 Then lignebas = lignebas & t
        Next
     
        For i = 1 To Len(celhaut)
            t = Mid$(celhaut, i, 1)
            If Asc(t) > 47 And Asc(t) < 58 Then lignehaut = lignehaut & t
        Next
     
    If sens = -1 Then
    colonnetarget = Range(celbas).Offset(0, -(positionsearch - 1)).Column
    Else: colonnetarget = Range(celhaut).Offset(0, (positionsearch - 1)).Column
    End If
     
    adressegauche = Cells(lignehaut, colonnegauche).Address & ":" & Cells(lignebas, colonnegauche).Address
    adressedroite = Cells(lignehaut, colonnedroite).Address & ":" & Cells(lignebas, colonnedroite).Address
    Adressetarget = Cells(lignehaut, colonnetarget).Address & ":" & Cells(lignebas, colonnetarget).Address
     
    If sens = -1 Then
    Position_1ère_colonne = Range(adressedroite)
    Else: Position_1ère_colonne = Range(adressegauche)
    End If
     
    RECHERCHEV2 = Application.Index(Range(Adressetarget), Application.Match(valeur, Position_1ère_colonne, 0))
     
    End Function
    Pour utilisation

    matrice: zone à sélectionner
    valeur: la valeur recherchée
    positionsearch: numéro de la colonne dans laquelle se trouve la valeur renvoyée
    sens= indiquer 1 (ou 0) pour utiliser cette fonction telle qu'une fonction RECHERCHEV normale
    indiquer -1 pour en inverser le sens d'utilisation.

    voilà, voilà... des commentaires?

    PS: Fred j'ai décoché "question résolue", je la refermerai demain ou après demain.

Discussions similaires

  1. code pour fonction de projection
    Par masterinfo dans le forum Images
    Réponses: 2
    Dernier message: 30/07/2009, 14h23
  2. aide pour fonction recherchev
    Par jbertin9 dans le forum Excel
    Réponses: 2
    Dernier message: 05/02/2009, 11h18
  3. Réponses: 11
    Dernier message: 05/02/2008, 13h10
  4. Réponses: 3
    Dernier message: 29/01/2008, 12h04
  5. [Tableaux] demande de code pour une fonction.php
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2006, 17h22

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