XL 2016 Suppression d'une valeur d'une cellule par comparaison avec une autre (entre 2 colonnes)

didcac

XLDnaute Occasionnel
Bonjour à tous,
J'ai 2 colonnes accolées qui ont le même type de valeurs : des années en format TEXTE (donc 2004, 2009, 2012, etc, par exemples)
J'ai besoin de supprimer la valeur de droite si celle-ci est identique à celle de gauche.
Exemples (sur 3 lignes : 2 / 3 / 4) :
Cellule A2 : 2006
Cellule B2 : 2006 (comme elle est identique à A2, je veux qu'elle soit effacée par une fonction sur feuille)
Cellule A3 : 2011
Cellule B3 : 2019 (année différente de A3, donc ne rien faire)
Cellule A4 : 2017
Cellule B4 : 2017 (comme elle est identique à A4, je veux qu'elle soit aussi effacée par cette fonction sur feuille)
et ainsi de suite sur 4000 lignes !
Ainsi, j'aimerai avoir une formule que je pourrais coller sur la 2ème colonne pour supprimer toutes les années identiques à la 1ère colonne (sans toucher aux années "différentes" comme explicité ci-avant).

Merci d'essayer de trouver la solution. J'espère qu'il ne faudra pas nécessairement utiliser une 3ème colonne pour stocker la fonction, car je vais déjà devoir coller cette fonction environ 90 fois. Mais je ne me rends pas bien compte, sur le plan technique.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

je veux qu'elle soit effacée par une fonction sur feuille
Une fonction ne peut pas effacer une valeur de cellule, une fonction renvoie une valeur même "" ou 0 mais n'effacera jamais une cellule.

C'est possible par VBA (macro) ou par requête power query (inclus dans votre version excel) qui produira un nouveau tableau épuré des valeurs dont vous ne voulez pas.

Il est également possible de 'masquer' les valeurs par une mise en forme conditionnelle.

Joignez un fichier exemple.

Cordialement
 

didcac

XLDnaute Occasionnel
Bonsoir Roblochon,
Merci de votre intervention.
Je suis sur MAC, donc PowerQuery en principe non.
En fait, quand je dis "effacer", si la fonction peut renvoyer une valeur "vide" (comme ""), cela me va très bien.
Voici le fichier en PJ. J'ai reporté les valeurs de 11 "binômes" de colonnes, car la structure est toujours la même : ça va de 22 colonnes en 22 colonnes, et ce 80 fois...
Ainsi, cela commence par :
EF & EG (1er binôme), puis FB & FC (2ème binôme, situé 22 colonnes plus loin), puis FX & FY, puis GT & GU, puis HP & HQ, etc etc etc jusqu'à ici MR & MS (11ème binôme), mais en réalité le vrai binôme final est BWL & BWM.
En espérant que cela soit compréhensible. Je peux vous apporter des précisions, au besoin.
Merci.
 

Pièces jointes

  • BASE retraitée FINALE #4 (Données).xlsx
    387.2 KB · Affichages: 16

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Désolé mais je n'ai pas compris grand chose de votre affaire. Et cela est différent de votre demande initiale.
D'autant qu'il n'y a pas de valeur égale à une autre dans votre exemple.

Alors dans le fichier joint vous trouverez en feuille 'Feuil2' à partir de B1 la formule :
=SI(Feuil1!B1=Feuil1!A1;"";Feuil1!B1)


Cordialement
 

Pièces jointes

  • BASE retraitée FINALE #4 (Données).xlsx
    425.6 KB · Affichages: 8

didcac

XLDnaute Occasionnel
Bonjour,
Le traitement marche parfaitement, merci beaucoup !!
Je n'avais pas pensé à l'utilisation de la Feuil2 pour faire afficher les valeurs corrigées. C'est la méthode la plus simple.
En fait, il y avait bien des valeurs "adéquates" (selon ma demande), mais comme je ne savais pas trop comment vous alliez vous y prendre, j'ai mis les vraies valeurs au format (éparpillées, et surtout présentes après la ligne 900). Mais effectivement, il y a pas mal de situations où il n'y a pas les doubles valeurs... Mais sur les 3600 lignes et 90 colonnes... clairement si ! Et c'est celles-là que je dois changer.

Le petit souci pratique, c'est que je vois apparaître des zéros qui fleurissent partout où c'était "vide" avant...
Voyez-vous par quelle petite modification de la syntaxe vous pourriez empêcher cela ? Les guillemets que vous avez utilisés rendent parfaitement "le vide" lorsque se fait le traitement.

Moi, pour toutes les autres colonnes (non concernées par l'opération), j'ai écrit pour A1:
=SI(Feuil1!A1<>"";Feuil1!A1;"")
Et là, apparemment, cela évite les zéros dans les autres colonnes.
Ce n'est pas forcément la Panacée. J'ai fait ça un peu au hasard.
En testant, le résultat semble bon.

Merci pour votre aide, en espérant que vous trouverez le hic. Cela va me faire gagner du temps.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Joignez un exemple reflétant la situation problématique (pas théorique). Parce que pour vos 0, je ne vois pas comment ils peuvent être présents si les cellules référencées ne sont pas vides.

Cordialement
 
Dernière édition:

didcac

XLDnaute Occasionnel
Bonjour,
Voici la pièce jointe. Les données sont (seulement) en EF & EG, sur les 40 premières lignes, pour simplifier.

En résumé, les 4 cas de figure possibles se comportent ainsi :
1) quand il y a (par exemple) 2012 (en EF) & 2012 (en EG) : là c'est bon. La cellule de droite devient vide (objectif recherché).
2) quand il y a (par exemple) 2014 (en EF) & 2017 (en EG) : là aussi c'est bon. La cellule de droite continue d'afficher 2017.
3) quand il y a (par exemple) rien (en EF) & rien (en EG) : là, encore c'est bon. La cellule de gauche et la cellule de droite restent vides. Sauf que, petit bémol : s'il y a du texte en EE (la colonne qui précède), alors EF est remplie d'un zéro (exemple ici en ligne EF34).
4) quand il y a (par exemple) 2010 (en EF) & rien (en EG) : là, ça cloche. La cellule de droite se remplit alors d'un zéro (alors que j'attends le vide).
Merci.

NB : a priori, il est possible (ou nécessaire) qu'il faille définir une sorte de format à comparer avant de définir tel ou tel comportement de la fonction.
La plupart des données sont du TEXTE, avec le format de cellule dit Standard.

Autre idée : peut-être peut-on trouver un point d'ancrage de la cellule analysée en observant que le libellé générique des colonnes à traiter contiennent toutes précisément et partout dans la Base la séquence de caractères typographiques "_HistoAn2", avec pour élément de comparaison "_HistoAn1" (en colonne qui précède) ? Cela pourrait aider à mieux affiner l'action de la fonction, peut-être, en la ciblant ?

Merci.
 

Pièces jointes

  • BASE retraitée FINALE #4 (Données) TEST 2.xlsx
    422 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Alors un simple test de la cellule à reporter résoudra la chose. Voir le si imbriqué dans cette formule :
SI(Feuil1!EG2=Feuil1!EF2;"";SI(Feuil1!EG2<>"";Feuil1!EG2;""))
C'est une façon de répondre à votre première idée.

Concernant la deuxième, il ne me semble pas (mais peut-être que je me trompe), nécessaire ici d'alourdir la fonction qui paraît fonctionner. Avec excel, plus on aborde les choses simplement, moins on rencontre de problème. Aller au plus court.

Permettez moi de souligner et féliciter ici votre engagement dans la résolution de votre problématique. C'est de plus en plus rare chez les demandeurs, qui souvent ne souhaitent que du "clef en main".

Alors merci à vous

Cordialement
 

Pièces jointes

  • BASE retraitée FINALE #4 (Données) TEST 2.xlsx
    428 KB · Affichages: 6

didcac

XLDnaute Occasionnel
Bonjour,
Merci bien, cette petite correction change tout, en effet. Cela marche parfaitement, désormais. Super.

Concernant mon implication, que vous soulignez, et je vous en remercie, c'est vrai que j'essaie de m'intéresser à ce que je fais, en participant grâce à mon sens de l'observation, et c'est pour moi le minimum au vu de la gentillesse et du dévouement de beaucoup d'intervenants ici, qui aident bien aimablement ceux qui n'ont pas les compétences comme moi. Et ils y passent parfois du temps.
J'en salue d'ailleurs quelques uns au passage.
Et c'est bien évidemment aussi votre cas !

Pour la mise en oeuvre de la fonction, comme je l'avais déjà évoqué, je pense que je dois procéder ainsi :
• utiliser cette fonction uniquement pour les colonnes à traiter (tous les binômes évoqués)
• copier dans toutes les autres colonnes je suppose la fonction (neutre) suivante :
En Feuil2 : =SI(Feuil1!A1<>"";Feuil1!A1;"") pour Cellule A1, puis =SI(Feuil1!B1<>"";Feuil1!B1;"") pour Cellule B1, etc etc jusqu'à une colonne spéciale où je colle votre Formule, et ainsi de suite.
Ainsi, à la fin, je ferai une copie globale de toutes les cellules, en faisant ensuite Collage spécial / Valeurs sur la Feuille cible.

Car si je n'utilise que votre formule partout (genre "Remplissage vers le bas de tout), je risque de perdre des données si par malchance une colonne qui en suit une autre a elle aussi une même valeur répétée... Celle "de droite" va sauter sans que je m'en aperçoive, sur les centaines de milliers de données qu'il y a.
Est-ce exact ? Ma formule semble a priori bonne (et pas susceptible de générer des 0 par-ci, par là ?
Merci.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo