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 :

Recherche de valeur dans une feuille et affichage dans une autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut Recherche de valeur dans une feuille et affichage dans une autre
    Bonjour à tous...
    Voici mon problème...
    Dans une feuille j'ai 2 colonnes :
    - DATE (jj/mm/aaaa)
    - VALEUR

    Dans la seconde feuille, j'ai déjà toutes les dates du mois donné : une par ligne.
    Dans la seconde feuille, il faut que je mette la valeur correspondante à la date dans la première feuille, sachant que dans la première feuille, toutes les dates ne sont pas présentes.
    Par exemple :
    Feuille 1 :
    01/01/2007 - 1111
    02/01/2007 - 2222
    07/01/2007 - 3333

    Feuille 2 :
    01/01/2007
    02/01/2007
    03/01/2007
    ...
    30/01/2007
    31/01/2007

    Dans la colonne B, il faut donc que je mette "1111" dans la ligne correspondante.

    Voila j'espère avoir été assea clair...

    En tous cas merci à tous, à l'avance, de votre aide...
    Zeb'...

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Une solution par formule, à placer dans la cellule B1 de la feuil2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTNA(RECHERCHEV(A1;Feuil1!$A$1:$B$3;2;0));"";RECHERCHEV(A1;Feuil1!$A$1:$B$3;2;0))
    puis tu étires vers la bas.
    $A$1:$B$3 correspond à la plage de données dans la Feuil1



    michel

  3. #3
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Merci de ta réponse,
    Je ne crois pas que la fonction RECHERCHEV soit utilisable en VBA et il me faut une solution VBA.
    Zeb'...

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.VLookup(Range("A1"), Range("B1:C5"), 2, False)
    Attention, la non correspondance renvoie une erreur 1004 !

  5. #5
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Syntaxe des 4 arguments :

    Arg1 : valeur à chercher
    Arg1 : zone de recherche (la recherche se fait toujours dans la 1° colonne et renvoie une autre colonne)
    Arg3 : N° de la colonne à renvoyer (commence à 1)
    Arg4 : Vrai si travail sur intervalle (première colone triée) Faux si recherche de valeurs exactes.

  6. #6
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Je vais tester, mais qu'est-ce que renvoie la fonction VLookUp ?
    Zeb'...

  7. #7
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Voici ce que je fais mais ça ne fonctionne pas :

    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
     
        Sheets(P_NomFeuille).Select
        WDerniereLigneFeuille = ActiveCell.SpecialCells(xlLastCell).Row
        WLigFeuille = 1
        On Error Resume Next
        While WLigFeuille <= WDerniereLigneFeuille
            Sheets(P_NomFeuille).Select
            WDateFeuille = Range("A" & WLigFeuille).Value
            WResultat = Application.WorksheetFunction.VLookup(WDateFeuille, 1, 2, False)
            Sheets("TEMP").Select
            If Not WResultat = Empty Then
                MsgBox WResultat
            Else
                If err = 1004 Then
                    WResultat = "0"
                End If
            End If
            WLigFeuille = WLigFeuille + 1
        Wend
    La date n'est jamais trouvé alors qu'elle existe bien.
    Zeb'...

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Application.WorksheetFunction.VLookup(WDateFeuille, 1, 2, False)
    Ou définis tu la plage de données sources?



    Ci joint une autre approche

    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
    Dim Ws1 As Worksheet, Ws2 As Worksheet
    Dim Cell As Range
    Dim i As Integer, v As Integer
     
    Set Ws1 = ThisWorkbook.Worksheets("Feuil1")
    Set Ws2 = ThisWorkbook.Worksheets("Feuil2")
     
    'Recherche le numero de la derniere ligne non vide
    'dans la colonne A de la Feuil2
    i = Ws2.Range("A1").SpecialCells(xlLastCell).Row
     
    'Boucle sur les cellules de la colonne A dans la Feuil2
    For Each Cell In Ws2.Range("A1:A" & i)
        On Error Resume Next
        'cherche la donnée dans la colonne A de la Feuil1
        v = Application.WorksheetFunction.Match(Cell, Ws1.Columns("A"), 0)
        On Error GoTo 0
     
        'Si la donnée est trouvée dans la Feuil1, on récupére le contenu
        'de la cellule sur la droite, et on l'inscrit dans la Feuil2
        If v <> 0 Then Cell.Offset(0, 1) = Ws1.Cells(v, 2)
        v = 0
    Next Cell

    michel

  9. #9
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Tout compte fait, j'ai choisi les boucles qui me semblaient plus pratique.
    Et puis, il est vrai que je n'ai pas réussit à mettre en place la fonction VLookUp.
    Merci encore à tous.
    Zeb'...

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

Discussions similaires

  1. rechercher une somme de données d'une feuille dans un classeur
    Par micky2013 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/04/2013, 00h58
  2. Réponses: 5
    Dernier message: 08/06/2011, 15h13
  3. problème d'affichage d'une feuille dans un classeur
    Par izarra2408 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/06/2008, 16h31
  4. [D6] Affichage d'une feuille Excel dans TProfGrid
    Par jstauffer dans le forum Composants VCL
    Réponses: 1
    Dernier message: 17/10/2007, 16h08
  5. Affichage d'une image après insertion dans une base
    Par leloup84 dans le forum Langage
    Réponses: 9
    Dernier message: 24/01/2006, 16h34

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