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 :

Problème fonction VLookup [XL-2007]


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
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut Problème fonction VLookup
    Bonjour à tous,

    Après de multiple recherches sur le forum, je n'arrive toujours pas à faire fonctionner cette fonction.

    J'ai une feuille "feuil1" que je copie à l'aide d'une macro dans le même classeur et que je nomme "copie". (cela fonctionne)

    Sur ces feuilles figurent 3 colonnes : fruit; date et mois.
    Sur le tableau de la feuille "copie" je souhaiterai écrire le nom d'un fruit tout en bas du tableau et qu'il recherche les informations "date" et "moi" le concernant dans la "feuil1".

    Pour cela, il suffit d'utiliser la fonction rechercheV soit Vlookup en VBA et la fonction formula pour que les cellules B8 et C8 ont cette formules inscrites.

    Exemple : Si j'écris "peche" sur la cellule A8 de la feuille "copie", la cellule B8 doit m'indiquer "01/02/2012" et la cellule C8 "janvier".

    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 Bouton1_Clic()
     
     
        Sheets("feuil1").Select
        Sheets("feuil1").Copy after:=Sheets("feuil1")
        Sheets("feuil1 (2)").Select
        Sheets("feuil1 (2)").Name = "copie"
     
        Application.EnableEvents = False ' => désactive les événements
     
        Set cellule = Range("B8")
        formule = Application.WorksheetFunction.VLookup(Sheets("copie").Range("A8").Value, Sheets("feuil1").Range("A2:C7"), 2, False) 'erreur sur cette ligne
        cellule.Formula = formule
     
    End Sub
    Merci pour vos réponses.

    Cordialement.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    J'ai renseigné la cellule A8 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
    Sub Bouton1_Clic()
     
     
        Sheets("feuil1").Select
        Sheets("feuil1").Copy after:=Sheets("feuil1")
        Sheets("feuil1 (2)").Select
        Sheets("feuil1 (2)").Name = "copie"
     
        Application.EnableEvents = False ' => désactive les événements
     
        Set cellule = ActiveSheet.Range("B8")
        ActiveSheet.Range("A8") = "peche"
        cellule.Formula = "=VLookup(""" & Sheets("copie").Range("A8").Value & """, Feuil1!A2:C7, 2, False)" 'erreur sur cette ligne
        Application.EnableEvents = True ' => active les événements
    End Sub
    Et en nettoyant un peu 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
    Sub Bouton1_Clic()
     
     
        Sheets("feuil1").Copy after:=Sheets("feuil1")
        Sheets("feuil1 (2)").Name = "copie"
     
        Application.EnableEvents = False ' => désactive les événements
        With Sheets("copie")
            Set cellule = .Range("B8")
            .Range("A8") = "peche"
            cellule.Formula = "=VLookup(""" & .Range("A8").Value & """, Feuil1!A2:C7, 2, False)"
        End With
        Application.EnableEvents = True ' => active les événements
    End Sub
    Je vais y arriver... Plus simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cellule.Formula = "=VLookup(A8, Feuil1!A2:C7, 2, False)"

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Merci beaucoup cela fonctionne,

    Toutefois à la place de mettre des valeurs fixe tel que "cellule" et "A8", j'aimerai lui dire de mettre les formules à la fin de la dernière cellule du tableau plus 6 cellules en dessous. J'ai réussi à créer le code mais il me bloque quelque part ==> Explication ci-dessous.

    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
    Sub Bouton1_Clic()
     
     
        Sheets("feuil1").Select
        Sheets("feuil1").Copy after:=Sheets("feuil1")
        Sheets("feuil1 (2)").Select
        Sheets("feuil1 (2)").Name = "copie"
     
        Application.EnableEvents = False ' => désactive les événements
     
        With Sheets("copie")
             m = Cells(Rows.Count, "B").End(xlUp).Row + 1
             p = Cells(Rows.Count, "B").End(xlUp).Row + 6
            '.Range(.Cells(m, 2), .Cells(p, 2)).Formula = "=VLookup(A8, Feuil1!A2:C7, 2, False)" 'ce code fonctionne avec A8
            .Range(.Cells(m, 2), .Cells(p, 2)).Formula = "=VLookup(.Range(.Cells(m, 1)), PLANNING!A4:B507, 2, False)" 'ce code ne fonctionne pas lorsque on remplace une cellule fixe (A8)
    End With
    End Sub
    Merci pour ta réponse
    Cordialement

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    1. Il faut que tu fasses une boucle sur les cellules, sinon, tu mets la même formule dans toutes les cellules (ou alors mettre une formule au format R1C1).
    2. Tu ne peux pas mettre une référence à une cellule ou une variable entre guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        With Sheets("copie")
             m = Cells(Rows.Count, "B").End(xlUp).Row + 1
            For i = m To m + 5
                .Cells(i, 2).Formula = "=VLookup(" & .Cells(i, 1).Address & ", PLANNING!A4:B507, 2, False)"
            Next i
        End With

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    C'est exactement sa, mille merci.

    Juste une dernière chose, comment fais tu pour pas qu'on voye les "N/A

    Encore merci pour tout.

    Cordialement.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            For i = m To m + 5
                .Cells(i, 2).Formula = "=if(" & .Cells(i, 1).Address & "="""","""",VLookup(" & _
                    .Cells(i, 1).Address & ", PLANNING!A4:B507, 2, False))"
            Next i

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

Discussions similaires

  1. [XL-2003] Problème Fonction VlookUp
    Par HankMoody dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/08/2012, 17h01
  2. [Toutes versions] Problème pour Coder la fonction vlookup/recherchev en VBA
    Par alexandra1989 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/02/2012, 19h54
  3. [XL-2003] Problème avec la fonction Vlookup
    Par CriCri98 dans le forum Excel
    Réponses: 9
    Dernier message: 19/08/2009, 17h41
  4. Problème avec la fonction "VLookup"
    Par Domino40 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/08/2008, 09h57
  5. Problème avec la fonction VLookup
    Par pinocchio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/07/2008, 11h59

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