Bonjour,
j'ai compris la logique avec ta copie écran, même s'il est vrai que ça m'a pris 5 bonnes minutes à comprendre.
du coup, ça se fait très bien par formule Excel en concaténant deux fonction Si() qui chacun va tester sa propre colonne
pourquoi vouloir le faire par VBA ? Au pire, manipules les formules par VBA. Pour se faire, il te suffit de trouver cette formule Excel et ensuite avec l'enregistreur de macro, tu auras une utilisation en VBA.
Quelques indices pour bien chercher.
Tu n'as besoin que de trois fonctions :
- Si() : il va te permettre d'écrire le numéro de la colonne ou ne rien écrire
- Index() : il va te permettre de trouver la bonne case de valeur à comparer, la ligne sera une recherche par Equiv (voir ligne en dessous)
- Equiv() : imbriqué dans le Index, il va te donner la bonne ligne du tableau
D'où une modélisation pour la première colonne :
Si(Index(MonTableauDepart; Equiv(LaLettreDeLaLigneDuTableauArrivee;LaColonneDesLettresDuTableauDeDepart;0);2)>Index(MonTableauDepart; Equiv(LaLettreDeLaColonneDuTableauArrivee;LaColonneDesLettresDuTableauDeDepart;0);2);"1";"")
Cette formule écrira 1 si dans la première colonne, la "lettre en ligne" > la "lettre en colonne"
Il reste donc à écrire la même chose pour la seconde colonne, la formule est identique, il faut remplacer le chiffre 2 par 3 pour décaler de colonne
En utilisation des plages nommées sur : LaColonneDesLettresDuTableauDeDépart // LeTableauDeDepartComplet ==> ta formule se colle sur l'ensemble du tableau d'arrivée sans aucune modification
Bons tests, avec un peu de jugeotte en quelques minutes ta formule est prête
Partager