générer recherchev dans vba

  • Initiateur de la discussion Initiateur de la discussion pierre
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

pierre

Guest
Bonjour à tous.

Je voudrais écrire dans une cellule avec une macro excel générée sous vba une formule utilisant la fonction RECHERCHEV. J'ai déjà vu qu'il fallait qu'elle soit écrite en anglais. Cela donne ça:
ActiveCell.FormulaR1C1 = "IF (ISNA(VLOOKUP (D12, tablo,2,false));""NON TROUVE"";(VLOOKUP(D12,tablo,2,false)))"

tablo est le nom que j'ai donné à un ensemble de cellules dans lequel je fais ma recherche mais qui dans une autre feuille que la feuille active.

Or je récupère une erreur 1004.

Est-ce que c'est dû au fait que ma zone tablo n'est pas dans la même feuille, où que le nom de la cellule qui contient la valeur recherchée (D12) n'est pas correct (en fait c'est la cellule qui se trouve dans la même ligne et dans la colonne à gauche de la cellule active).

Merci de votre aide.
 
je pense que si tu mets formula R1C1 tu dois faire référence à une cellule relative à la cellule dans laquelle tu écris ta formule.
Puisque tu cherche quelque chose en D12, essaie la même chose avec ActiveCell.Formula tout court.
 
Merci pour cette réponse, mais en fait j'avais été clair comme du jus de chique quand j'ai posté mon message:

initialement j'avais mis "D12" comme référence de la cellule qui contient la valeur que je cherche. Mais comme la formule peut être insérée dans une autre cellule que la cellule "E12", j'ai depuis essayé de mettre une référence relative et j'ai écris:

ActiveCell.FormulaR1C1 = "=IF(ISNA(VLOOKUP(Activecell.offset(-1,0).range,tablo,2,FALSE));""NON INSCRIT"";(VLOOKUP(Activecell.offset(-1,0).range,tablo,2,FALSE)))"

Mais ça ne marche pas mieux: j'ai toujours "Erreur d'exécution '1004' Erreur définie par l'application ou par l'objet...

Je reformule donc mon besoin: écrire dans la cellule active la formule recherchev (vlookup en anglais) écrite ci-dessus, tablo étant une zone que j'ai nommée ainsi dans une autre feuille du classeur, et la valeur recherchée dans ce "tablo" étant dans la cellule à gauche de la cellule active.

Merci de votre aide.
 
Bonjour Pierre, Pierre et toi le forum,

...au début je croyait qu'il s'agissait du même Pierre qui posait les questions et qui donnait aussi les réponses...heureusement que j'suis pas aussi un Pierre...hi hi hi

Bon ben moi en guise de formule je te propose un autre principe qui sera de faire un clic droit sur une cellule quelconque...

la valeur de cette cellule apparaitra sur la plage d'une autre feuille (ici Zone)...à l'éxécution toutes les valeurs seront surlignées en jaune clair...j'ai aussi mis un message qui indique le nombre de valeur trouvée dans la plage...mais si tu cliques sur une cellule vide il n'y a rien qui se passe...

Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
' Vériland Septembre 2003
' pour
' Recherche d'une valeur selon clic droit

Dim Valeur As String
Dim Quoi As Integer
Dim Tableau As Variant
Dim Cell As Variant
Dim Mot As Variant
Dim Nombre As String

Nombre = 0
Valeur = ActiveCell.Value

Tableau = Split(Valeur)

For Each Cell In ActiveSheet.Range("Zone")
For Each Mot In Tableau
If Cell.Text = Mot Then
Nombre = Nombre + 1
Cell.Interior.ColorIndex = 36
Exit For
End If
Next Mot
Next Cell
If Valeur = "" Then Exit Sub
MsgBox "il y a " & Nombre & " cellule(s) dont la valeur est : " & Valeur
Cancel = True
End Sub


par contre pour ton problème de formule il y a beaucoup de choses qui m'échappent...bon je vois bien rechercheV (VLOOKUP) et estna (ISNA) mais je ne vois pas pour le deuxième rechercheV...tu as dû utiliser l'enregistreur là...il m'embrouille un peu...lool

enfin c'est pas le problème...mais si tu veux insérer une formule dans la cellule active le plus clair sera de l'inscrire de cette manière dans VBA...

With ActiveCell
.Formula = "=ta formule"
End With

mais au sujet de "rechercheV" il y a aussi d'autres exemples dans le forum...il suffit de faire une recherche avec comme mot clé "RechercheV" par exemple...

voilà pour moi...

A+Veriland.gif


PS : Macro à copier depuis le forum auquel cas tu risques d'avoir les attributs gras du post dedans...
 
Merci d'avoir passé un peu de temps à répondre à mon problème, mais ce n'est pas la réponse que j'attendais. J'ai effectivement cherché dans le forum tout ce qui a été dit sur les RECHECHEV, mais je n'ai pas trouvé.


Je vais formuler ma question autrement:

je veux, par une macro sous VBA, insérer une formule dans la cellule active du type de celle qui suit:

ActiveCell.FormulaR1C1 = "IF (ISNA(VLOOKUP (xxx, yyy,2,false));""NON TROUVE"";(VLOOKUP(xxx,yyy,2,false)))"

xxx est ce qui est contenu dans la cellule à gauche de la cellule active.
yyy est une zone (tableau) qui est située dans une autre feuille (adherent) et que j'ai nommée (dans EXCEL) "tablo".

comment dois-je rédiger ma formule ?

Merci à tous, et bravo à tous ces gens qui répondent brillamment à des questions souvent pas simples !
 
Bonsoir Pierre, Jean-Marie et toi le forum,

oui Jean-Marie, ta formule peut fonctionner mais elle ne donnera aucun résultat actuellement ...en fait le problème sera d'y inclure la cellule xxx et la plage yyy tout en se basant sur la valeur situé à gauche de la cellule active...lol

Pour cela j'ai adopté une autre méthode qui consiste à la portionner...car dans VBA avec les ( les " les & et compagnie elle peut facilement faire trois km de long cette formule...on va loin...lol...encore pire que les tiennes ou celles de Monique...ouarf !

donc voilà Pierre, tu vas pouvoir reproduire ce que tu souhaitais faire depuis le début avec cette macro ...

Option Explicit

Sub Formule()
' Vériland
' septembre 2003


Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
Dim h As String
Dim i As String
Dim j As String
Dim Complet As String

a = "=IF(ISNA(VLOOKUP("
b = ActiveCell.Offset(0, -1)
c = "tablo"
d = "FALSE))"
e = """"
f = "NON TROUVÉ"
g = "VLOOKUP("
h = 1
i = 2
j = ","

Complet = a & b & j & c & j & i & j & d & j & e & f & e & j & g & b & j & c & j & i & j & d

With ActiveCell
.Formula = Complet
.Interior.ColorIndex = 36
End With

End Sub



j'ai aussi mis de la couleur dans l'affichage...hi hi hi...normalement tout y est...yapluka...lol

A+Veriland.gif


PS : Macro à copier depuis le forum auquel cas tu risques d'avoir les attributs gras du post dedans...
 
Merci à tous d'avoir essayé de répondre à ma question. J'ai finalement trouvé la réponse partielle pour la formulation de RECHERCHEV généré pa vba:

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],adherent,2,FALSE)"

où adherent est le nom (au sens excel😛lage de cellules nommées) du tableau où je cherche la valeur de la cellule à gauche de la cellule active

Merci encore de vos réponses
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
591
Retour