Traitement des doublons en excel

Fermé
bitbit - 23 févr. 2016 à 09:07
 Utilisateur anonyme - 24 mai 2016 à 23:30
Bonjour
Je viens solliciter une aide

Voici un extrait de mon fichier brut

Réf nom et prénom montant observation
K0 FRANCOISE m 54 500
z1 LA VOIL 124 500 Montant erroné
z1 LA VOIL -124 500 Annulation
z1 LA VOIL 166 500 Montant corrigé
A2 MAMA 102 000
M9 KEPI Y 42 500
T1 MAMADOU 55 500 Montant erroné
T1 MAMADOU -55 500 Annulation
T1 MAMADOU 35 250 Montant corrigé

Mon souhait est le suivant
Par macro Excel Supprimer toutes les lignes dont les réf st identiques dont les montants sont opposés

Le fichier traité se présente comme suit

Réf nom et prénom montant observation
K0 FRANCOISE m 54 500
z1 LA VOIL 166 500 Montant corrigé
A2 MAMA 102 000
M9 KEPI Y 42 500
T1 MAMADOU 35 250 Montant corrigé

Merci d'avance pour votre aide.
A voir également:

3 réponses

Utilisateur anonyme
8 avril 2016 à 07:04
Bonjour bitbit,

Vous avez écrit :
Voici un extrait de mon fichier brut
et plus bas :
Le fichier traité se présente comme suit

A) Si les données sont dans un fichier externe (de base de données par exemple) que vous voulez récupérer dans Excel, et qu'ensuite vous voulez enregistrer le résultat du traitement dans un autre fichier externe, alors je ne suis pas la bonne personne pour vous aider, car je n'aime pas trop les traitements de fichiers sur disque ; dans ce cas, inutile de lire tout ce qui suit.

B) Si fichier a le sens de fichier Excel (et donc de classeur Excel), les données à traiter sont sur une feuille de calcul Excel et le résultat du traitement sera aussi sur une feuille de calcul Excel. Dans ce cas, je suis tout prêt à vous aider volontiers, mais pour cela, j'ai besoin de quelques renseignements supplémentaires.

==========================================

1) Dans votre fichier brut, j'ai remarqué ceci :

Les lignes d'une même référence (et donc d'une même personne) sont toujours groupées ensemble (par groupe de 3 lignes) ; donc à l'intérieur de ce groupe, il n'y a aucune ligne d'une autre référence (pas de mélange). Est-ce TOUJOURS le cas ?

Si votre réponse est « Oui », le code VBA pourra traiter le fichier brut directement et plus facilement.

Si votre réponse est « Non », on pourrait commencer par trier le fichier brut par ordre croissant des références (ce qui ramènera au cas précédent) ; mais à condition que ça ne vous ennuie pas, car bien sûr, l'ordre initial des lignes sera modifié (et donc perdu).

==========================================

2) Dans la colonne Observation, on peut voir 3 valeurs différentes :
"Montant erroné" ; "Annulation" ; "Montant corrigé".

À part le cas d'une case Observation vide, est-ce que ce sont TOUJOURS les seules valeurs, ou peut-il y en avoir d'autres ?

Si votre réponse est « Oui », je pourrai mettre en place une petite astuce qui simplifiera à la fois la saisie des données et le code VBA.

==========================================

3) Supposez que pour une même référence (une même personne) :

a) On trouve 1 ligne « Montant erroné » et 1 ligne « Annulation » de montants opposés. D'après ce que vous demandez, on devrait les supprimer toutes les deux.

b) Mais la ligne « Montant corrigé » n'est pas présente (parce que l'écriture n'a pas encore été saisie ou a été oubliée). Dans ce cas, faut-il quand même supprimer les 2 lignes « Montant erroné » et « Annulation » ? Je pense qu'il ne vaut mieux pas, pour garder une trace de cette écriture, mais ce sera comme vous me l'indiquerez.

Et ce sera encore beaucoup plus simple si vous pouvez me dire avec certitude que le cas b) n'arrivera JAMAIS ; cela parce que s'il y a 2 lignes « Montant erroné » et « Annulation », alors la ligne « Montant corrigé » sera TOUJOURS présente (= ligne TOUJOURS saisie et JAMAIS oubliée).

==========================================

4) Dans le fichier qui résultera (le fichier traité) :

Pour une même référence (= une même personne), s'il reste une ligne « Montant corrigé », c'est qu'il y avait eu 2 lignes "Montant erroné" et "Annulation" de montants opposés, qui ont été toutes deux supprimées.

Dans ce cas, est-ce bien utile de conserver la valeur de la colonne Observation : « Montant corrigé » ?

Je propose d'effacer cette valeur, et la case Observation sera de nouveau vide (ce qui allégera le tableau et le rendra plus lisible).

Mais si vous me dites que vous tenez à garder cette valeur,
je ferai comme vous voudrez.

D'ailleurs, peut-être tenez-vous à garder cette valeur pour vous rappeler qu'auparavant, il y avait eu un autre montant suivi d'une correction ? Qu'en pensez-vous ?

Cordialement.
 
0
Utilisateur anonyme
11 avril 2016 à 01:18
Bonjour bitbit,

J'ai oublié que sur le forum, la règle est de se tutoyer, dans le respect et avec courtoisie. Tu peux donc me tutoyer toi aussi.

Mon message 1 est devenu inutile : pas la peine de le lire !

=========================================

J'ai entièrement résolu ton exercice, auquel j'ai ajouté l'astuce suivante :

J'ai utilisé une colonne « Code », qui est un Code Observations.

Et la colonne « Observations » contient la formule qui donne les bonnes valeurs à partir du Code Observations.

=========================================

La personne X qui est chargée de la saisie des données doit ajouter cette colonne juste avant la colonne « Observations ».

X n'aura plus besoin d'introduire à chaque fois les valeurs « Montant erroné », « Annulation », « Montant corrigé » ; et si c'était un choix dans une liste, ça ne sera plus nécessaire.

En effet, avec la colonne « Code », X devra simplement saisir 1 pour avoir la valeur « Montant erroné » en colonne « Observations » ; s'il saisit 2, il aura à côté « Annulation » ; s'il saisit 3, il aura à côté « Montant corrigé » ; et s'il efface le nombre précédemment introduit, la cellule « Observations » qui est à côté redeviendra vide.

Cette colonne Code devra avoir une Validation des données qui permettra uniquement l'entrée de 1, 2, ou 3 (avec cellule vide autorisée).

--------------------------------------------------------------------------

Le fichier brut ne devra plus reprendre la valeur « Observations », mais à la place, il devra reprendre cette valeur « Code ».

C'est donc une simplification à la fois pour la saisie des données, et pour le code VBA qui doit résoudre l'exercice.

=========================================

Je te donnerai la bonne formule plus tard, ainsi que mon code VBA.
Mais je veux d'abord savoir :

1) Est-ce que ça t'intéresse toujours d'avoir une solution ?
Car tu en as peut-être déjà trouvé une qui te convient.

--------------------------------------------------------------------------

2) Si tu es intéressé par ma solution, je dois savoir si tu as
la possibilité de mettre en place mon astuce ; c'est-à-dire que
tu dois pouvoir modifier toi-même la feuille Excel de saisie de
données, afin d'ajouter la colonne Code et modifier la colonne
Observations.

Ou si tu ne peux pas le faire toi-même, il faudrait que
la personne qui puisse le faire soit d'accord pour cela.

--------------------------------------------------------------------------

3) Quand tu parles de fichier brut, s'il s'agit d'un fichier externe que
tu lis pour en récupérer les données dans une feuille de calcul Excel,
je te laisses le soin d'en écrire le code VBA.

De même si tu veux enregistrer le résultat du traitement dans
un autre fichier externe (celui que tu appelles fichier traité).

Mais je pense que dans les 2 cas, tu voulais parler de fichier Excel,
donc il n'y a aucun fichier externe (ni en entrée, ni en sortie) :
les données brutes sont toutes dans une feuille de calcul Excel,
et le résultat sera sur cette même feuille de calcul.

Je te demande de m'indiquer quel est le cas réel : fichiers externes
(pour lesquels tu écriras toi même le code VBA) ou feuille de calcul
Excel uniquement.
 
0
Excusez moi pour le retard, seulement j'ai été hospitalisé et je ne pouvais pas consulter.

Avant de répondre aux interrogations des différentes personnes qui souhaitent des éclaircissements je vous dis sincèrement merci.

- la colonne observation ne fait partie du fichier
-le fichier est un classeur Excel
-le fichier n'est pas forcement classé (groupé) par référence au départ, je l'ai pour élucider mon problème
0
Bonsoir,

C'est bitbit ou bibit ? Tu as changé ou corrigé ton pseudo ?

Désolé que tu aies dû faire un séjour à l'hôpital. J'espère que tu es
maintenant complètement guéri, ou que c'est pour bientôt.

Merci d'avoir précisé que tes données sont dans un classeur Excel,
mais quand tu écris que les données de la colonne « Observation »
n'en font pas partie, où donc se trouvent-elles ? Dans un autre
fichier Excel séparé (et si oui, de quel nom) ? Dans un fichier
de base de données Access (ou autre base de données) ?

J'espère qu'on pourra facilement reprendre ces données dans Excel !
Et ce sera beaucoup plus simple si on peut remplacer ainsi
les valeurs de la colonne « Observation » :

« Montant erroné » par 1
« Annulation » par 2
« Montant corrigé » par 3

Cela si possible avant transfert de ces données dans Excel,
ou sinon après.

Remarque : la solution que j'ai déjà faite marche déjà pour
des références non classées.

Quelle est ta version de Excel ? 2003 ? 2007 ? autre ?

Cordialement.  😊
 
0