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