XL 2016 Comparaison entre deux feuilles Excel

LeSaintKebab

XLDnaute Nouveau
Bien le bonjour tout le monde, je suis nouveau ici (ainsi qu'en VBA à vrai dire) et j'aurais besoin d'un peu de votre précieux temps si vous l'acceptez bien entendu !

Alors commençons par la situation actuelle...

Je reçois de manière hebdomadaire un fichier Excel reprenant tout un tas de données sur des milliers de lignes et des dizaines de colonnes.
J'ai mis en place un début de VBA qui cantonnent les données utiles à quelques centaines de lignes et à un peu moins de vingt colonnes, pour cette partie, ça va comme je veux :)
A noter également que je travaille sur deux feuilles "Tasks" et "Tasks (2)" ouvertes dans un même classeur et dont la structure (nombre de colonnes et type de valeur dans les cellules) est identique mais pas le contenu (nombre de lignes et valeur dans les cellules).

Ensuite, mes "connaissances" limitées m'empêchent d'aller au-delà (je ne sais même pas si c'est possible...)

Votre mission, à supposer que vous l'acceptiez consiste à...

Vérifier si la valeur des cellules de la colonne D de "Tasks" se retrouve quelque part au sein de la colonne D de "Tasks (2)" (peut être pas à la même ligne).
Si la réponse est 'non', il faudrait indiquer "nouveau" dans la colonne T de "Tasks" à hauteur de la ligne en question.
+ Optionnel : Mettre les cases contenant le terme "nouveau" dans la colonne T en 'Jaune'
Dans ce cas-ci, c'est tout.
Par contre, si la réponse est 'oui', alors voilà ce que j'aimerais voir :
Indiquer "continuation" dans la colonne T de "Tasks" à hauteur de la ligne en question.
Puis, comparer les cellules correspondantes en colonne R entre les feuilles "Tasks" et "Tasks (2)" (Exemple : D32 de "Tasks" = D27 de "Tasks (2)", comparer R32 de "Tasks" avec R27 de "Tasks (2)").
Deux possibilités alors, soit les valeurs en R sont identiques et il faudrait alors indiquer "identique" dans la colonne U de "Tasks" à hauteur de la ligne en question;
Ou alors, elles sont différentes donc il faudrait indiquer "changement" dans la colonne U de "Tasks" à hauteur de la ligne en question + optionnel : mettre la case en 'Rouge'.

Dernière chose à faire si la réponse est 'oui', il faudrait comparer les cellules correspondantes en colonne S entre les feuilles "Tasks" et "Tasks (2)" (Exemple : D56 de "Tasks" = D68 de "Tasks (2)", comparer S56 de "Tasks" avec S68 de "Tasks (2)").
Deux possibilités encore une fois, soit les valeurs en S sont identiques et il faudrait alors indiquer "identique" dans la colonne V de "Tasks" à hauteur de la ligne en question;
Ou alors, elles sont différentes donc il faudrait indiquer "changement" dans la colonne V de "Tasks" à hauteur de la ligne en question + optionnel : mettre la case en 'Rouge'.

NB : La comparaison devrait se faire à partir de la deuxième ligne étant donné que la première est constituée de "titres"...

Voilà donc ce que j'aimerais que la VBA fasse si possible, n'hésitez pas à me le dire si ce n'est pas le cas.

L'explication est assez longue et manque peut être de clarté à certains endroits donc n'ayez pas peur de m'interroger sur certaines parties si nécessaire ;)

Je vous remercie d'ores et déjà pour l'aide et le temps que vous me consacrez !

Bien cordialement,
LSK
 
Dernière édition:
Solution
Bonjour LeSaintKebab, Phil69970,

Ce problème se règle facilement par formules.

Voyez le fichier .xlsx joint avec dans la feuille ""Tasks" :

- en T2 :
Code:
=SI(NB.SI('Tasks (2)'!D:D;D2);"continuation";"nouveau")
- en U2 :
Code:
=SI($T2="nouveau";"";SI(RECHERCHEV($D2;'Tasks (2)'!$D:R;15;0)=R2;"identique";"changement"))
- en V2 :
Code:
=SI($T2="nouveau";"";SI(RECHERCHEV($D2;'Tasks (2)'!$D:S;16;0)=S2;"identique";"changement"))
Les résultats ne sont pas les mêmes que ceux de Phil69970.

A+

LeSaintKebab

XLDnaute Nouveau
Bonjour @LeSaintKebab et bienvenu sur XLD


Pour remplir la mission en supposant que je l'accepte il manque le fichier que tu as si bien décrit o_O

@Phil69970
Merci pour l'accueil @Phil69970 !

Je ne m'attendais pas à une réponse si rapide et j'avais donc posté le message avant de faire un 'fichier exemple'...
Le voilà terminé et merci pour ta réactivité ;)

Cordialement,
LSK
 
Dernière édition:

LeSaintKebab

XLDnaute Nouveau
@LeSaintKebab


J'ai pas vu de code VBA dans ton fichier mais ma vue baisse peut être. ;)

@Phil69970
Je te rassure, ta vue se porte bien @Phil69970 ;)

Je n'ai effectivement pas mis la VBA avec ce 'fichier exemple' puisqu'elle se fait en amont.
Le fichier que j'ai envoyé se trouve dans le même état que le fichier original une fois la VBA exécutée...

Une nouvelle VBA pour traiter mes demandes serait parfaite, je n'aurais qu'à la placer à la suite de celle existante ;)

Cordialement,
LSK
 

Phil69970

XLDnaute Barbatruc
@LeSaintKebab

J'ai regardé ton fichier et quelques remarques :

1)
J'ai mis en place un début de VBA qui cantonnent les données utiles à quelques centaines de lignes et à un peu moins de vingt colonnes, pour cette partie, ça va comme je veux :)
Bonjour le temps d’exécution !!!
On doit pouvoir faire largement mieux.....

2)
Vérifier si la valeur des cellules de la colonne D de "Tasks" se retrouve quelque part au sein de la colonne D de "Tasks (2)" (peut être pas à la même ligne).
Une fois ta macro exécuté la colonne D est masquée

1660746371511.png


3)
Et si on la démasque on obtient

1660746494300.png


Donc avant d'aller plus en avant donne un fichier correct avec des valeurs pouvant être exploitées

Les autres remarques arriveront surement après :oops:

@Phil69970
 

LeSaintKebab

XLDnaute Nouveau
Bonjour @Phil69970,

J'ai travaillé sur la VBA hier soir et j'ai trouvé la solution à mes questions donc je pense que cette discussion peut se clôturer ici ;)

Merci beaucoup pour le temps que tu m'as consacré et bonne continuation !

Cordialement,
LSK

PS : J'ai supprimé les fichiers que j'avais envoyé puisqu'ils ne représentaient pas correctement la situation :)
 

LeSaintKebab

XLDnaute Nouveau
Bonjour @LeSaintKebab

En attendant tes réponses j'avais fait ça qui répond à ta demande :

*Si tu as trouvé une solution il serait bien que le forum puisse en profité 🤔
==> C'est un forum de partage ...

Merci de ton retour

@Phil69970
Re @Phil69970

Ta VBA fait parfaitement le travail et ce, plus rapidement que la mienne donc je vais m'en servir ;)

Merci pour ta précieuse aide !

Cordialement,
LSK
 

job75

XLDnaute Barbatruc
Bonjour LeSaintKebab, Phil69970,

Ce problème se règle facilement par formules.

Voyez le fichier .xlsx joint avec dans la feuille ""Tasks" :

- en T2 :
Code:
=SI(NB.SI('Tasks (2)'!D:D;D2);"continuation";"nouveau")
- en U2 :
Code:
=SI($T2="nouveau";"";SI(RECHERCHEV($D2;'Tasks (2)'!$D:R;15;0)=R2;"identique";"changement"))
- en V2 :
Code:
=SI($T2="nouveau";"";SI(RECHERCHEV($D2;'Tasks (2)'!$D:S;16;0)=S2;"identique";"changement"))
Les résultats ne sont pas les mêmes que ceux de Phil69970.

A+
 

Pièces jointes

  • Comparaison entre 2 feuilles(1).xlsx
    92.2 KB · Affichages: 4

LeSaintKebab

XLDnaute Nouveau
Bonjour LeSaintKebab, Phil69970,

Ce problème se règle facilement par formules.

Voyez le fichier .xlsx joint avec dans la feuille ""Tasks" :

- en T2 :
Code:
=SI(NB.SI('Tasks (2)'!D:D;D2);"continuation";"nouveau")
- en U2 :
Code:
=SI($T2="nouveau";"";SI(RECHERCHEV($D2;'Tasks (2)'!$D:R;15;0)=R2;"identique";"changement"))
- en V2 :
Code:
=SI($T2="nouveau";"";SI(RECHERCHEV($D2;'Tasks (2)'!$D:S;16;0)=S2;"identique";"changement"))
Les résultats ne sont pas les mêmes que ceux de Phil69970.

A+
Bonjour @job75

Je dois avouer que je ne connais pas bien les formules Excel et que je n'y avais pas pensé (pensant, bêtement, que ma demande était trop complexe pour les formules).

En y prêtant davantage attention, j'ai constaté effectivement que les résultats obtenus par Phil n'étaient pas bons.

Les tiens, quant à eux, sont tout à fait corrects ;)

Merci beaucoup à vous deux pour l'aide et le temps que vous m'avez consacré.

Cordialement,
LSK
 

Discussions similaires

Réponses
4
Affichages
331