Traduire une recherchev dans vba

Mag55 -  
Mag555 Messages postés 3 Statut Membre -
Bonjour,

J'aimerais pouvoir lancer la formule suivante dans vba:

Selection.Formula = RECHERCHEV(activecell.Offset(0,-1);'[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(C$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;2;"faux")

Est-ce techniquement faisable?? Car j'ai à la fois besoin de notions propres à VBA (comme activecell par exemple) et des notions propres à excel (comme la recherchev)

Merci d'avance

Et d'avance encore, un très bon week end

1 réponse

  1. Mag555 Messages postés 3 Statut Membre
     
    Devrais-je en conclure que ce n'est pas faisable?!
    0
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Bonjour,

      essayer en remplaçant Select.Formula par Select.FormulaLocal

      Le FormulaLocal doit vous permettre d'écrire la formule dans votre langue (exemple français) au lieu d'écrire en anglais.

      Cordialement.
      0
    2. Mag555 Messages postés 3 Statut Membre
       
      Ok je comprends bien mais comment traduire alors "activecell" ?

      Merci d'avance
      Plus j'avance, plus j'ai des noeuds..
      0
    3. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Il me semble que le activecell.Offset(0,-1) se remplace par RC[-1].
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      1- dans excel, sans VBA, elle fonctionne cette formule?

      rien que le début ça m'étonnerais... :
      RECHERCHEV(activecell.Offset(0,-1);'[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q)

      Syntaxe de RECHERCHEV :
      RECHERCHEV(Quoi?;ou?;NbreCol?;VRAI-FAUX)

      Donc dans ton cas :
      Quoi = activecell.Offset(0,-1) --> OK pour moi
      ou = [ETP 2011-06.xls]TB-EFFMO'!$A:$A (classeur ETP 2011-06.xls, Feuille TB-EFFMO, colonne A) ---> OK pour moi
      Nbre de col = $B14 --> pourquoi pas si B14 contient un chiffre (1, 2, 3 etc...)
      VRAI-FAUX = [ETP 2011-06.xls]TB-EFFMO'!$Q:$Q) ---> La j'ai un doute! Un gros doute...

      2- En VBA les ";" des formules excel doivent être remplacés par des ","

      3- Il convient d'utiliser l'anglais pour traduire, en VBA, les formules d'excel :
      RECHERCHEV = VLOOKUP
      SI = IF
      FAUX = False
      Voir cette excellentissime et magnifique astuce

      4 -si tu veux intégrer des variables (activeCell.Offset(0, -1) par exemple) dans une formule excel ça n'est pas de tout repos.... exemple :
      ActiveCell.Formula = "=IF(" & ActiveCell.Offset(0, 1) & ">" & ActiveCell.Offset(0, 2) & ",True, False)"
      le problème de activecell dans une Formula est qu'il ne va pas t'inscrire l'adresse de la cellule (ex : A1), mais sa valeur... Donc dans l'état avec ma petite formule SI ci-dessus, dans ta cellule tu va voir :
      =SI(2>1;"VRAI";"FAUX")
      Si tu veux obtenir =SI(A2>A3;"VRAI";"FAUX) tu dois écrire :
      ActiveCell.Formula = "=IF(" & ActiveCell.Offset(0, 1).Address & ">" & ActiveCell.Offset(0, 2).Address & ",True, False)"

      5- c'est pas simple alors je te recommande de bien noter ce que tu veux obtenir au préalable.

      Mais sinon c'est faisable............
      0
    5. Mag555 Messages postés 3 Statut Membre
       
      Pijaku merci pour ta réponse, je me suis complètement plantée dans ma formule. J'ai copié à la va vite sur le forum en pensant que la formule était correcte.

      Pour le 3me argument --> 2
      Pour le 4eme argument --> "faux"

      Du coup, je vais essayer de traduire la formule complètement en anglais. Maintenant que j'ai VLOOKUP, si la structure des arguments est la même en anglais, ca devrait aller.

      Mais pijaku, est-ce que je suis obligée d'intégrer une formule si dans ma recherchev? Je ne t'ai pas suivi jusqu'au bout.. lol

      Cdt
      0