Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Urgent] Tri de chiffres identiques dans 2 colonnes Excel

7 réponses
Avatar
Wattie
Bonjour,

J'ai un problème à soummettre avec Excel et cela serait sympa de m'aider :

J'ai deux colonnes de chiffres (entre 2000 et 3000 lignes).
J'aimerais faire apparaitre dans une troisième colonne, les chiffres qui
sont en commun aux colonnes 1 et 2.

De même, j'aimerais ensuite faire apparaitre la colonne 1 (et 2) sans les
chiffres communs à 1 et 2.

Est-il possible de refaire ensuite cette meme manip sur 3 colonnes?

Existe t-il une macro pour faire ça ? Je ne sais pas en faire...

C'est pour mon boulot et je suis bloquée à l'heure actuelle, du moins je
compte et tri
à l'oeil mais c'est pas très précis...

Merci pour toute aide rapide.

Laurette.
Configuration: Mac OS X
Firefox 2.0.0.6

7 réponses

Avatar
Daniel.C
Bonjour.
Pour lister les doublons en colonne C :

Sub ListeDoublons()
Dim Ligne As Long, c As Range, Col As Integer
Dim Plage As Range
Ligne = 1
Set Plage = Union(Range("A1", Range("A65536").End(xlUp)), _
Range("B1", Range("B65536").End(xlUp)))
For Each c In Plage
If IsError(Application.Match(c, [C:C], 0)) Then
If Application.CountIf(Plage, c) > 1 Then
Cells(Ligne, 3) = c
Ligne = Ligne + 1
End If
End If
Next c
End Sub

Pour les supprimer ensuite (les doublons doivent être listés en colonne C) :

Sub SuppressionDoublons()
Dim c As Range, Plage As Range
For x = 1 To 2
For i = Cells(65536, x).End(xlUp).Row To 1 Step -1
If IsNumeric(Application.Match(Cells(i, x), [C:C], 0)) Then
Cells(i, x).Delete xlShiftUp
End If
Next i
Next x
End Sub

Cordialement.
Daniel
"Wattie" a écrit dans le message de news:
46e912ed$0$4466$

Bonjour,

J'ai un problème à soummettre avec Excel et cela serait sympa de m'aider :

J'ai deux colonnes de chiffres (entre 2000 et 3000 lignes).
J'aimerais faire apparaitre dans une troisième colonne, les chiffres qui
sont en commun aux colonnes 1 et 2.

De même, j'aimerais ensuite faire apparaitre la colonne 1 (et 2) sans les
chiffres communs à 1 et 2.

Est-il possible de refaire ensuite cette meme manip sur 3 colonnes?

Existe t-il une macro pour faire ça ? Je ne sais pas en faire...

C'est pour mon boulot et je suis bloquée à l'heure actuelle, du moins je
compte et tri
à l'oeil mais c'est pas très précis...

Merci pour toute aide rapide.

Laurette.
Configuration: Mac OS X
Firefox 2.0.0.6



Avatar
JB
Bonjour,

Function InterSectionTriée(a As Range, b As Range)
Dim temp()
k = 0
For i = 1 To a.Count
For j = 1 To b.Count
If a(i) = b(j) And a(i) <> "" And b(j) <> "" Then
ReDim Preserve temp(0 To k)
temp(k) = a(i)
k = k + 1
End If
Next j
Next i
Call tri(temp, 0, k - 1)
InterSectionTriée = Application.Transpose(temp)
End Function

Function FusionTriée(a As Range, b As Range)
Dim temp()
k = 0
For i = 1 To a.Count
If a(i) <> "" Then
ReDim Preserve temp(0 To k)
temp(k) = a(i)
k = k + 1
End If
Next i
For i = 1 To b.Count
If IsError(Application.Match(b(i), a, 0)) And b(i) <> "" Then
ReDim Preserve temp(k)
temp(k) = b(i)
k = k + 1
End If
Next i
Call tri(temp, 0, k - 1)
FusionTriée = Application.Transpose(temp)
End Function

Sub tri(a(), gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

Function DiffTriée(a As Range, b As Range)
Dim temp()
k = 0
For i = 1 To a.Count
If IsError(Application.Match(a(i), b, 0)) And a(i) <> "" Then
ReDim Preserve temp(k)
temp(k) = a(i)
k = k + 1
End If
Next i
Call tri(temp, 0, k - 1)
DiffTriée = Application.Transpose(temp)
End Function

http://cjoint.com/?jnnCTyltTN

http://boisgontierjacques.free.fr/fichiers/jb-UnionDiffListes.zip" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://boisgontierjacques.free.fr/fichiers/jb-UnionDiffListes.zip

JB
http://boisgontierjacques.free.fr





On 13 sep, 12:37, "Wattie" wrote:
Bonjour,

J'ai un problème à soummettre avec Excel et cela serait sympa de m'ai der :

J'ai deux colonnes de chiffres (entre 2000 et 3000 lignes).
J'aimerais faire apparaitre dans une troisième colonne, les chiffres qui
sont en commun aux colonnes 1 et 2.

De même, j'aimerais ensuite faire apparaitre la colonne 1 (et 2) sans l es
chiffres communs à 1 et 2.

Est-il possible de refaire ensuite cette meme manip sur 3 colonnes?

Existe t-il une macro pour faire ça ? Je ne sais pas en faire...

C'est pour mon boulot et je suis bloquée à l'heure actuelle, du moins je
compte et tri
à l'oeil mais c'est pas très précis...

Merci pour toute aide rapide.

Laurette.
Configuration: Mac OS X
Firefox 2.0.0.6


Avatar
Daniel.C
J'espère que ça fonctionne sur Mac.
Sur PC, pour coller les macros, tu fais ALT+F11 ou Outils / Macro / Visual
Basic Editor
Daniel
"Daniel.C" a écrit dans le message de news:

Bonjour.
Pour lister les doublons en colonne C :

Sub ListeDoublons()
Dim Ligne As Long, c As Range, Col As Integer
Dim Plage As Range
Ligne = 1
Set Plage = Union(Range("A1", Range("A65536").End(xlUp)), _
Range("B1", Range("B65536").End(xlUp)))
For Each c In Plage
If IsError(Application.Match(c, [C:C], 0)) Then
If Application.CountIf(Plage, c) > 1 Then
Cells(Ligne, 3) = c
Ligne = Ligne + 1
End If
End If
Next c
End Sub

Pour les supprimer ensuite (les doublons doivent être listés en colonne C)
:

Sub SuppressionDoublons()
Dim c As Range, Plage As Range
For x = 1 To 2
For i = Cells(65536, x).End(xlUp).Row To 1 Step -1
If IsNumeric(Application.Match(Cells(i, x), [C:C], 0)) Then
Cells(i, x).Delete xlShiftUp
End If
Next i
Next x
End Sub

Cordialement.
Daniel
"Wattie" a écrit dans le message de news:
46e912ed$0$4466$

Bonjour,

J'ai un problème à soummettre avec Excel et cela serait sympa de m'aider
:

J'ai deux colonnes de chiffres (entre 2000 et 3000 lignes).
J'aimerais faire apparaitre dans une troisième colonne, les chiffres qui
sont en commun aux colonnes 1 et 2.

De même, j'aimerais ensuite faire apparaitre la colonne 1 (et 2) sans les
chiffres communs à 1 et 2.

Est-il possible de refaire ensuite cette meme manip sur 3 colonnes?

Existe t-il une macro pour faire ça ? Je ne sais pas en faire...

C'est pour mon boulot et je suis bloquée à l'heure actuelle, du moins je
compte et tri
à l'oeil mais c'est pas très précis...

Merci pour toute aide rapide.

Laurette.
Configuration: Mac OS X
Firefox 2.0.0.6







Avatar
MichDenis
Une façon rapide de le faire :

Dans l'exemple suivant :
Le nom de l'onglet de la feuille est : Feuil1
Les 2 colonnes de données sont A1:A5 et B1:B5

Résultat obtenu :
En colonne C -> les chiffres qui sont identiques au deux colonnes
En colonne D -> Chiffres de la colonne A qui n'existent pas en colonne B
En colonne E -> Chiffres de la colonne B qui n'existent pas en colonne A

Il ne te reste plus qu'à adapter les plages de cellules qui correspondent
à ton application dans les formules.

'--------------------------------------
Sub test()
On Error Resume Next
Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("C1:C5")
.Formula = "=IF(ISNUMBER(MATCH(" & _
.Rows(1).Offset(, -1).Address(0, 0) & _
",$A$1:$A$5,0))," & _
.Rows(1).Offset(, -1).Address(0, 0) & ","""")"
End With
With .Range("D1:D5")
.Formula = "=IF(ISNA(MATCH(" & _
.Rows(1).Offset(, -3).Address(0, 0) & _
",$B$1:$B$5,0))," & _
.Rows(1).Offset(, -3).Address(0, 0) & ","""")"
End With
With .Range("E1:E5")
.Formula = "=IF(ISNA(MATCH(" & _
.Rows(1).Offset(, -3).Address(0, 0) & _
" ,$A$1:$A$5,0))," & _
.Rows(1).Offset(, -3).Address(0, 0) & ","""")"
End With
With Range("C1:E5")
.Value = .Value
.SpecialCells(xlCellTypeBlanks).Delete (xlUp)
End With
End With

End Sub
'--------------------------------------
Avatar
MichDenis
Le fichier décrivant cette exemple au besoin :

http://cjoint.com/?jnorPbvzKK


"MichDenis" a écrit dans le message de news:
OR6se%
Une façon rapide de le faire :

Dans l'exemple suivant :
Le nom de l'onglet de la feuille est : Feuil1
Les 2 colonnes de données sont A1:A5 et B1:B5

Résultat obtenu :
En colonne C -> les chiffres qui sont identiques au deux colonnes
En colonne D -> Chiffres de la colonne A qui n'existent pas en colonne B
En colonne E -> Chiffres de la colonne B qui n'existent pas en colonne A

Il ne te reste plus qu'à adapter les plages de cellules qui correspondent
à ton application dans les formules.

'--------------------------------------
Sub test()
On Error Resume Next
Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("C1:C5")
.Formula = "=IF(ISNUMBER(MATCH(" & _
.Rows(1).Offset(, -1).Address(0, 0) & _
",$A$1:$A$5,0))," & _
.Rows(1).Offset(, -1).Address(0, 0) & ","""")"
End With
With .Range("D1:D5")
.Formula = "=IF(ISNA(MATCH(" & _
.Rows(1).Offset(, -3).Address(0, 0) & _
",$B$1:$B$5,0))," & _
.Rows(1).Offset(, -3).Address(0, 0) & ","""")"
End With
With .Range("E1:E5")
.Formula = "=IF(ISNA(MATCH(" & _
.Rows(1).Offset(, -3).Address(0, 0) & _
" ,$A$1:$A$5,0))," & _
.Rows(1).Offset(, -3).Address(0, 0) & ","""")"
End With
With Range("C1:E5")
.Value = .Value
.SpecialCells(xlCellTypeBlanks).Delete (xlUp)
End With
End With

End Sub
'--------------------------------------
Avatar
Wattie
Merci à tous pour votre aide...

C'est pour ma femme en fait qui a essayé quelques trucs qui focntionne mais
ralentisse bcp le MAC apparement...
Elle ne sait pas trop comment faire marcher ces macros, c'est bien des
macros ?

Elle va essayer cette derniere methode et je vous tiens au courant.
En tout cas merci bcp pour votre aide précieuse.

Wattie pour Laurette


"MichDenis" a écrit dans le message de news:

Le fichier décrivant cette exemple au besoin :

http://cjoint.com/?jnorPbvzKK


"MichDenis" a écrit dans le message de news:
OR6se%
Une façon rapide de le faire :

Dans l'exemple suivant :
Le nom de l'onglet de la feuille est : Feuil1
Les 2 colonnes de données sont A1:A5 et B1:B5

Résultat obtenu :
En colonne C -> les chiffres qui sont identiques au deux colonnes
En colonne D -> Chiffres de la colonne A qui n'existent pas en colonne B
En colonne E -> Chiffres de la colonne B qui n'existent pas en colonne A

Il ne te reste plus qu'à adapter les plages de cellules qui correspondent
à ton application dans les formules.

'--------------------------------------
Sub test()
On Error Resume Next
Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("C1:C5")
.Formula = "=IF(ISNUMBER(MATCH(" & _
.Rows(1).Offset(, -1).Address(0, 0) & _
",$A$1:$A$5,0))," & _
.Rows(1).Offset(, -1).Address(0, 0) & ","""")"
End With
With .Range("D1:D5")
.Formula = "=IF(ISNA(MATCH(" & _
.Rows(1).Offset(, -3).Address(0, 0) & _
",$B$1:$B$5,0))," & _
.Rows(1).Offset(, -3).Address(0, 0) & ","""")"
End With
With .Range("E1:E5")
.Formula = "=IF(ISNA(MATCH(" & _
.Rows(1).Offset(, -3).Address(0, 0) & _
" ,$A$1:$A$5,0))," & _
.Rows(1).Offset(, -3).Address(0, 0) & ","""")"
End With
With Range("C1:E5")
.Value = .Value
.SpecialCells(xlCellTypeBlanks).Delete (xlUp)
End With
End With

End Sub
'--------------------------------------





Avatar
Wattie
Merci encore, ta solution a super bien focntionné ;cÞ

Et merci aussi aux autres...

Wattie


"MichDenis" a écrit dans le message de news:

Le fichier décrivant cette exemple au besoin :

http://cjoint.com/?jnorPbvzKK