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 avec condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 29
    Par défaut Vlookup avec condition
    Bonjour à tous,

    je voudrais à l'aide d'une rechercheV, partir d'une cellule et si celle-ci ce trouve être dans une plage de cellules dans un autre onglet alors il me met la cellule en gras.

    mais j'ai un souci avec la recherchev.

    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
    Sub Devise_A_traiter()
    Dim i As Integer
     
    Worksheets("Import").Activate
     
        For i = 2 To 20
     
            If Worksheets("Import").Range("G" & i).Value = Application.WorksheetFunction.VLookup(Worksheets("Import").Range("A" & i), Worksheets("Menu").Range("O5:O7"), 2, 0).Value Then
                With Worksheets("Import").Range("G" & i)
                    .Select
                    .Selection.Font.Bold = True
                    End With
                End If
        Next i
    End Sub
    Pourriez vous m'aiguiller ?

    Meci bien

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    à défaut d'une explication claire et détaillée tant sur le contexte comme pour le souci rencontré,
    n'étant pas sur un forum de divination !     Cf règles de ce forum …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 29
    Par défaut
    Désole j'avoue que ce n'est pas très clair.

    en fait je veux que dans mon classeur sur ma feuille j'ai un tableau n1
    date devise à traiter
    13/05 USD
    14/05 EUR

    et dans une autre feuille j'ai un autre tableau officiel tableau n2 avec
    date devise Fermée
    13/05 USD - RON - GBP
    14/05 EUR - HUF

    ces tableaux sont sur deux feuilles différentes.
    et j'aurai besoin de faire une rechercheV à partir du tableau n1 pour qu'il me grise la cellule en fonction si dans le tableau n2 la devise est fermé en fonction de date.

    j'espère que c'est plus clair. :/

  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,

    Attention VLookUp retourne la valeur de la cellule, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.VLookup("13/05", Worksheets("Menu").Range("O5:O7"), 2, 0)
    1. Retourne une valeur et pas une cellule --> donc pas de .Value
    2. Renvoie "USD - RON - GBP" et pas seulement "USD" donc ta condition n'est pas vérifiée.

    Tu peux peut-être utiliser la combinaiseon de VLookUp et de l'opérateur Like.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Application.VLookup(Worksheets("Import").Range("A" & i), Worksheets("Menu").Range("O5:O7"), 2, 0) Like "*" & Worksheets("Import").Range("G" & i).Value & "*" Then 
    '...
    Je ne garantie pas le résultat, mais à essayer

    Autre commentaire : évit d'utiliser Select/Slection/Activate/ActiveSHeet... très souvent ça ne sert à rien et ç a entraîne des problèmes difficilement repérables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("Import").Range("G" & i)
                    .Select
                    .Selection.Font.Bold = True
    End With

    4 lignes --> 1 ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Import").Range("G" & i).Font.Bold = True
    Et pas besoin du Worksheets("Import").Activate au début du code

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 29
    Par défaut
    Merci bien pour ton commentaire, tu as complètement raison.
    Avec l'outil like ça ne fonction pas.

    Mais est ce que tu penses si j'utilise l'outil .find tel que si la date de la première ligne du tableau 1 est = a la date de la première ligne du tableau 2 alors il fait une recherche de la devise dans la cellule du tableau 2 et si c'est vrai il me grise la ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub M()
    Dim i As Integer
     
    For i = 2 To 30
            If Worksheets("Import").Range("A" + i).Value = Worksheets("Menu").Range("O5").Value Then
                If Worksheets("Menu").Range("O5").Find(what:=Worksheets("Import").Range("G" & i).Value, LookIn:=xlValues, lookAt:=xlPart) = True Then
                Worksheets("Import").Range("G" & i).Font.Bold = True
                End If
            End If
    Next i
    End Sub

  6. #6
    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
    Ce que tu peux faire avec Application.Match et Application.Search :
    1. Trouver la ligne où se situe la date voulue grâce à Application.Match
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Dim i As Variant
      i = Application.Match("toto", Range("A:A"), 0)
      i vaut la ligne sur laquelle on trouve "toto" en colonne A. Si on ne trouve pas "toto" i est une erreur. On peut donc vérifier qu'on trouve bien la date en posant une condition avec IsError :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If Not IsError(i) Then '...
    2. Vérifier si on trouve la devise dans la cellule voulue de cette ligne i (ligne i, colonne B?) avec Application.Search
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Dim j As Variant
      j = Application.Search("USD", Cells(i, 2))
      j vaut la position de "USD" dans la cellule. Si on ne trouve pas "USD" j est une erreur. On peut donc vérifier qu'on trouve bien la date en posant une condition avec IsError :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If Not IsError(j) Then '...

    Ca devrait pouvoir s'adapter avec Find aussi (Match & Find), mais je pense que Search est plus adaptée ici.

    Ca m'a donné envie de manger du brownie ton pseudo ...

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

Discussions similaires

  1. Pb vlookUp avec condition en VBA
    Par PJ_VBA dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/08/2012, 20h12
  2. vlookup avec condition.
    Par pradaseven dans le forum Excel
    Réponses: 3
    Dernier message: 07/06/2011, 13h32
  3. ALTER VIEW avec condition
    Par yan77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/04/2004, 17h22
  4. Index avec conditions
    Par marhnix dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/03/2004, 10h48
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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