Comparaison de 2 colonne situé dans 2 tableau différents

ChouKa

XLDnaute Nouveau
Bonjour, voilà mon premier problème.

Je dispose d'un tableau excel avec une bonne dizaine de colonne dont une ou il y a des numéro de SIRET (pour identifier une entreprise par exemple). Le système fonctionne par ligne : dans une ligne : monsieur intel, capital tant, telephone ...
Plus tard, on va me donner un autre tableau excel contenant le même genre de donnée, mais avec des numéros de SIRET identique ou différents.
Mon but est donc de supprimer dans le second tableau les lignes où le numéro de SIRET correspond déjà à un numéro présent dans le premier tableau. Je dois donc supprimer les clients du second tableau qui se trouvent déjà dans le premier.

Je sais pas très bien si vous avez compris. En gros je dois garder mes lignes intacts mais supprimer celle déjà présente dans le premier ... le travail n'est pas évident car les numéro de SIRET ont 16 chiffres et j'ai environs 200 lignes par tableau, donc je ne peux pas le faire à la main. De plus mon patron veux que je lui montre comment cela fonctionne pour qu'il puisse le faire quand je serais plus là donc je dois lui faire un model ...
N'y connaissant pas grand chose en matière de tableau, je compte sur votre aide. Mon niveau relève à peu près du =somme(X,Y) c'est tout ce que je sais faire. Mais je suis tout à fait capable d'apprendre et je comprend très vite.

{Résolu} Et j'ai une seconde question : comment on fait pour faire un menu déroulant. je dois crééer une colonne ou je noterai si j'ai rentré client dans la base de donnée ou non et je veux que ce menu déroulant me permette d'afficher uniquement les oui ou les non ou tous ...

Merci, j'attends vos réponses. Bon dimanche !
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Bonjour Chouka

pour la 2ème question tu peux faire un filtre automatique

Pour le faire tu selectionne la ligne avec les entêtes de colonne, tu cliques dans DONNEES / FILTRER / FILTRE AUTOMATIQUE

Pour la première c est plus délicat, il faudrait faire une macro !!!

Bon dimanche

@+
 

ChouKa

XLDnaute Nouveau
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Ok merci pour le filtre, je tacherai de mettre ça en oeuvre Mardi.
En ce qui concerne la macro, j'ai une brève idée sur ce que c'est mais il faudrait m'expliquer un peu plus en détail ... j'ai quelques notions de programmations (C++) je pense que ça peut aider pour la "logique" de programmation mais des petites pistes et/ou idées seraient les bienvenues !

Merci pour ce premier pas !
 

Pierrot93

XLDnaute Barbatruc
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Re Chouka

J ai écris un petit bout de code qui pourrai t aider.
Il est à placer dans un module de ton 1er classeur.

Pour ce faire, tape ALT F11 pour ouvrir l'éditeur Visual basic.
Dans l'explorateur de projet clique sur VBA Projet de ton 1er classeur.
Dans la barre menu fait INSERTION / MODULE
Dans le nouveau module colle le code ci dessous.

Attention pour que cette macro fonctionne correctement, il faut pour chacun des classeurs :
Que tes numéros SIRET soient dans les colonnes A.
Qu'il y a une ligne d'en-tête de colonne en ligne 1.
Qu il n'y a pas de cellule vide dans les 2 colonne A.

Sinon il faut adapter le code.

Pour t'aider, en plus de ce forum tu peux consulter l'aide VBA qui est d'une très grande utilité. Par exemple tu peux faire F1 en te positionnant sur un mot du code et tu obtiens les infos sur la syntaxe


Sub SupLigneDoublonDans2emeClasseur()
Dim MaPlage1 As Range, MaPlage2 As Range, l1 As Long, l2 As Long, MesLignes As Integer

Application.ScreenUpdating = False

Set MaPlage1 = Workbooks("classeur1").Worksheets("Feuil1").Range([A1], [A1].End(xlDown))
Workbooks("classeur2").Activate
Set MaPlage2 = Workbooks("classeur2").Worksheets("Feuil1").Range([A1], [A1].End(xlDown))
Workbooks("classeur1").Activate

MesLignes = MaPlage2.Rows.Count

For l1 = 2 To MaPlage1.Rows.Count
For l2 = 2 To MesLignes
If MaPlage1(l1, 1).Value = MaPlage2(l2, 1).Value Then _
MaPlage2(l2, 1).EntireRow.Delete: MesLignes = MesLignes - 1
Next l2
Next l1

Application.ScreenUpdating = True

End Sub


Bon courage
@+
 

ChouKa

XLDnaute Nouveau
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Hello !

Merci pour ce code, j'ai essayé de comprendre et ça va je vois à peu près ce que ca dois faire ! (merci C++)
sinon je viens de l'essayer sur un mini tableau que j'ai refait et il me met une erreur d'exécution.
Erreur d'exécution '9'
L'indice n'appartient pas à la sélection.

Lorsqu"il indique l'erreur qd je fais debogage il me surligne la ligne Set MaPlage1 ...

J'ai essayé de comprendre en modifiant un peu le code mais rien n'y fait. J'ai cherché un peu d'aide dans l'aide VB mais sans résultats non plus, tu saurais d'ou cela peu provenir.
j'ai bien mis mes Siret ds la colonne A et mes entetes en premiere ligne mais sans résultat.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Bonjour Chouka

As tu bien deux classeurs ouverts répondant aux critères énoncés precedemment ? Hier chez moi ce code marchait sans problème, sinon joint ton fichier avec la macro modifiée, je regarderais.

Bonne journée
@+
 

BAU5086

XLDnaute Nouveau
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Bonjour

Je ne pense qu'il soit nécessaire de passer par une macro pour ler 1er point, il faut utiliser effectivement les filtres, pas en automatique, mais en élaboré.

Je me suis créé 2 fichiers tests (1 et 2 : je suis très original au niveau des dénominations) : je veux obtenir un fichier résultant de la compil des 2 premiers en écartant les doublons ...

Opé 1 : je copie les lignes du fichier 2 (sans les entêtes de colonnes, sauf si elles sont identiques) à la suite de celles du fichier 1.
Opé 2 : je fais 'Données'/'filtrer'/'filtre élaboré': je grise toute la zone à analyser ( en incluant les entêtes ) pour renseigner les plages, puis je grise la colonne de filtre (SIRET) pour renseigner le critère. Cocher 'Extraction sans doublon'. Touche ENTREE.
Opé 3 : je grise la zone obtenue ( des lignes ont été automatiquement masquées ), copier/coller sur une autre feuille de classeur Excel, puis sauvegarde . Le tour est joué ...

A noter : si un même SIRET se retrouve dans les 2 fichiers, mais avec des données différentes pour les autres colonnes, le filtre ne fonctionne pas ( bien qu'il n'y ait pas de différence sur la clé ...)
 

Pièces jointes

  • fichier 1 20060807.xls
    22.5 KB · Affichages: 107
  • fichier 2 20060807.xls
    22.5 KB · Affichages: 116

nat54

XLDnaute Barbatruc
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Je ne connaissais pas cette méthode rapide avecle filtre élaboré, super !

Moi j'utilisais cette macro récupérée sur un autre site
Code:
Sub ENLEVER_DOUBLONS()
ListeValUniques Range("A2:A5000"), Range("E1")
End Sub

Sub ListeValUniques(PlageSrc As Range, CellDest As Range)
'Extrait les valeurs uniques d'une colonne et les renvoie
'dans une autre, à partir de CellDest
Dim Arr1, Elt, Arr2(), Coll As New Collection

If PlageSrc.Columns.Count > 1 Then Exit Sub
Arr1 = PlageSrc.Value

For Each Elt In Arr1
On Error Resume Next
Coll.Add Elt, CStr(Elt)
If Err.Number = 0 Then
ReDim Preserve Arr2(1 To Coll.Count)
Arr2(Coll.Count) = Elt
End If
On Error GoTo 0
Next

CellDest.Resize(Coll.Count).Value = _
Application.Transpose(Arr2)

End Sub

A adapter avec ta plage
 

ChouKa

XLDnaute Nouveau
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Merci pour vos réponses.

Je viens de tester le filtre élaboré, c'est une bonne solution mais le problème est qu'il est rare que les données soient écrites exactement pareilles d'un tableau à l'autre. le format de l'adresse, du numéro de téléphone ou autre peuvent changer d'un tableau à l'autre et donc cela ne m'enlèverai pas les doublons ... mais dans le pire des cas c'est ce que j'utiliserai !
Je viens d'essayer vite fait la macro de Nat54, je n'ai pas trop réussit à la faire fonctionner mais je vais persévérer.
Et pour pierrot, je me suis bien mise dans les conditions nécessaires mais cela ne fonctionne pas je vais tacher d'envoyer mes fichiers test un peu plus tard. J'ai aussi un problème d'activation des macro et niveau de sécurité que même en lisant l'aide, je n'arrive pas à résoudre .. pas sympa avec moi excel lol
 

ChouKa

XLDnaute Nouveau
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Voilà mes fichiers tests avec la macro...
Merci de votre aide !

=> Nat54

pas mal le code que tu as trouvé mais le problème est qu'il faut que les deux tableaux se trouvent dans un seul. Mon vrai problème est que pour chaque ligne à la fin il y aura marqué si oui ou non le SIRET est déjà enregistré dans la base de donnée. Si, en faisant le tri, je garde la ligne ou il y a un blanc alors que le doublons est marqué OUI je ne saurai pas si je dois le re rentrer dans la base de donnée ou non, d'ou l'interet de supprimer les doublons uniquement dans la seconde feuille car je sais que je n'aurai encore pas touché à la seconde ...
c'est très compliqué !
de plus il faudrait modifier ton code pour qu'il copie les lignes complètes et non seulement la celllule

Merci quand meme :)
 

Pièces jointes

  • Classeur1.xls
    24 KB · Affichages: 93
  • Classeur1.xls
    24 KB · Affichages: 103
  • Classeur1.xls
    24 KB · Affichages: 101
  • Classeur2.xls
    13.5 KB · Affichages: 93
  • Classeur2.xls
    13.5 KB · Affichages: 102
  • Classeur2.xls
    13.5 KB · Affichages: 95
Dernière édition:

nat54

XLDnaute Barbatruc
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Moi je pensais que tu copierais
fihier 1 et fichier 2 en colonne A (et le reste dans les colonnes qui suivent, d'où une adaptation à ton fichier)
et que tu garderais le résultat sans doublons
 

Pierrot93

XLDnaute Barbatruc
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Re Chouka

J ai modifié le code, a priori problème de version Excel, chez moi il fnctionnait avec Excel xp 2002 et ici avec 2000 même message d erreur que toi.

Nouveau code à recopier

Sub SupLigneDoublonDans2emeClasseur()
Dim MaPlage1 As Range, MaPlage2 As Range, l1 As Long, l2 As Long, MesLignes As Integer

Application.ScreenUpdating = False

Set MaPlage1 = Range([A1], [A1].End(xlDown))
Windows("classeur2.xls").Activate
Set MaPlage2 = Range([A1], [A1].End(xlDown))
Windows("classeur1.xls").Activate

MesLignes = MaPlage2.Rows.Count

For l1 = 2 To MaPlage1.Rows.Count
For l2 = 2 To MesLignes
If MaPlage1(l1, 1).Value = MaPlage2(l2, 1).Value Then _
MaPlage2(l2, 1).EntireRow.Delete: MesLignes = MesLignes - 1
Next l2
Next l1

Application.ScreenUpdating = True

End Sub

J espère que cette fois ca va marcher et que tu vas pouvoir t en sortir

@+
 

ChouKa

XLDnaute Nouveau
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Génial !!!!!!!
Merci tout plein !!
Je testerai demain sur les vrais fichiers et je verrai ce que ça donne et s'il me manque quelques paramètres je reviendrai voir par ici !

merci beaucoup :) je vais marquer des points sur ce coup !
 

Pierrot93

XLDnaute Barbatruc
Re : Comparaison de 2 colonne situé dans 2 tableau différents

Re Chouka

j ai peut etre été un peu vite dans ma réponse, en fait sous excel 2000 il apparait qu il faut mettre les extensions ".xls" a la suite du nom "classeur1.xls" au lieu de "classeur1", alors que sous xp ca passe sans soucis.

ERRATUM : sous xp les fichiers n'étaient pas enregistrés donc a priori ne comportaient pas les extensions !!!

@+.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 503
Messages
2 089 062
Membres
104 014
dernier inscrit
Aurélie MONTEIL