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 :

vlookup sur 2 champs


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 0
    Points
    0
    Par défaut vlookup sur 2 champs
    Bjr les experts,
    Je cherche le code VBA qui me permet de faire un vlookup sur 2 champs. Dans mon exemple ci-joint je voudrais ramener dans mon onglet « Recap » le matériel correspondant qui se trouve dans l’onglet « Mat ». Il faudrait que le numéro du document et le numéro de la ligne soient identiques dans « Recap » et « Mat » pour ramener le « matériel » dans la colonne C de « Recap ».
    Merci d’avance de votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir

    Ci-joint une proposition d'une fonction personnalisée à mettre dans un module standard
    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
    'Crit1: premier critère (colonne Docuement)
    'Crit2: deuxième critère (colonne Ligne)
    'Plage: Colonne de recherche du premier critère (dans ton exemple colonne A de la feuille Mat
     
    Public Function RechMulti(ByVal Crit1 As String, ByVal Crit2 As String, ByVal Plage As Range) As String
    Dim Prem As String, Res As String
    Dim Trouve As Boolean
    Dim c As Range
     
    With Plage
        Set c = .Find(Crit1, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Prem = c.Address
            Do
                If c.Offset(0, 1) = Crit2 Then
                    Res = c.Offset(0, 2)
                    Trouve = True
                End If
                Set c = .FindNext(c)
                If Trouve Or c Is Nothing Then Exit Do
            Loop While c.Address <> Prem
        End If
    End With
    RechMulti = Res
    End Function
    La fonction peut être appelée directement dans la feuille Recap comme ceci en C2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechMulti(A2;B2;Mat!$A$2:$A$5)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Merci Mercatoq! j'ai ajouté le code dans un module, mais quand j'insert la fonction =RechMulti(A2;B2;Mat!$A$2:$A$5) dans la cellule C2, j’obtiens un #VALUE!
    Comment je peux le résoudre ? Merci d’avance !

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Sur ton fichier mis en PJ dans ton post initial, j'avais testé sans problème.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    J'ai insérais un module et fais un copier /coller du code. Est-ce qu’il y’avait autre chose à faire au préalable ? J’ai ensuite copié la formule dans la cellule C2

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Il faudrait adapter la formule que tu as copié en C2 par rapport à ton fichier!
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41
  2. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55
  3. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23
  4. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  5. [VB6] Zone de liste modifiable basée sur un champ
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/11/2002, 13h41

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