Traduire une recherchev dans vba

Fermé
Mag55 - 19 août 2011 à 14:30
Mag555 Messages postés 3 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 août 2011 - 19 août 2011 à 23:37
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

Mag555 Messages postés 3 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 août 2011
19 août 2011 à 15:40
Devrais-je en conclure que ce n'est pas faisable?!
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
19 août 2011 à 15:45
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
Mag555 Messages postés 3 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 août 2011
19 août 2011 à 15:50
Ok je comprends bien mais comment traduire alors "activecell" ?

Merci d'avance
Plus j'avance, plus j'ai des noeuds..
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
19 août 2011 à 15:53
Il me semble que le activecell.Offset(0,-1) se remplace par RC[-1].
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
19 août 2011 à 15:58
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
Mag555 Messages postés 3 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 août 2011
19 août 2011 à 23:37
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