vba - comparaison entre 2 zones nommées
Le
cousinhub
Bonsoir, pour un projet, j'ai besoin de comparer 2 zones de données nommées :
val1, val2 et base1, base2
par la méthode : For j = 1 to vcompteur, je voudrais donc comparer les zones
val1 avec base1, val2 avec base2 et renvoyer le résultat dans une cellule.
Voici une partie de mon code :
For j = 1 To vCompteur
i = 2 + j
Range("c" & i) = [SUM(ISNUMBER(MATCH(val& j),base& j),0))*1)]
Next j
A noter que la cellule de destination se situe dans une autre feuille que
les deux zones nommées.
Cependant les deux zones "val & j" et "base & j" ne sont pas prises en compte.
ci-joint un exemple (simplifié) : http://cjoint.com/?lnwOXAugNk
Merci de bien vouloir m'expliquer ce qui ne fonctionne pas
val1, val2 et base1, base2
par la méthode : For j = 1 to vcompteur, je voudrais donc comparer les zones
val1 avec base1, val2 avec base2 et renvoyer le résultat dans une cellule.
Voici une partie de mon code :
For j = 1 To vCompteur
i = 2 + j
Range("c" & i) = [SUM(ISNUMBER(MATCH(val& j),base& j),0))*1)]
Next j
A noter que la cellule de destination se situe dans une autre feuille que
les deux zones nommées.
Cependant les deux zones "val & j" et "base & j" ne sont pas prises en compte.
ci-joint un exemple (simplifié) : http://cjoint.com/?lnwOXAugNk
Merci de bien vouloir m'expliquer ce qui ne fonctionne pas

Poser une question


Sans avoir régardé le reste, cette syntaxe de "Evaluate" est incorrecte dans la
mesure ou tu veux intégrer des variables.
Il faut passer, obligatoirement, par la "méthode longue" :
Le principe (non testé in situ car on ne sait pas ce que sont tes variables) :
Range("c" & i) = Evaluate("SUM(ISNUMBER(MATCH(" &val &"&" & j &")," &[base] &"&"
& j &"),0))*1)")
AV
merci pour ta réponse, mais cela ne fonctionne pas non plus.
Je ne vois pas ce que tu veux dire avec la "méthode longue".
Pour ce qui est des variables, j est le nombre de cellules non vides dans la
zone nommée "val"
Si tu avais une autre façon de procéder, je suis aussi preneur
Merci
Range("c" & i) = [SUM(ISNUMBER(MATCH(val& j),base& j),0))*1)]
Si oui, que cherches-tu à faire ?
Le "MATCH(....)" me laisse perplexe...
PS : Il s'agit de la syntaxe Evaluate("chaine de caractères") au lieu de
[chaine de caractères sans variables]
Si "val" et "base" sont des plages nommées, la syntaxe pourrait avoir cette
allure :
Range("c" & i) = Evaluate("SUM(ISNUMBER(MATCH(" &[val] &"&" & j &")," &[base]
&"&"
& j &"),0))*1)")
AV
hélas, cela ne fonctionne pas plus!
avec MATCH(...), je cherche à obtenir le nombre de valeurs identiques entre
les zones nommées (val1) et (base1), (val2) et (base2) etc... et ceci pour
toutes les zones (val"n") renseignées (déterminées par la fonction
CellulesUtilisées)
Merci de ton intérêt
Dans ton code les variables "val" et "base" ne sont pas initialisée donc
l'Evaluate plantera forcément quelle que soit la syntaxe !
La comparaison entre les plages doit se faire colonne par colonne (exemple :
comparaison A4 /A12) ou indifféremment sur l'ensemble des données ?
Il serait préférable que dans ton fichier exemple tu donnes le résultat
attendu..
AV