Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Bonjour,
J'ai effectué des index(equiv()) afin de pouvoir trouver la valeur approchée correspondant à celle cherchée.
Seulement, je souhaiterai pouvoir incrémenter de +1 mon numéro de ligne lorsque index(equiv()) me trouve une valeur déjà trouvée en haut de la colonne.
Et ainsi de suite (incrémentation de +1) jusqu'à ce que la valeur soit unique dans la colonne.
Demande supplémentaire : l'incrémentation de 1 ou la décrémentation de 1 doit se faire du moment que l'on reste dans la même allée (voir les onglets).
Ci dessous le lien du fichier :
Document Cjoint
merci d'avance pour votre précieuse aide,
je ne suis pas sur d'avoir été bien clair dans mes propos, je m'excuse.
le but de toute la manoeuvre en fait est de pouvoir n'avoir que des valeurs uniques dans la colonne I.
C'est à dire, de ne pas avoir de même valeur dans deux cellulles de la même colonne I.
Mais cette règle doit s'appliquer en respectant ceci :
1) Pour qu'Excel garde des valeurs uniques, alors il doit prendre la valeur issue de index(equiv()) SUIVANTE, d'où l'incrémentation de +1.
Cf. en pièce jointe, en colonne G, une solution avec une formule matricielle à valider avec Ctrl+maj+entrer. Cf. aussi dans le gestionnaire de noms la définition de "plage".
plage garde en mémoire
* le bas de la colonne F, dans la bonne feuille (à cause de INDIRECT("'"&$C2&" EV'!F1")) (On aurait pu faire plus simple, sans le "'"&, si le nom de tes onglets ne comportait pas d'espace. Ici, cela ne fonctionne bien que parce que tes trois onglets ont des noms semblables, construits de la même manière, une lettre puis un espace puis EV),
* à partir du code le plus proche (trouvé avec EQUIV($E2;INDIRECT("'"&$C2&" EV'!A:A");1)) (c'est la méthode que tu avais utilisée dans ta formule, mais en traitant chaque cas séparément, SI(C2="A"...., SI(C2="B"...., SI(C2="C"......)))),
* et la partie NBVAL(INDIRECT("'"&$C2&" EV'!A:A"))-EQUIV(DPP!$E2;INDIRECT("'"&$C2&" EV'!A:A");1)+1 permet juste de ne pas prendre une plage arbitrairement plus grande ou plus petite que nécessaire (On aurait pu mettre un grand nombre à la place de cette dernière partie, 1000 par ex, si ton fichier comporte moins de 1000 lignes).
Pour "voir" cette plage, tu cliques sur "Gestionnaire de noms", puis sur "plage", puis sur sa définition en bas, et la plage est entourée automatiquement par des pointillets.
INDIRECT("'"&C2&" EV'!A:F") cible la plage A:F dans la bonne feuille (& remplace CONCATENER)
NB.SI($G$1:G1;plage)=0 compare le contenu de la plage à G1 et renvoie VRAI pour chaque élément de la plage différent de G1 (donc pour chaque emplacement pas encore utilisé dans le haut de la colonne G)
SI(NB.SI($G$1:G1;plage)=0;LIGNE(plage)) renvoie le n° des lignes de plage contenant des emplacements pas encore utilisés, différents du haut de la colonne G.
MIN(SI(NB.SI($G$1:G1;plage)=0;LIGNE(plage))) garde en mémoire le premier de ces n° de lignes contenant des emplacements pas encore utilisés.
Et finalement
INDEX(INDIRECT("'"&C2&" EV'!A:F");MIN(SI(NB.SI($G$1:G1;plage)=0;LIGNE(plage)));6)) renvoie le contenu de la colonne F dans la bonne feuille sur la première ligne de plage contenant un emplacement pas encore utilisés.
En G3, la partie SI(NB.SI($G$1:G1;plage)=0 devient SI(NB.SI($G$1:G2;plage)=0. Ainsi la comparaison est faite par rapport à G1 et G2.
En G10, cette partie donne SI(NB.SI($G$1:G9;plage)=0. La comparaison est donc faite par rapport à G1, G2, G3, G4, G5, G6, G7, G8 et G9.
On aurait aussi pu faire avec F:F au lieu de A:F, et sans le 6 final.
PS : J'ai aussi essayé de faire comme tu le proposais, en incrémentant, avec plein de SI. Le pb, c'était d'avoir une formule vraiment polyvalente : Jusqu'à combien fallait-il incrémenter, 5 dans ton exemple, mais peut être 6, 7 ou 8 dans un autre, puisqu'on ne sait pas où se trouve dans la colonne F le prochain emplacement pas encore utilisé.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.