Traduire une recherchev dans vba
Mag55
-
Mag555 Messages postés 3 Statut Membre -
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
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- 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............ -
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
-