Transformer une formule matricielle en VBA

erzebethy

XLDnaute Nouveau
Bonjour,

Je ne suis pas une experte (du tout d'ailleurs) en écriture de macros, je me base souvent sur l'enregistrement que je modifie un peu.
J'ai besoin de recopier une donnée dans une colonne d'un onglet en fonction de 2 critères de deux autres colonnes du même onglet.
Ces données sont recherchées dans un autre onglet avec les données en colonnes uniquement (donc pas de croisement de données)
Afin de ne pas alourdir le fichier et rallonger le temps de calcul (car il est actuellement très long, j'ai pas loin de 5000 lignes à calculer), je souhaite transformer la formule matricielle utilisée actuellement qui fonctionne très bien en macro excel.
Voici la macro que j'avais trouvé et que j'ai adapté à mes données, mais la formule utilisée va chercher la donnée qui se croise entre les en-têtes de ligne et de colonne alors que je n'ai que des entêtes de colonne:

Dim cel As Range
With Sheets("Cadencier AlimentaireMétier")
.Range("A2:A" & .[A65000].End(xlUp).Row).Name = "Frn"
.Range("Ap2:Ap" & .[Ap65000].End(xlUp).Row).Name = "EANcad"
.Range("bd2:bd" & .[bd65000].End(xlUp).Row).Name = "DLUO"
End With
With Sheets("Cadencier")
For Each cel In .Range("f2:f" & .[f65000].End(xlUp).Row)
If Not IsEmpty(cel) Then _
.Cells(cel.Row, "j").Value = Application.Index([DLUO], Application.Match(.Cells(cel.Row, "i"), [eancad], 0), Application.Match(cel, [frn], 0))
Next cel
End With

J'aimerai remplacer cette formule (en rouge) par celle-ci (saisie en formule excel) : {=INDEX(DLUO;EQUIV(I14;SI(Frn=F14;EANcad;"");0))}

Le bleu est la donnée variable

Pouvez vous m'aider?

Je peux vous adapter le fichier pour vous aider au besoin

merci de votre aide précieuse

Delphine
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir Delphine et bienvenue sur XLD :)

Un essai comme ceci, sans trop de convinction.

Sub test()
With Feuil1
.Cells(5, "d") = Evaluate("{=INDEX(DLUO;EQUIV(I14;SI(Frn=F14;EANcad;"");0))}")
.Cells(5, "d").Value = .Cells(5, "d").Value
End With
End Sub
 

erzebethy

XLDnaute Nouveau
Bonjour Lone-wolf,

Merci pour ton retour.
Effectivement, le souci c'est que j'ai plusieurs lignes à traiter.
J'ai fait un fichier test qui serait plus facile à interpréter. Si toi ou l'un des membres peut m'aider ce serait vraiment top!
Le protocole : je dois trouver une macro qui me permet de retrouver la donnée présente dans l'onglet BDD qui correspond à la fois à la réf1 et à la réf2 et de la recopier dans l'onglet Tableau.

Encore merci!
 

Pièces jointes

  • test vba.xlsm
    28.5 KB · Affichages: 58

Si...

XLDnaute Barbatruc
Bonjour
Peut-être ainsi (avec tableaux d’onglet et tableaux VBA…) ?
Au revoir

Nota : je préfère les noms courts (C1 est réservé à une cellule donc je choisis ç1 pour le nom du tableau)
 

Pièces jointes

  • VersTableau.xlsm
    31.3 KB · Affichages: 84

erzebethy

XLDnaute Nouveau
Bonjour,
Bon du coup, je vais t'avouer que je n'ai pas bien saisi ce que tu m'as envoyé, comme je ne suis pas une experte, du coup, je galère un peu pour faire le rapprochement entre les données (source et cible). Est-ce que tu peux être plus précis? Ce serait vraiment super si je pouvais l'appliquer à mes données car ça me rendrait un énorme service au quotidien. ;)
 

Statistiques des forums

Discussions
315 132
Messages
2 116 589
Membres
112 799
dernier inscrit
valdeff