formule VBa RechercheV et equiv

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 !

fred94000

XLDnaute Junior
Bonjour a tous et le forum
besoin coup de main, pour transformer cette formule en VBA

Sub rel()
Dim n As Long
Dim s%, formule As String
n = Sheets("alerte").Range("a" & Rows.Count).End(xlUp).Row
formule = "=si(a3" & n & "<> """";RECHERCHEV($B3" & n ";BD1!$C$3:$K$65536;EQUIV($G$2;BD1!$C$2:$K$2;0);0)"")"
Sheets("alerte").Range("h3").FormulaLocal = formule
Sheets("alerte").Range("h3").Copy
Sheets("alerte").Range("h3:h250").PasteSpecial Paste:=xlPasteFormulas
Sheets("alerte").Range("h3:h250").Value = Sheets("alerte").Range("h3:h250").Value
end sub

merci par avance
 
Re : formule VBa RechercheV et equiv

Bonjour PierreJean,
je te joins un fichier.
ayant deux feuilles BD et synthese
apres une extraction de données de BD vers synthese qui fonctionne,
je souhaite associer les données d'une autre colonne.
Le fichier sera plus explicite
Merci
 

Pièces jointes

Re : formule VBa RechercheV et equiv

bonjour a tous et le forum
après un travail acharné, j'ai fini par trouver la solution
merci a tous

je joint ma solution que j'ai adapté a mon fichier original

Sub rcorrespondance()

Dim n As Long, formule As String, formule2 As String
Dim z As Long
Application.ScreenUpdating = True
n = Sheets("BD1").Range("a" & Rows.Count).End(xlUp).Row
z = Sheets("alerte").Range("a" & Rows.Count).End(xlUp).Row
formule = "=si(a3:a" & z & "<>"""";recherchev($B3;BD1!$c$3:$k$" & n & ";EQUIV($g$2;BD1!$c$2:$K$2;0);0);"""")"
Sheets("alerte").Range("g3").FormulaLocal = formule
Sheets("alerte").Range("g3").Copy
Sheets("alerte").Range("g3:g250").PasteSpecial Paste:=xlPasteFormulas
Sheets("alerte").Range("g3:g250").Value = Sheets("alerte").Range("g3:g250").Value
Application.ScreenUpdating = True
Range("a1").Activate
End Sub
 
Re : formule VBa RechercheV et equiv

Bonjour ,

Vive la diversité ,
une autre solution :

Code:
Sub extraire()
Dim plage As Range, tablo, d As Object, i&, t, n&, w&, g%, h%, v%
Dim Bis() As Variant
Dim lg%
Dim z As Long, formule As String
Dim FinZone As Long, tourne As Long
FinZone = Range("D" & Rows.Count).End(xlUp).Row
Set plage = Range("D3:K26")
tablo = plage 'matrice, plus rapide
Set plage = plage.Columns(2)
Set d = CreateObject("Scripting.Dictionary")
ReDim Preserve Bis(1 To UBound(tablo), 1 To 3)
For i = 1 To UBound(tablo)
  t = tablo(i, 2)
  If t <> "" And Not d.Exists(t) Then
    d(t) = t
    If Application.CountIf(plage, t) >= 0 Then
      n = n + 1
      
      Bis(n, 1) = tablo(i, 1)
      Bis(n, 2) = tablo(i, 2)
      Bis(n, 3) = tablo(i, 8)
    End If
  End If
Next
If n Then
   For tourne = 1 To n
     Sheets("synthese").Range("A" & tourne + 2) = Bis(tourne, 1)
     Sheets("synthese").Range("B" & tourne + 2) = Bis(tourne, 2)
     Sheets("synthese").Range("F" & tourne + 2) = Bis(tourne, 3)
  Next
End If
[A2:B2].Offset(n).Resize(Rows.Count - n - 2).ClearContents

End Sub
 
- 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

Discussions similaires

Réponses
5
Affichages
755
Réponses
12
Affichages
1 K
Réponses
10
Affichages
705
Réponses
4
Affichages
703
Réponses
2
Affichages
454
Réponses
5
Affichages
635
Retour