FORUM Rue-Montgallet.com
  Programmation
  VB - VBA

  Identification de doublons "positif et négatif" dans EXCEL

 

48 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Identification de doublons "positif et négatif" dans EXCEL

n°19336
klhac
Profil : Membre
Posté le 22-08-2008 à 10:23:02  profilanswer
 

Bonjour,
 
Je suis confronté dans le boulot à une galère. Je dois identifier tous les doublons d'une colonne qui fait pas loin de 2000 lignes.
Ne connaissant pas grand chose à la programmation, j'ai surfer sur le ent afin de trouver des infos, j'ai trouvé pas mal de choses (mise en forme conditionnelle, différents codes VBA ou autre) mais j'ai un soucis.
 
En fait, mes lignes sont des montants signés en positif ou en négatif.
Il s'agit pour moi d'identifier les lignes d'un même montant mais avec les 2 signes (par exemple, je dois trouvé "27450.00" et "-27450.00" )... tout ça dans la même colonne ,voici un exemple :
 
972755065670DKK      27,450.00    
972755065670DKK      14,025.00    
972755065670DKK     -27,450.00    
972755065670DKK      27,450.00

 
... ou bien créer une colonne et les faire apparaître.
 
J'aimerais bien éviter de me "palucher" les 2000 lignes à la main.
Connaissez-vous une formule excel ou un code VBA qui permettent d'identifier ceci?
 
Par avance un grand merci.
K.


Message édité par klhac le 22-08-2008 à 10:39:24

---------------
Pc portable TOSHIBA
P200-1CB
mood
Pub
Posté le 22-08-2008 à 10:23:02  profilanswer
 

n°19338
galopin01
Profil : Membre
Posté le 25-08-2008 à 08:49:32  profilanswer
 

bonjour,
ta demande est un peu vague. les paires (doublons) sont elles consécutives ?
ton exemple est sommaire... pourquoi préférer la paire 3-4 et non pas la paire 1-3 ?
A quoi sert la longue série de codes identiques dans la première colonne ?
D'une manière générale on peut considérer ce pb comme un pb de rapprochement bancaire :
Comparer chaque nombre à tous les autres : Si a = b alors doublon.
Dans ton cas yaka écrire si a+b= 0 alors doublon.
Après s'il y a plusieurs doublons yfo voir s'il y a un discriminant...
A+

n°19339
klhac
Profil : Membre
Posté le 25-08-2008 à 09:51:35  profilanswer
 

En fait, tu as tout compris, je travaille effectivement sur des rappros bancaires.
 
Bien sûr, j'ai pris la paire 3-4 mais la paire 1-3 me convient aussi... à partir du moment où les doublons même montant avec signe opposé sont mis en exergue, cela me convient !!!
 
Pour ce qui est de la longue série de code, il s'agit en fait d'une concatenation de 3 colonnes (j'ai pensé à faire comme ça pour commencer), les doublons doivent se faire sur même "guichet", même "Devise" et même "Numéro de compte" : soit les 3 colonnes.
 
Voici pour exemple mon fichier excel :
 
 
http://images4.hiboox.com/images/3508/adb500131a92adeab66614586aee980d.jpg
 
 
 => la colonne couleur saumon est la colonne concatenée et la dernière colonne en bleu est là où je dois trouver les doublons.
 
Merci à vous.
K.
 
 
 
 


Message édité par klhac le 25-08-2008 à 09:52:42

---------------
Pc portable TOSHIBA
P200-1CB
n°19341
galopin01
Profil : Membre
Posté le 25-08-2008 à 20:32:46  profilanswer
 

bonjour,
voilà une macro qui devrait faire l'affaire :

Code :
  1. Sub test()
  2. Dim i%, j%
  3. k = Range("H1" ).End(4).Row
  4. For i = 2 To k - 1
  5. Y = False
  6.   If Cells(i, 9) = 0 Then
  7.     For j = i + 1 To k
  8.       If Cells(i, 8) + Cells(j, 8) = 0 Then
  9.         If controle(i, j) Then
  10.           Cells(i, 9) = x + 1
  11.           Cells(j, 9) = x + 1
  12.           x = x + 1
  13.           Y = True
  14.         End If
  15.       End If
  16.       If Y Then Exit For
  17.     Next j
  18.   End If
  19. Next i
  20. End Sub
  21. Function controle(i%, j%) As Boolean
  22. controle = (Cells(i, 6) = Cells(j, 6)) And Cells(j, 9) = 0
  23. End Function


Cette macro utilise la colonne F pour contrôle et la colonne G pour marquer les paires (chaque paire est identifiée par un N°)  
A+

n°19342
klhac
Profil : Membre
Posté le 26-08-2008 à 16:48:32  profilanswer
 

Salut Galopin01,
 
J'ai lancé la macro, elle tourne mais rien n'apparaît dans la colonne G !!!!


---------------
Pc portable TOSHIBA
P200-1CB
n°19343
galopin01
Profil : Membre
Posté le 26-08-2008 à 19:25:00  profilanswer
 

bonsoir,
A les macros... Ce sont des pièces d'horlogerie !
Les deux macros doivent se trouver dans un module standart (Module1) et non pas dans un module de feuille.
Il faut lancer la macro à partir de la feuille à traiter...
La feuille à traiter doit avoir la même structure que ton exemple (en particulier, la ligne 1 doit être l'entête des colonnes et la colonne H ne doit pas comporter de "trous"...)
Si tu n'y arrives vraiment pas tu me passes un petit bout de fichier en pièce jointe.
A+

n°19344
galopin01
Profil : Membre
Posté le 26-08-2008 à 19:36:23  profilanswer
 

La démo

n°19345
klhac
Profil : Membre
Posté le 27-08-2008 à 10:10:35  profilanswer
 

Ahhh SUPERRRRRR, ça fonctionne !!!!  :bounce:  :bounce:  :bounce:  :bounce:  
Merci infiniment.
Comment pourrais-je te remercier, je pourrais te payer un coup à boire mais virtuellement, c'est compliqué.
 
Alors un GRAND MERCI à galopin01 pour son aide précieuse.
 
Bonne semaine à toi (et aux autres aussi bien sûr).
 
K.
 


---------------
Pc portable TOSHIBA
P200-1CB
n°19351
klhac
Profil : Membre
Posté le 04-09-2008 à 15:52:35  profilanswer
 

Ooooppps, une dernière question, j'ai un fichier de 33 000 lignes et la macro plante et donne l'erreur code "Erreur d'éxécution "6", Dépassement de capacité"
 
Any idea?


---------------
Pc portable TOSHIBA
P200-1CB
n°19352
galopin01
Profil : Membre
Posté le 05-09-2008 à 14:56:51  profilanswer
 

remplacer tous les "%" par des "&"
A+

n°19353
klhac
Profil : Membre
Posté le 08-09-2008 à 11:00:50  profilanswer
 

Dans le code de la macro directement tu veux dire ???


---------------
Pc portable TOSHIBA
P200-1CB
n°19354
galopin01
Profil : Membre
Posté le 09-09-2008 à 05:08:46  profilanswer
 

Oui,

Code :
  1. Sub test()
  2. Dim i&, j&
  3. k = Range("H1" ).End(4).Row
  4. For i = 2 To k - 1
  5. Y = False
  6.   If Cells(i, 9) = 0 Then
  7.     For j = i + 1 To k
  8.       If Cells(i, 8) + Cells(j, 8) = 0 Then
  9.         If controle(i, j) Then
  10.           Cells(i, 9) = x + 1
  11.           Cells(j, 9) = x + 1
  12.           x = x + 1
  13.           Y = True
  14.         End If
  15.       End If
  16.       If Y Then Exit For
  17.     Next j
  18.   End If
  19. Next i
  20. End Sub
  21. Function controle(i&, j&) As Boolean
  22. controle = (Cells(i, 6) = Cells(j, 6)) And Cells(j, 9) = 0
  23. End Function


Le & transforme les variables integer (%) en variables de type long.
A+


Message édité par galopin01 le 09-09-2008 à 05:14:23
n°19365
klhac
Profil : Membre
Posté le 16-09-2008 à 08:33:33  profilanswer
 

Super, ça fonctionne mais c'est super long !!!!!!!
Encore un grand merci pour tout.
@+
K.


---------------
Pc portable TOSHIBA
P200-1CB
n°19969
when_one
Profil : Jeune recrue
Posté le 21-09-2010 à 09:48:17  profilanswer
 

Bonjour,
 
je rencontre le même que klhac mais mon fichier n'est pas au même format.
 
Est-ce que quelqu'un peut m'aider à mettre une macro en place car j'ai également plein de doublons, sauf que ma base fait plus de 50 000 lignes !!!
 
je vous remercie par avance.
 
W_O

n°19970
galopin01
Profil : Membre
Posté le 22-09-2010 à 10:30:15  profilanswer
 

Bonjour,
Le forum est fait pour ça mais on n'a pas de boule de cristal !
A+

n°19971
when_one
Profil : Jeune recrue
Posté le 22-09-2010 à 11:12:37  profilanswer
 

Si je te donne une partie du fichier en question est-ce possible?
 
Merci. @+

n°19972
galopin01
Profil : Membre
Posté le 22-09-2010 à 17:53:33  profilanswer
 

bonjour,
je ne promet rien mais on peut essayer.  
Essaye de mettre suffisament d'explications aussi pour que je ne passe pas 2 jours à me demander ce que je dois comparer et comment mettre en évidence les doublons.
Inutile d'envoyer un trop gros fichier quelques dizaines (voire centaines) de lignes suffisent du moment que je peux y trouver quelques doublons.
L'important c'est que la structure du classeur et la structure des feuilles soit conservées. Les contenus (nom, adresses, téléphones peuvent être supprimés.
Fichier à Enregistrer sous... Classeur Excel 93 -2003 de préférence.
 
A+

n°19988
galopin01
Profil : Membre
Posté le 27-09-2010 à 20:39:34  profilanswer
 

Je n'arrive plus à te joindre en mail.
Je te donne ici le texte de mon dernier message :
Je ne sais pas si tu as eu mes réponses. J'ai beaucoup de messages d'erreur avec ton adresse e-mail.
"Undelivered Mail Returned to Sender"
 
Je te repasse le dernier en date :
 
- Puis-je modifier le Set Ws = [Feuil1] pour mettre un autre nom à la place (par exemple "RESULTAT" ).
 
Bien sur !
Si tu n'utilise pas le CodeName de VBA il faut écrire :
 
Set Ws = Worksheets("RESULTAT" )
 
Pour la deuxième partie (exclure du tri tous les données qualifiées en "ORDINT" ) YAKA remplacer :
 
[]If ArrF(i, 1) = 0 Then[/] Par…
 
If ArrF(i, 1) = "" Then
 
Ensuite… Une autre modification… pour la colonne K
 
[] ArrM = Ws.Range("L1:L" & k) [/] à remplacer par :
 
ArrM = Ws.Range("K1:K" & k)
 
Et pour la somme des doublons… Je suppose que tu as quelques centimes d'écarts ?
Pour des calculs monétaires, il faut cocher (Outils / IOptions) + Calculer avec la précision au format affiché.  
 
Sinon Excel te fait cela en calcul scientifique avec virgule flottante ou en binaire je ne sais pas trop... et c'est parfois surprenant même pour de simples additions !
 
A+


Aller à :
Ajouter une réponse
  FORUM Rue-Montgallet.com
  Programmation
  VB - VBA

  Identification de doublons "positif et négatif" dans EXCEL

 

Comparhaut
Conditions d'utilisation
© 2000-2014 SARL ComparHaut - Tous droits réservés