Macro recherchev

Bonjour,

est-il possible de passer cette formule en macro?

sachant qu'il s'agit du contenu de la cellule F27 de la Feuil1.

=RECHERCHEV($E27;'données histo graphes'!P2:Q32;2;FAUX)

merci d'avance

oza

salut ozaland,

je suis pas pro , mais j pense qu'on peut ecrire n'importe q'elle formule sous VBA :

range("A1").FormulaR1C1="=RECHERCHEV($E27;'données histo graphes'!P2:Q32;2;FAUX)"

qd t'excecute ton code , ta fonction sera excécuter dans la case A1

hmm j'ai essayé mais moi aussi je débute et ce n'est pas évident.

j'ai simplement mis ce code dans l'onglet concerné mais j'ai une erreur de compilation

WorksheetFunction.VLookup(F27, Worksheets("travail à la référence").Range("P2:Q32"), 2, False)

des idées?

-- 21 Juin 2011, 16:36 --

j'ai trouvé!

Sub test()

With Sheets("travail à la référence")

.Range("F27").Value = WorksheetFunction.VLookup(.Range("E27").Value, Sheets("données histo graphes").Range("P2:Q32"), 2, False)

End With

End Sub

mais comment actualiser si E27 est modifié par l'utilisateur?

Salut ozaland et le forum

est-il possible de passer cette formule en macro ?

Pas sûr de comprendre.

Soit tu veux écrire cette formule par macro et ton code sera :

Sheets("Feuil1").Range("F27").FormulaLocal = "=RECHERCHEV($E27;'données histo graphes'!P2:Q32;2;0)"

Soit tu veux écrire le même résultat que ta fonction et tu auras un code de la forme :

Sub test()
Dim Cel As Range
Set Cel = Sheets("données histo graphes").Range("P2:Q32").Find(What:=Sheets("Feuil1").Range("E27"), _
                                               LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Cel Is Nothing Then
    Sheets("Feuil1").Range("F27") = "#NA!"
Else
    Sheets("Feuil1").Range("F27") = Cel
End If
End Sub

A+

Bonjour,

Sub test()

    With Sheets("travail à la référence")
       .Range("F27").Value = WorksheetFunction.VLookup(.Range("E27").Value, Sheets("données histo graphes").Range("P2:Q32"), 2, False)
   End With

End Sub

ça fonctionne parfaitement mais uniquement à l'ouverture du fichier ou lorsque j'exécute manuellement la macro.

ma question est: comment exécuter ces quelques lignes de code dès que la cellule E27 est modifiée?

oza

Bonjour

essaie Code de Feuille (pas Module)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F27")) Is Nothing Then
    With Sheets("travail à la référence")
       .Range("F27").Value = WorksheetFunction.VLookup(.Range("E27").Value, Sheets("données histo graphes").Range("P2:Q32"), 2, False)
   End With
End If
End Sub

ou en laissant ta macro initiale , Code de Feuille

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F27")) Is Nothing Then
Call Test
End If 
End Sub

Cordialement

Bonjour Amadeus,

merci pour ton aide!

Avec ta première proposition rien ne se passe et la seconde fait planter mon excel

je te joins mon fichier cela sera plus simple.

oza

928recherchev.zip (9.77 Ko)

Bonjour

Voir fichier

Cordialement

3'192recherchev.zip (11.64 Ko)

merci beaucoup Amadéus!

Amadéus a écrit :

Bonjour

Voir fichier

Cordialement

Bonjour à tous,

En parcourant le forum, je suis arrivé sur ce post qui correspondrait à mes besoins. Néanmoins, ne connaissant absolument en rien à la programmation, je me retrouve complètement perdu quand à la manière d'adapter ce fichier. La base de travail serait identique à part que le fichier qui serait à traiter contient 9 colonnes et 200 lignes env. Je vous joint le même fichier que celui de ce post intégrant les lignes (enfin une dizaine ) et le nombres de colonnes. Pourriez-vous m'expliquer comment faire svp.

Merci à vous

569exemple-fichier.zip (11.18 Ko)

Bonjour

Sur le même principe

Code de feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Application.Intersect(Target, Range("F9")) Is Nothing Then
  Range(Target.Offset(0, 1), Target.Offset(0, 7)).Formula = "=VLOOKUP($F9,Feuil1!$A$2:$H$300,Column()-5,0)"
  Range(Target.Offset(0, 1), Target.Offset(0, 7)).Value = Range(Target.Offset(0, 1), Target.Offset(0, 7)).Value
  End If
  End Sub

Cordialement

139exemple-fichier.zip (11.40 Ko)

Bonjour,

Merci pour votre réponse rapide. En effet c'est cela dont j'avais besoin. Comment puis-je faire pour faire ce même principe mais sur les lignes en dessous (feuil2) ? (je vous rejoints le fichier en V2 pour être plus clair). Pourriez-vous également, si cela n'est pas trop compliqué, m'expliquer la ligne de commande que vous m'avez indiqué. J'ai beau essayé de la comprendre cela reste flou.

Vous remerciant,

139exemple-fichierv2.zip (11.76 Ko)

Bonjour Amadéus,

Alors, après plusieurs heures de recherche, j'ai enfin trouvé ou se situait la fonction VBA. Meri le forum

Après avoir essayé de comprendre ce code, j'ai essayé de le bidouiller et voilà ce que j'ai fait (pas grand chose, juste indiqué "F:F" à la place de "F9") :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("F:F")) Is Nothing Then

Range(Target.Offset(0, 1), Target.Offset(0, 7)).Formula = "=VLOOKUP($F:F,Feuil1!$A$2:$H$300,Column()-5,0)"

Range(Target.Offset(0, 1), Target.Offset(0, 7)).Value = Range(Target.Offset(0, 1), Target.Offset(0, 7)).Value

End If

End Sub

A faire cela, la colonne F de la feuil2 prend bien en compte la valeur et renvoi bien le résultat dans la colonne G de la feuil2. Par contre, les colonnes H à M ne répercutent plus les autres valeurs ... Pourrais-tu m'éclairer s'il te plait.

Cordialement,

Bonjour,

Après plusieurs essais je suis toujours bloqué. Personne ne pourrait m'aider svp ?

merci d'avance,

Bonjour,

Après pas mal de recherches, j'ai enfin trouvé une solution à mon problème, et celle-ci à l'air de bien fonctionner. Ci-dessous le code

 Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Application.Intersect(Target, Range("E21:E60")) Is Nothing Then
  Range(Target.Offset(0, 1), Target.Offset(0, 4)).Formula = "=VLOOKUP($E$21:$E$60,matrice!$A$2:$E$5000,Column()-4,0)"
  Range(Target.Offset(0, 1), Target.Offset(0, 4)).Value = Range(Target.Offset(0, 1), Target.Offset(0, 4)).Value

  End If
  End Sub

Merci à Amadeus pour son aide apportée à la première demande qui m'a permis de pouvoir de trouver de moi-même la solution. Elle peut probablement être améliorer, mais ça c'est une autre histoire.

Rechercher des sujets similaires à "macro recherchev"