Problème de syntaxe avec la fonction vlookup

Résolu
Keufi -  
 le père -
Bonjour,

J'ai un problème de syntaxe pour la ligne de code suivante:

ActiveCell.Formula = "=VLookup(ActiveCell.Offset(-1, 0).Value, Range("AV:AX" & Range("AX65536").end(xlup).row)), 3, FAUX)

Quelqu'un saurait-il ou se situe mon erreur?

Merci
Configuration: Windows XP Internet Explorer 7.0

12 réponses

  1. le père
     
    De rien :)
    2
  2. le père
     
    Bonjour

    Tu écris une formule entourée de ", il faut doubler tous les " qui sont à l'intérieur de la formule
    0
  3. Keufi
     
    Merci le père

    je n'ai plus de pb de syntaxe mais par contre une erreur 1004 "Erreur définie par l'application ou par l'objet" survient sur la même ligne activecell.formula...

    Voici mon code complet:

    Sub EURIBOR()
    Dim cpt As Long
    Dim i As Long
    Dim longueur As Long

    Sheets("Crédits CMB").Activate
    Range("W13").Select

    Set cellules = Range(Selection, Selection.End(xlToRight))
    longueur = cellules.Count
    For i = 1 To longueur

    ActiveCell.Formula = "=VLookup(ActiveCell.Offset(-1, 0).Value, Range(""AV:AX"" & Range(""AX65536"").end(xlup).row)), 3, FAUX)"
    ActiveCell.Offset(0, 1).Select
    Next i

    End Sub

    Quelqu'un arrive à voir ce qui cloche?

    Merci
    0
  4. le père
     
    Je ne m'y connais pas en VBA, mais il me semble que dans ton instruction tu mets une formule dans une cellule. Or "ActiveCell.Offset(-1, 0).Value", c'est du VB, pas de la syntaxe des formules excel. Il faudrait le convertir en quelque chose du genre "A2" ou "C3", calculé en fonction de la cellule active. Comme ce que tu mettrais si tu écrivais ta formule à la main.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Keufi
     
    Ah il doit bien y avoir un moyen de ne pas passer par une cellule fixe. Je souhaite réaliser une boucle donc c vraiment indispensable que la valeur recherchée soit variable
    0
  7. le père
     
    Je m'aperçois que le même problème est présent un peu partout dans ta formule ...Tu utilises des Range qui sont du langage VB à un endroit où tu devrais avoir des références de cellules. J'essaye de déterminer une expression
    0
  8. Keufi
     
    Merci pour ton aide, je débute sur vba...
    0
  9. le père
     
    ....Formula = "=VLookup(" & ActiveCell.Offset(-1, 0).Value & ", ""AV1:AX" & Range("AX65536").End(xlUp).Row & """, 3, FAUX)"
    Ça ne doit pas être trop loin de la vérité
    0
  10. Keufi
     
    En effet, la macro s'éxecute bien mais elle me renvoie #Valeurs dans les cellules supposées contenir les valeurs recherchées...

    Je pense que tu brûles mais c pas encore ca, en tout merci pour ton temps le père, je vais essayer de chercher une solution, si tu vois ce qui peut clocher, je suis à l'écoute!
    0
  11. le père
     
    Regarde dans la feuille excel quelles sont les formules effectivement générées, et compare avec celles que tu voulais. ça devrait te donner les corrections à faire
    0
    1. Keufi
       
      Bonjour le père,

      J'ai l'impression que c'est une question de format. Les valeurs que je recherche sont des dates et avec ta formule, quand je lance la macro, les valeurs recherchées s'incrémentent 'en dur', provoquant ainsi l'erreur #N/A...

      Aurais-tu une solution?

      Merci
      0
  12. le père
     
    J'ai fait des essais, il y a quelques problèmes dans la formule. (il faut FALSE et non pas FAUX, et pas de " autour de la plage de recherche)
    Si la valeur cherchée est du type date, la recherche marche bien en convertissant la date en double :
    ....Formula = "=VLookup(" & CDbl(ActiveCell.Offset(-1, 0).Value) & ", AV1:AX" & Range("AX65536").End(xlUp).Row & ", 3, FALSE)"
    0
  13. Keufi
     
    Merci énormément pour ton aide le père, la formule marche parfaitement!!!

    You're the King!
    0