Incrémenter et reconnaitre un doublon
Résolu/Fermé
tipau35
Messages postés
293
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
8 février 2025
-
23 juil. 2018 à 17:28
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 24 juil. 2018 à 11:48
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 24 juil. 2018 à 11:48
A voir également:
- Incrémenter et reconnaitre un doublon
- Supprimer doublon excel - Guide
- Application pour reconnaître les boutons - Accueil - Outils
- Reconnaitre musique - Guide
- Doublon photo windows - Guide
- Logiciel doublon photo gratuit - Télécharger - Nettoyage
2 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 424
23 juil. 2018 à 17:51
23 juil. 2018 à 17:51
Bonjour
voyez ici un système qui se passe de la colonne de concaténation
https://mon-partage.fr/f/uA9m2Oii/
crdlmnt
voyez ici un système qui se passe de la colonne de concaténation
https://mon-partage.fr/f/uA9m2Oii/
crdlmnt
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 424
Modifié le 24 juil. 2018 à 12:29
Modifié le 24 juil. 2018 à 12:29
Bonjour
la formule:
=SIERREUR(INDEX($D$1:D1;EQUIV(B2&C2;$B$1:B1&$C$1:C1;0));"ID_"&MAX((STXT($D$1:D1;TROUVE("_";$D$1:D1)+1;4)*1)+1))
se décompose en deux éléments
1°) la partie qui cherche au dessus de la ligne où elle se trouve si les colonnes B et C contiennent déjà les références B et C de la ligne
= SIERREUR(INDEX($D$1:D2;EQUIV(B3&C3;$B$1:B2&$C$1:C2;0))
EQUIV(B3&C3;$B$1:B2&$C$1:C2;0)
cette formule va chercher avec EQUIV si la concaténation de B et C sur la ligne, existe déjà dans la plage au dessus et si elle trouve un assemblage, ressort la valeur de D correspondante
2°) si elle ne trouve pas, c'est la seconde partie qui s'effectue, soit:
inscription des caractères ID_ lié avec le maximum trouvé dans les numérotations précédentes, pour la valeur numérique qui suit ID_
"ID_"&MAX((STXT($D$1:D1;TROUVE("_";$D$1:D1)+1;4)*1)+1))
pour ne pas tartiner des explications inutiles, essayez ceci sur les quelques lignes pour comprendre:
la formule seule:
=EQUIV(B3&C3;$B$1:B2&$C$1:C2;0) (matricielle)
la formule complète:
=INDEX($D$1:D2;EQUIV(B3&C3;$B$1:B2&$C$1:C2;0)) (matricielle
avec le code erreur
=SIERREUR(INDEX($D$1:D2;EQUIV(B3&C3;$B$1:B2&$C$1:C2;0));"") matricielle
ensuite sur ligne 2
=STXT(D2;TROUVE("_";D2)+1;4)*1)+1)) (normale)
et ça devrait être plus clair
en ce qui concerne le _01 en D1, vous ne pouvez pas l'enlever en l'état car il est utilisé pour définir le code en D2
par contre, vous pouvez:
espérant que tout ça est assez clair
principes:
INDEX(N° ligne; N°colonne) ressort la valeur de cellule dans les coordonnées indiquéees (dans la plage)
EQUIV(valeur;champ;0) ressort le range dans le champ où se trouve la valeur cherchée
SIERREUR(formule);"") évite un affichage d'erreur si les valeurs ne sont pas trouvées
MAX(champ) renvoie la valeur maximum d'un champ
STXT(texte;départ;nombre) renvoie la partie du texte qui commence au caractère "départ" avec le nombre de caractères souhaités
TROUVE(texte cherché;texte) donne le rang du caractère cherché dans le texte
et le *1 sert à numériser le résultat pour autoriserkl'incrémentation à +1
c'est à peu près tout ce que je peux dire
crdlmnt
la formule:
=SIERREUR(INDEX($D$1:D1;EQUIV(B2&C2;$B$1:B1&$C$1:C1;0));"ID_"&MAX((STXT($D$1:D1;TROUVE("_";$D$1:D1)+1;4)*1)+1))
se décompose en deux éléments
1°) la partie qui cherche au dessus de la ligne où elle se trouve si les colonnes B et C contiennent déjà les références B et C de la ligne
= SIERREUR(INDEX($D$1:D2;EQUIV(B3&C3;$B$1:B2&$C$1:C2;0))
EQUIV(B3&C3;$B$1:B2&$C$1:C2;0)
cette formule va chercher avec EQUIV si la concaténation de B et C sur la ligne, existe déjà dans la plage au dessus et si elle trouve un assemblage, ressort la valeur de D correspondante
2°) si elle ne trouve pas, c'est la seconde partie qui s'effectue, soit:
inscription des caractères ID_ lié avec le maximum trouvé dans les numérotations précédentes, pour la valeur numérique qui suit ID_
"ID_"&MAX((STXT($D$1:D1;TROUVE("_";$D$1:D1)+1;4)*1)+1))
pour ne pas tartiner des explications inutiles, essayez ceci sur les quelques lignes pour comprendre:
la formule seule:
=EQUIV(B3&C3;$B$1:B2&$C$1:C2;0) (matricielle)
la formule complète:
=INDEX($D$1:D2;EQUIV(B3&C3;$B$1:B2&$C$1:C2;0)) (matricielle
avec le code erreur
=SIERREUR(INDEX($D$1:D2;EQUIV(B3&C3;$B$1:B2&$C$1:C2;0));"") matricielle
ensuite sur ligne 2
=STXT(D2;TROUVE("_";D2)+1;4)*1)+1)) (normale)
et ça devrait être plus clair
en ce qui concerne le _01 en D1, vous ne pouvez pas l'enlever en l'état car il est utilisé pour définir le code en D2
par contre, vous pouvez:
- supprimer la formule en D2 et entrer un code du même style au clavier
- par exemple: ID_01 au clavier
- les autres s'ajusteront en conséquences
espérant que tout ça est assez clair
principes:
INDEX(N° ligne; N°colonne) ressort la valeur de cellule dans les coordonnées indiquéees (dans la plage)
EQUIV(valeur;champ;0) ressort le range dans le champ où se trouve la valeur cherchée
SIERREUR(formule);"") évite un affichage d'erreur si les valeurs ne sont pas trouvées
MAX(champ) renvoie la valeur maximum d'un champ
STXT(texte;départ;nombre) renvoie la partie du texte qui commence au caractère "départ" avec le nombre de caractères souhaités
TROUVE(texte cherché;texte) donne le rang du caractère cherché dans le texte
et le *1 sert à numériser le résultat pour autoriserkl'incrémentation à +1
c'est à peu près tout ce que je peux dire
crdlmnt
24 juil. 2018 à 11:23
Serait-il possible de décomposer la formule pour que je la comprenne ?
Dans le cas ou je souhaite m'en reservir ailleurs.
Sinon, est-il possible de donner comme nom "ID" dans D1 à la place de "0_ " qui sert de référent de l'incrémentation ? Et pour changer cette appellation faut-il simplement remplacer son nom dans la formule par un autre que l'on souhaite ?
Lorsque j'essaye, la formule donne parfois #valeur !
merci
Modifié le 24 juil. 2018 à 11:47