Transformer une formule matricielle en VBA

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 !

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

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. 😉
 
- 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
4
Affichages
332
Réponses
3
Affichages
569
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
773
Réponses
2
Affichages
214
Réponses
1
Affichages
452
Réponses
3
Affichages
518
Réponses
5
Affichages
298
Retour