traduire une formule excel en vba

A

albert

Guest
Bonsoir à tous, forumiens, forumiennes,

Je cherche à traduire en vba une formule excel qui fonctionne à merveille :

=SI(L4="Achat";EQUIV("Clôture A";AA5:AA3000;0);"")
j’obtiens en U30 : 1, U33 : 5, U39 : 3, U44 : 2, U47 : 1


le code vba suivant donne en U30, 33, 39, 44, 47 le même chiffre : 7

Sub U()
i = Cells(1, 8)
For r = 4 To i
cherche = WorksheetFunction.Match("Clôture A", Range("AA3:AA3000"), 0)
If Cells(r, 12) = "achat" Then
Cells(r, 21) = cherche
End If
'SI(L4="Achat";EQUIV("Clôture A";AA5:AA3000;0);"")
Next
End Sub


merci d'avance à qui saura me mettre sur la voie

albert
 

Pièces jointes

  • distance.zip
    8.7 KB · Affichages: 25
  • distance.zip
    8.7 KB · Affichages: 26
  • distance.zip
    8.7 KB · Affichages: 29
M

michel_m

Guest
Bonjour,

A 1° vue, le pb vient de ce que tu cherches toujours dans le m^me espace AA3:AA3000 donc cherche te renvoie toujours la même valeur (la 1° trouvée)
il faut donc que tu décales ton espace de la valeur trouvée.

Excuses moi, mais je dois partir

a tester ?
cherche =0
cherche=...........range(cells(4,27).offset(cherche,0), cells(3000,27))

A+

Michel
 
A

albert

Guest
j'ai trouvé!!! c'est un peu comme de l'alchimie
yengre05.gif

Sub U()
i = Cells(1, 8)
For r = 4 To i
s = i + r
cherche = WorksheetFunction.Match("Clôture A", Range(Cells(r, 27), Cells(s, 27)), 0) - 1

If Cells(r, 12) = "achat" Then
Cells(r, 21) = cherche
End If
'SI(L4="Achat";EQUIV("Clôture A";AA5:AA3000;0);"")
Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 679
Messages
2 090 858
Membres
104 677
dernier inscrit
soufiane12