Comparer deux colonnes et afficher la différence

Bonjour tout le monde,

J'ai une liste de titres dans une colonne A (environ 90000), et une deuxième liste de titres dans une colonne B (environ 22000)

Je souhaite afficher dans une colonne C, le ou les titres de la colonne A, n'étant pas présent dans la colonne B.

Vous trouverez ci-joint un échantillon d'une centaine de titres.

Merci par avance pour votre aide!

194comp-titres.xlsx (16.49 Ko)

Bonjour,

Une solution par macro "récupérée surn un site dont le nom figure dans le VBA du fichier"

Ton fichier n'éttant pas pratique pour la compréhension, j'ai fait un exemple simplifié

Code à mettre dans un module

Sub absent()
  Set f1 = Sheets("titre")
  Set f2 = Sheets("titre")
  Set MonDico1 = CreateObject("Scripting.Dictionary")
  For Each c In f1.Range("b2:b" & f1.[b65000].End(xlUp).Row)
    MonDico1.Item(c.Value) = c.Value
  Next c
  Set MonDico2 = CreateObject("Scripting.Dictionary")
  For Each c In f2.Range("a2:a" & f2.[a65000].End(xlUp).Row)
    If Not MonDico1.exists(c.Value) Then
      If Not MonDico2.exists(c.Value) Then MonDico2(c.Value) = c.Row
    End If
  Next c
  Sheets("titre").[c2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.keys)
  '------------------------------------------------------------------------------------
  'ligne à faire sauter si N° de ligne pas utile
  Sheets("titre").[d2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.items)
  '-------------------------------------------------------------------------------------
End Sub

Quand tu lance la macro,

les absents de la Col A en Col B se placent en Col C

Petit plus en Col D le N° de ligne de absents.

Si pas utile faire sauter le code commenté dans VBA

J'ai mis en rouge les absents pour vérif

.

346hatem.zip (13.47 Ko)

Bonjour,

D'abord merci pour votre réponse, mais quand je l'applique sur mes titres, la macro génère ce message d'erreur "Erreur d'exécution ligne 13 incompatibilité de type; le bug est dans cette ligne :

Sheets("titre").[c2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.keys)

En fait, mon fichier contient des titres de monographies, donc généralement on trouve le titre de l'ouvrage slash l'auteur, des caractères typographiques et de ponctuation comme les accolades, les parenthèses, des points de suspension, des points-virgules, etc. sans oublier aussi la longueur de quelques titres comme cet exemple (A history and analysis of the constitution of the United States : with a full account of the confederations wihich preceded it ; of the debates and acts of the convention which formed it ; of the judicial decisions which have construed it ; with papers and tables illustrative of the action of the government and the people under it / by Nathaniel C. Towle.).

Avez-vous une idée comment régler ce problème, svp?

Merci par avance de votre aide.

Amicalement,

Re,

Il faut que tu adapte la macro, dans l'exemple j'ai nommé la page "titre", à remplacer par le nom de ta propre feuille.

Sur ton FG elle se nomme feuil1

Sheets("ici le nom de ta feuille").[c2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.keys)

Idem pour toutes les lignes de code ou figure le mot "titre"

Sub absent()
  Set f1 = Sheets("feuil1")
  Set f2 = Sheets("feuil1")
  Set MonDico1 = CreateObject("Scripting.Dictionary")
  For Each c In f1.Range("b2:b" & f1.[b65000].End(xlUp).Row)
    MonDico1.Item(c.Value) = c.Value
  Next c
  Set MonDico2 = CreateObject("Scripting.Dictionary")
  For Each c In f2.Range("a2:a" & f2.[a65000].End(xlUp).Row)
    If Not MonDico1.exists(c.Value) Then
      If Not MonDico2.exists(c.Value) Then MonDico2(c.Value) = c.Row
    End If
  Next c
  Sheets("feuil1").[c2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.keys)
  '------------------------------------------------------------------------------------
  'ligne à faire sauter si N° de ligne pas utile
  Sheets("feuil1").[d2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.items)
  '-------------------------------------------------------------------------------------
End Sub

.

Re,

J'ai renommé déjà le classeur et j'ai testé la macro sur une partie des titres, mais il parait que le problème vient de la longueur de quelques titres. Y a-t-il des limites quelque part? Peut-on contourner ce problème?

Merci

Re,

hatem a écrit :

mais il parait que le problème vient de la longueur de quelques titres. Y a-t-il des limites quelque part?

Il semblerai que la limite soit de 255 caractère

Peut-on contourner ce problème?

Je n'ai jamais été confronté à ce problème donc pas d'idée

.

Re,

Si le problème vient juste des titres qui dépassent les 255 caractères, ce n’est pas grave je vais essayer de les déterminer et les modifier manuellement.

Merci beaucoup pour votre aide.

Amicalement,

Rechercher des sujets similaires à "comparer deux colonnes afficher difference"