Comparaison deux colonnes référencée par une 3ème

Fermé
roro75 - 6 févr. 2014 à 16:47
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 12 févr. 2014 à 15:56
Bonjour,


Je me tourne vers vous parce que je suis vraiment perdu.
En fait, j'aimerais qu'aparaisse "non conforme" dans la colonne F
si la valeur dans B n'est pas présente dans E sachant que
ce sont plusieurs itérations de A.

Exemple: ligne 10, colonne E, j'ai de 21 à 30, hors ça n'apparait pas dans la colonne B qui va de 5 à 20, j'aimerais donc un message colonne F qui me dit "non conforme".

idem ligne 12

http://cjoint.com/?0BgqVqpT9Sm


Mes questions sont les suivantes:
- est-ce faisable par fonctions ou faut il une macro?
- Le fait que la façon d'écrire dans les colonnes B et E soit différente est elle un vrai souci?
- et enfin comment me lancer?

Je pensais à une façon de comparer mais je n'arrive pas à partir de plus, je connais un peu les fonctions mais si c'est de la macro ça risque d'être plus compliqué n'y connaissant pas grand chose, et pour info mon fichier complet fait plus de 300 000 lignes.

Si quelqu'un a une piste, elle est la bienvenue.

En espérant avoir été clair,

Merci d'avance.


5 réponses

cheeky3057 Messages postés 67 Date d'inscription lundi 3 septembre 2012 Statut Membre Dernière intervention 29 octobre 2024 4
6 févr. 2014 à 17:03
il faut faire une fonction en SI, tape =SI(

et la formule que tu dois faire apparaîtra, la formule est un peu compliqué mais compréhensible.

Je n'ai pas vraiment compris votre exemple mais je vais vous en donner un moi aussi comme sa vous aurez un truc sur quoi vous baser.

exemple : dans la colonne A ligne 1 il y a le nombre 5, dans la colonne B ligne 1 il y a 10.

Dans la colonne C ligne 1 vous souhaiter faire apparaître "non-conforme" ou "conforme". il faudra donc taper
=SI(A1>B1;"conforme";"non-conforme")
Je traduit ma formule SI la colonne A ligne 1 est supérieur à la colonne B ligne 1, alors se sera conforme, sinon se sera écrit non-conforme.

Je ne sais pas si je suis claire, la c'est vraiment un exemple basique pour vous donner une image de ce que vous devez faire.
les ; signifie alors/sinon (donc à ne pas oublier) et les trémas se mettent des que vous mettez un format texte dans la formule.

Hésitez pas si vous n'avez pas compris
0
Bonjour Cheeky,

Merci de votre réponse, je comprends bien que le SI serait le plus approprié, et j'ai compris votre exemple, cependant de mon point de vue quelques problèmes se posent si je souhaite l'appliquer à mon cas, la colonne B et E n'étant pas écrit de la même façon.

En B: 0001;0002;0003;0004
En E: 1-4

Ce qui veut pourtant dire la même chose.


Une idée ?


Merci,
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
7 févr. 2014 à 08:29
Bonjour

vraiment pas claire votre affaire, pour des gens qui ne connaissent rien à vos données!

reprenons ce que vous dites depuis le début

Ligne 10 en E 21-30 Ligne 10 en B vous dites aller de 5 à 20? que fiat t on des 5009 en fin de ligne
Ligne 12 vous dites Idem? mais qu'est qui fait la différence entre les valeurs telles que 2,899 et 21-30?
Et à quoi correspond
21-30 / 1-4,902 en E2 c'est une opération, une séparation?
et 2,4,9002 en E5 ?

sachant que ce que vous avez dans tout le tableau est considéré par Excel comme du texte et non comme des valeurs numériques?.. et donc pratiquement inexploitable pour des comparaisons de grandeurs, sauf à implanter des formules complexes qui risquent de sérieusement perturber le fichier s'il faut les placer sur 300000 lignes:

Le problème ne pourra pas être résolu avec seulement les quelques mots que vous nous dites!

à vous lire pour des explications plus complètes.

crdlmnt
0
Bonjour,

Je me doute que ça ne doit pas être évident à saisir quand on est pas dedans, je vais essayer d'éclaircir tout ça.

LIgne 10 en B 5-20 est une validité, le produit référencé est valide des commandes 5 à 20 et en E des commandes 21 à 30. Les 5009 8999 et autres grands nombres sont des commandes tests et ne me sont pas vraiment utiles.
Ligne 12 2,8999 signifie valide pour 2 et 8999 alors que 21-30 signifie valide de 21 à 30.

Mon tableau est considéré comme du texte mais ce n'est pas un souci pour passer à un autre format si plus simple pour la mise en oeuvre.


Ce que je souhaiterai c'est que si le produit référencé est valide de 5 à 20 mais qu'en colonne E la validité est de 21 à 30 ça me mette en "F" non conforme, car ce ne serait pas valide..

J'espère être un peu plus clair dans ma demande,

merci encore
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
7 févr. 2014 à 10:03
Re
alors je ne crois pas que les données de la colonne E puissent être exploitées en l'état, sauf miracle, car il y a beaucoup trop de différences de type dans les informations
Autant on peut tirer quelque chose sous toutes réserves des données de colonne B, autant celles de E sont inextricables, entre le nombre de tirets, de virgules qui séparent (ou non?) les valeurs.
Quelquefois deux tirets une virgule, quelque fois deux virgules, quelquefois deux virgules un tiret, quelques fois trois virgules ect...
Je vous souhaite bonne chance avec ça!
Désolé
crdlmnt
0
Merci quand même d'avoir pris le temps, je vais me rapprocher de la personne qui extrait ces infos, peut-être qu'il pourra me modifier la syntaxe.. et si c'est le cas, je reviendrai vers vous.

Bonne journée sous la pluie,

Cordialement
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
7 févr. 2014 à 10:12
Ce qui serait bien c'est de trouver:
__de quoi différencier en colonne E s'il s'agit de limites de fourchettes (tiret par ex) ou de deux valeurs (point virgule par exemple)
__de conserver en colonne B le fait que le mini est au début et le maxi presque à la fin. Et au mieux de supprimer la dernière valeur parfois inutile où de bien conserver le dernier point virgule uniquement si cette dernière valeur n'est pas à prendre en compte.

Mais dans tous les cas, les formules seront complexes
Bon courage
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 238
Modifié par eriiic le 7/02/2014 à 12:24
Bonjour à tous,

une tentative en vba :
https://www.cjoint.com/?DBhmydChvBn
Activer la feuille à traiter et lancer la macro 'conformite', raccourci clavier Ctrl+t

eric

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci
0
Bonjour,

Merci pour le fichier tout d'abord,

après test, je ne sais pas si quelque chose doit être activé mais les cellules en rouges une fois remises à zéro ne reviennent pas en rouge, peut-être que ça ne fait pas partie de la macro.

J'ai essayé de l'adapter au fichier complet cependant j'ai une erreur d'execution '13', incompatibilité de type au niveau de la ligne refmin = sTmp(0), je pense que c'est du aux colonnes lignes qui ne correspondent pas forcément, j'essaie de gratter de mon côté.

Et qui plus est, je crois qu'il ne fonctionne pas à 100% comme je le souhaitais, je vous tiens au courant

En tout cas, merci beaucoup d'avoir pris le temps.

Cordialement
0
J'ai trouvé ce qui n'allait pas pour l'incompatibilité refmin cependant j'en ai une autre et je sèche...

Pour la ligne
If CLng(ref1(cptRef)) > maxRef Then Exit For

Incompatibilité de type également, pouvez-vous m'aider?

Merci
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 238
10 févr. 2014 à 10:26
Bonjour,

merci de mettre le fichier avec l'erreur.
eric
0
Bonjour,

Voici le fichier, j'avais modifié la macro pour colonne C, I et inscription des resultats en J

https://anonfiles.com/file/d0a9020ff7f44c49606d8018512d6cbb

Merci,
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 238
10 févr. 2014 à 16:04
Il y a différents cas qui n'ont pas été listés dans ton exemple, et ça remet en cause la structure de ce que je t'avais fait.
Ca ne parait pas mais c'est du travail, il faudra un peu de temps. Pas sûr que je puisse aujourd'hui.
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 238
12 févr. 2014 à 15:56
Bonjour,

mais les cellules en rouges une fois remises à zéro ne reviennent pas en rouge, peut-être que ça ne fait pas partie de la macro.
Je ne sais pas de quoi tu parles, ça n'a rien à voir avec la question initiale.

Et qui plus est, je crois qu'il ne fonctionne pas à 100% comme je le souhaitais

Il fonctionnait très bien avec le peu de cas (2 !!!) que tu avais listés.
Maintenant si tu envoies un fichier de 510000 lignes avec des cas non annoncés c'est sûr qu'il va y avoir des anomalies...

A tester : https://www.cjoint.com/?DBmoeKwUKT0
Je te conseille de contrôler de très près les résultats annoncés avant de les considérer comme corrects.
Avec 510000 lignes tu vas t'amuser autant que moi...
Je te conseille de faire une liste réduite de tous les cas rencontrés avec le résultat attendu pour contrôler.
Si tu dois signaler une anomalie je veux une ligne comme ça.

eric
0