[Urgent] Tri de chiffres identiques dans 2 colonnes Excel

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #4747321
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" 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



JB
Le #4747311
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

JB
http://boisgontierjacques.free.fr





On 13 sep, 12:37, "Wattie"
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


Daniel.C
Le #4747301
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"
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" 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







MichDenis
Le #4699381
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
'--------------------------------------
MichDenis
Le #4699361
Le fichier décrivant cette exemple au besoin :

http://cjoint.com/?jnorPbvzKK


"MichDenis" 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
'--------------------------------------
Wattie
Le #4699281
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"
Le fichier décrivant cette exemple au besoin :

http://cjoint.com/?jnorPbvzKK


"MichDenis" 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
'--------------------------------------





Wattie
Le #4747221
Merci encore, ta solution a super bien focntionné ;cÞ

Et merci aussi aux autres...

Wattie


"MichDenis"
Le fichier décrivant cette exemple au besoin :

http://cjoint.com/?jnorPbvzKK


Publicité
Poster une réponse
Anonyme