Comparer deux plages excel rapidement
Résolu/Fermé
JORKY
-
15 avril 2014 à 23:05
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 29 avril 2014 à 11:21
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 29 avril 2014 à 11:21
A voir également:
- Comparer deux plages de cellules excel
- Formule excel pour additionner plusieurs cellules - Guide
- Concatener deux cellules excel - Guide
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Excel cellule couleur si condition texte - Guide
2 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
Modifié par eriiic le 15/04/2014 à 23:42
Modifié par eriiic le 15/04/2014 à 23:42
Bonjour,
tu ne veux pas déposer un classeur avec 2-3 exemples , résultat attendu et le comment ? Que doit faire cette fonction personnalisée ?
Parce que pour comprendre si la valeur en différence appartient à la plage A = "(A) -valeur-" ... Ca ne parle qu'à toi...
Et pourquoi pas un sub qui traite toute la plage ?
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
tu ne veux pas déposer un classeur avec 2-3 exemples , résultat attendu et le comment ? Que doit faire cette fonction personnalisée ?
Parce que pour comprendre si la valeur en différence appartient à la plage A = "(A) -valeur-" ... Ca ne parle qu'à toi...
Et pourquoi pas un sub qui traite toute la plage ?
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
21 avril 2014 à 21:39
21 avril 2014 à 21:39
Bonjour,
Je te laisse juge des améliorations à apporter - sans que tu es aucune obligation.
C'est bien comme ça que je l'entendais ;-)
Correction des anomalies que tu as signalées et amélioration du temps de traitement des suppressions.
Je te laisse découvrir l'oeuf de pâques surprise ;-) Pas besoin d'explication sur cette nouvelle fonctionnalité qui, je pense, pourra t'intéresser.
Là ça touche à sa fin. J'espère que je n'ai pas ajouté de régressions. Maintenant plus d'évol, juste des corrections des anomalies que tu pourras détecter.
https://www.cjoint.com/c/DDvvIDwWTU0
eric
Je te laisse juge des améliorations à apporter - sans que tu es aucune obligation.
C'est bien comme ça que je l'entendais ;-)
Correction des anomalies que tu as signalées et amélioration du temps de traitement des suppressions.
Je te laisse découvrir l'oeuf de pâques surprise ;-) Pas besoin d'explication sur cette nouvelle fonctionnalité qui, je pense, pourra t'intéresser.
Là ça touche à sa fin. J'espère que je n'ai pas ajouté de régressions. Maintenant plus d'évol, juste des corrections des anomalies que tu pourras détecter.
https://www.cjoint.com/c/DDvvIDwWTU0
eric
Bonsoir Eric,
Tout d'abord mille mercis pour cette nouvelle mouture. Par rapport à ma demande initiale, la réponse va bien au-delà de mes attentes. Convenons en effet que nous sommes arrivés au but.
Peu familier de ce forum, dois-je suite à cette réponse, cliquer sur "Marque comme résolu" ?
Bravo encore pour ce bon travail.
Cordialement.
Tout d'abord mille mercis pour cette nouvelle mouture. Par rapport à ma demande initiale, la réponse va bien au-delà de mes attentes. Convenons en effet que nous sommes arrivés au but.
Peu familier de ce forum, dois-je suite à cette réponse, cliquer sur "Marque comme résolu" ?
Bravo encore pour ce bon travail.
Cordialement.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
22 avril 2014 à 10:27
22 avril 2014 à 10:27
Bonjour,
Oui, tu peux mettre en résolu, en haut vers ton titre.
Il reste des passages qui font un peu bricolage suite aux modif pour dysfonctionnements sur 2010 que je dois reprendre car ils ne me plaisent pas, ça sera un peu plus tard.
Et il reste sans doute des bugs...
eric
Oui, tu peux mettre en résolu, en haut vers ton titre.
Il reste des passages qui font un peu bricolage suite aux modif pour dysfonctionnements sur 2010 que je dois reprendre car ils ne me plaisent pas, ça sera un peu plus tard.
Et il reste sans doute des bugs...
eric
Bonsoir Eric,
Je vais mentionner la question comme résolue.
Je te remercie pour toutes démarches.
A titre purement informel, deux cas de figures (j'ai du occulter quelques tests)
- si l'on choisit deux colonnes dans "de" - A:B par exemple et deux colonnes dans "dans" - C:D par exemple en résultat colonne E, quand B est en différence dans C:D, il donne la référence de A systématiquement,
- autre cas : si nous avons deux colonnes - A:B du Feuil1 par exemple = A 80000 lignes B=15000 lignes et deux colonnes - C:D Feuil2 par exemple = C 15000 lignes D=80000 lignes soit l'inverse du Feuil1, quand nous comparons "de" Feuil2!B:B, "dans" Feuil1!A:A avec en résultat colonne Feuil2!D:D, - (nous comparons donc la même chose, on s'attend à un résultat vide) - il trouve en différence les valeurs portant égales à partir de la 150001 lignes sur les 80000 lignes.
Je te souhaite bonne continuation.
Cordialement.
Je vais mentionner la question comme résolue.
Je te remercie pour toutes démarches.
A titre purement informel, deux cas de figures (j'ai du occulter quelques tests)
- si l'on choisit deux colonnes dans "de" - A:B par exemple et deux colonnes dans "dans" - C:D par exemple en résultat colonne E, quand B est en différence dans C:D, il donne la référence de A systématiquement,
- autre cas : si nous avons deux colonnes - A:B du Feuil1 par exemple = A 80000 lignes B=15000 lignes et deux colonnes - C:D Feuil2 par exemple = C 15000 lignes D=80000 lignes soit l'inverse du Feuil1, quand nous comparons "de" Feuil2!B:B, "dans" Feuil1!A:A avec en résultat colonne Feuil2!D:D, - (nous comparons donc la même chose, on s'attend à un résultat vide) - il trouve en différence les valeurs portant égales à partir de la 150001 lignes sur les 80000 lignes.
Je te souhaite bonne continuation.
Cordialement.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
22 avril 2014 à 22:58
22 avril 2014 à 22:58
Bonsoir,
1) quand B est en différence dans C:D, il donne la référence de A systématiquement,
C'est normal, c'est ce que j'ai prévu.
On compare 2 champs, mais on n'est pas obligé d'avoir les 2 champs en résultat.
Si on en veut qu'un seul c'est le 1er qui est retourné.
Si c'est le 2nd qui t'intéresse le plus simple c'est de mettre 2 colonnes et de supprimer celle qui ne t'intéresse pas. Le demander à chaque fois deviendrait lourd.
2) ça doit être un bug, il va falloir que je me mette en situation pour constater.
J'essaie de voir ça demain, mais j'aurais d'autres choses avant.
eric
1) quand B est en différence dans C:D, il donne la référence de A systématiquement,
C'est normal, c'est ce que j'ai prévu.
On compare 2 champs, mais on n'est pas obligé d'avoir les 2 champs en résultat.
Si on en veut qu'un seul c'est le 1er qui est retourné.
Si c'est le 2nd qui t'intéresse le plus simple c'est de mettre 2 colonnes et de supprimer celle qui ne t'intéresse pas. Le demander à chaque fois deviendrait lourd.
2) ça doit être un bug, il va falloir que je me mette en situation pour constater.
J'essaie de voir ça demain, mais j'aurais d'autres choses avant.
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
24 avril 2014 à 20:06
24 avril 2014 à 20:06
Bonjour,
J'ai un peu de mal à dégager suffisamment de temps mais je ne t'oublie pas.
eric
J'ai un peu de mal à dégager suffisamment de temps mais je ne t'oublie pas.
eric
16 avril 2014 à 21:23
Merci pour cette intervention rapide.
Voilà procédons avec un exemple réaliste bien que mon besoin soit récurent sur d'autres recherches.
Une entreprise a 80000 contrats en colonne A. En colonne B, on a des contrats résiliés dont certains sont absents de la colonne A.
En colonne C, j'aimerai une fonction VB du style DIFFTAB(colonne A; colonne B; colonne C) - ou cela peut-être DIFFTAB(colonne A à C;colonne D à F) - qui donne en résultat toutes les valeurs du premier argument - ici colonne A absentes de la l'argument 2 - ici colonne B et place le résultat dans l'argument 3 - ici colonne C. On considère d'office que l'argument 1 est la plage à comparer, l'argument 2 la plage de recherche donc l'argument 3 ne comportera que des valeurs de l'argument 1 - plage à comparer - absentes de l'argument 2 -plage de recherche.
Dans notre exemple :
* le résultats de la colonne C comportera les contrats en vigueur.
Je pars sur une fonction car mes besoins sont divers. De plus, dans mon job on peut avoir des volumétries importantes.
Pour répondre à ta question "si la valeur en différence appartient à la plage A = "(A) ", je pense qu'il faut oublier car c'était une mauvaise idée. L'idée était de poser la fonction et de choisir dans le numéro de la valeur en différence. Exemple : supposons que nous trouvions 5 valeurs de la colonne A en différence avec la colonne B, en C1, je sollicitais première valeur en différence. En tirant la cellule C1 vers le bas, j'obtenais en C2 la deuxième valeur en différence ...etc. Mais oublions.
Je joins un fichier excel en colonne D, on trouve tous les contrats de la colonne A absents de la la colonne B. Dans mon exemple, je dois chercher les absents par EQUIV - très long pour 80000 contrats - puis faire un copier/coller texte puis classer la colonne D.
JE NE VOIS PAS DE QUOI CHARGER MON FICHIER EXCEL ????
J'espère avoir été plus clair.
Cordialement.
16 avril 2014 à 23:51
Avant de chercher à accélérer il faut déjà faire les bons choix au départ.
Une fonction personnalisée sera toujours plus lente que les fonctions natives sur feuille, et qu'un sub qui traite tout d'un coup.
Quand tu as 80000 lignes c'est beaucoup ( beaucoup , beaucoup ) plus rapide de tout charger et de travailler en mémoire avec un sub.
Ton sub peut très bien être interactif et que tu lui désignes les colonnes à comparer, ainsi que où tu veux le résultat (même autre feuille éventuellement). Tu te rapproches de la souplesse d'une fonction, et tu as ton résultat en 2s...
Pour la restitution j'ai cru comprendre que tu veux la liste sans trous (pas alignée sur A), mais ce n'est pas dit explicitement.
ou cela peut-être DIFFTAB(colonne A à C;colonne D à F)
Et il faut A=D, B=E et C=F je suppose.
Et la restitution ? Uniquement A ou A, B et C ?
Précise aussi si la case (majuscules/minuscules) est toujours respectée entre A et B (ou A:C, D:F). C'est chronophage et si on peut se passer de cette conversion c'est toujours ça de pris.
Merci de déposer le fichier xls (réduit au nécessaire et anonymisé, avec les explications et éventuellement le résultat attendu) sur cjoint.com et coller ici le lien fourni.
eric
17 avril 2014 à 22:35
Je vais essayer avec un SUB paramétrable comme tu le suggères. Je peux appeler d'une cellule, un SUB comme une fonction ?
Convenons qu'à ta prochaine réponse à une ultime question, je marquerai la question comme résolu.
Question : avec un SUB, je peux afficher le contenu d'une cellule avec un ".select". Pourquoi cela ne marche-t-il pas avec FUNCTION ?
Merci pour la réponse précédente. Bonne soirée.
18 avril 2014 à 00:00
Non.
Mais tu peux faire un raccourci clavier, ou bien lancer la macro sur un évènement comme activation de la feuille, ou clic sur un bouton, ou double-clic sur une cellule ou ...
Question : avec un SUB, je peux afficher le contenu d'une cellule avec un ".select". Pourquoi cela ne marche-t-il pas avec FUNCTION ?
Une fonction ne peut que retourner une valeur (ou une table de valeur si elle est matricielle), c'est tout.
eric
18 avril 2014 à 17:24
J'ai mis différentes options pour garder de la souplesse, comme tu disais que les besoins étaient divers.
L'option 'colorer' n'est pas encore opérationnelle, mais celle qui t'intéresse (extraire) l'est.
Teste sur tes 80000 lignes et dit ce qu'il en est.
eric