Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

mrzaitsev90

XLDnaute Occasionnel
Bonjour à tous,

J'ai un petit problème.

Dans ce petit fichier, vous trouverez :

- un premier onglet où sur 5 colonnes des chiffres se succèdent, la liste peut être infinie...
- un second onglet sur lequel j'aimerais que ces chiffres apparaissent qu'une seule fois à la suite de haut en bas. S'ils existent en plusieurs exemplaires, je voudrais qu'ils n'apparaissent qu'une fois.

Merci à ceux qui y travailleront, cela m'aidera beaucoup.

Mrzaitsev90
 

Pièces jointes

  • TESTONE car.xls
    14 KB · Affichages: 52

Efgé

XLDnaute Barbatruc
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Bonjour mrzaitsev90, Bonjour Rachid :)
Une proposition par macro:
VB:
Sub Test()
Dim i&, D As Object
Dim TReport As Variant, TData As Variant
Set D = CreateObject("Scripting.dictionary")
TData = Sheets("Sheet1").UsedRange
ReDim TReport(1 To UBound(TData, 1) * UBound(TData, 2), 0)
For j = LBound(TData, 2) To UBound(TData, 2)
    For i = LBound(TData, 1) To UBound(TData, 1)
        If Not D.Exists(TData(i, j)) And TData(i, j) <> "" Then
            K = K + 1
            TReport(K, 0) = TData(i, j)
            D(TData(i, j)) = ""
        End If
    Next i
Next j
Sheets("Sheet2").Cells(2, 2).Resize(K, 1) = TReport
End Sub

Cordialement
 

mrzaitsev90

XLDnaute Occasionnel
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Bonjour Messieurs,

Merci Rachid, fonction impressionnante mais j'ai plus besoin d'une macro, pour ordonner ce "rapatriement" de chiffres à la demande, voyez-vous.

Efgé, il semble que la variable J ne soit pas définie. C'est ce que mon excel me dit. ^^

Merci.
 

laetitia90

XLDnaute Barbatruc
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

bonjour tous:):)
notre ami Efgé:):) a simplement oublie....... tu dois avoir option explicit en debut de module

Code:
Sub Test()
Dim i As Long, j As Long, k As Long, D As Object
ect...

tres bon code en plus:):):)
 

mrzaitsev90

XLDnaute Occasionnel
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Merci Laetitia ca fonctionne !

Avec ce nouveau petit fichier, serait-il possible d'avoir en onglet 2 :

colonne A=chiffre des colonnes A, B, C, D, E de l'onglet 1
colonne B= chiffre des colonnes F, G, H, I, J de l'onglet 1

La correspondance devrait alors se faire entre A et F, B et G, C et H, D et I, E et J .

Merci à ceux qui y travailleront, cela m'aidera énormément.

Mrzaitsev90
 

Pièces jointes

  • test 2 bis.xls
    21.5 KB · Affichages: 51

Efgé

XLDnaute Barbatruc
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Bonjour mrzaitsev90, Bonjour Rachid, bonjour Laeti :)

mrzaitsev90 : Tu parlais de récupérer sans doublons.
Peut tu mettres un fichier avec deux onglets Avant / Après avec quelques explications supplémentaires, par ce que là, je ne comprend pas vraiment la demande.
Cordialement
 

mrzaitsev90

XLDnaute Occasionnel
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

BOnjour Efgé,

Oui, je comprends, je t'ai fait ce que tu as demandé. Onglet AVANT/APRES.

Pour les doublons, il faudrait simplement qu'ils se colorient de la même couleur mais APRES que tous ces nombres aient été "rapatriés" sur l'onglet APRES.

Mais ce n'est pas un problème, j'utiliserai ce code. :

Code:
Sub ColorerDoublons()
Dim plage As Range
Dim Cel As Range, Celbis As Range
Dim L As Integer, lig As Integer, N As Byte

Application.ScreenUpdating = False
With Sheets("Exemple")
L = .Range("B65000").End(xlUp).Row
'effacement des couleurs
Set plage = .Range("B10:B" & L)
plage.Interior.ColorIndex = xlNone
'Coloration des doublons
N = 2
For Each Cel In plage
lig = Cel.Row
If Application.CountIf(plage, Cel) > 1 And Cel.Interior.ColorIndex = xlNone Then
If N < 56 Then
N = N + 1
Else
N = 3
End If
Cel.Interior.ColorIndex = N
  For Each Celbis In plage
  If Celbis = Cel And Celbis.Row <> Cel.Row And Celbis.Interior.ColorIndex = xlNone Then
  Celbis.Interior.ColorIndex = Cel.Interior.ColorIndex
  End If
  Next Celbis
End If
Next Cel
Range("A1").Select
End With
Application.ScreenUpdating = True
End Sub

Je sais que c'est tarabiscoté comme demande mais l'association de ces nombres me feraient gagner beaucoup de temps.

En tout cas, merci.

Mrzaitsev90
 

Pièces jointes

  • test 3 bis.xls
    23 KB · Affichages: 46

mrzaitsev90

XLDnaute Occasionnel
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Bonjour,

Avez-vous "pisté" ces nombres pour voir d'où je les avais extrait?

Les chiffres situés dans les colonnes colorées de l'onglet 1 doivent se juxtaposés en colonne A et B de l'onglet 2.

ligne par ligne

Est-ce plus clair Efgé? :)

Merci

MrZaitsev90
 

Efgé

XLDnaute Barbatruc
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Bonjour mrzaitsev90,
L'exemple ne correspond à rien; de plus je pense qu'il s'agit d'une nouvelle demande (disparu le problème des doublons...:rolleyes: )

Avec ce que j'ai compris:
VB:
Sub Test_2()
Dim i&, j&, k&
Dim TReport As Variant, TData As Variant

TData = Sheets("AVANT").UsedRange
ReDim TReport(1 To UBound(TData, 1) * UBound(TData, 2), 1)

For i = LBound(TData, 1) To UBound(TData, 1)
    For j = LBound(TData, 2) To 5
        If TData(i, j) <> "" Then
            k = k + 1
            TReport(k, 0) = TData(i, j)
            TReport(k, 1) = TData(i, j + 5)
        End If
    Next j
Next i

Sheets("APRES").Cells(1, 1).Resize(k, 2) = TReport
End Sub

Si ce n'est pas ça merci d'ouvrir un nouveau fil avec cette nouvelle question.

Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Re
Avec les couleurs d'origine....
VB:
Sub Test_3()
Dim i&, j&
Application.ScreenUpdating = False
With Sheets("AVANT").UsedRange
    For i = 1 To .Rows.Count
        For j = 1 To 5
            If .Cells(i, j) <> "" Then
                Application.Union(.Cells(i, j), .Cells(i, j + 5)).Copy _
                Sheets("APRES").Cells(Application.Rows.Count, 1).End(3)(2)
            End If
        Next j
    Next i
End With
End Sub
Cordialement
 

mrzaitsev90

XLDnaute Occasionnel
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Bonjour mrzaitsev90,
L'exemple ne correspond à rien; de plus je pense qu'il s'agit d'une nouvelle demande (disparu le problème des doublons...:rolleyes: )


Si ce n'est pas ça merci d'ouvrir un nouveau fil avec cette nouvelle question.

Cordialement

Bien que l'exemple ne corresponde à rien, je te félicité Efgé car tu as trouvé.

Le problème des doublons n'a pas disparu mais comme je te l'avais dit dans un message plus haut, j'étais capable de gérer ce problème.

Il fallait d'abord rassembler ces nombres avec le code que tu as crée (que je demandais) puis ensuite d'appliquer un anti-doublon sur ces séries de chiffres.

Merci beaucoup de ton aide Efgé. ca mériterait que je te paye un coup tiens ! :D

Mrzaitsev90
 

Efgé

XLDnaute Barbatruc
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Re
Tu veux dire supprimer les couples de chiffres en doublon ?
VB:
Sub Test_4()
Dim i&, j&, D As Object
Set D = CreateObject("Scripting.dictionary")
Application.ScreenUpdating = False
With Sheets("AVANT").UsedRange
    For i = 1 To .Rows.Count
        For j = 1 To 5
            If Not D.Exists(.Cells(i, j) & .Cells(i, j + 5)) And .Cells(i, j) <> "" Then
                Application.Union(.Cells(i, j), .Cells(i, j + 5)).Copy _
                Sheets("APRES").Cells(Application.Rows.Count, 1).End(3)(2)
                D(.Cells(i, j) & .Cells(i, j + 5)) = ""
            End If
        Next j
    Next i
End With
End Sub

Ou ne supprimer que les doublons de la première colonne d'arrivée:
VB:
Sub Test_5()
Dim i&, j&, D As Object
Set D = CreateObject("Scripting.dictionary")
Application.ScreenUpdating = False
With Sheets("AVANT").UsedRange
    For i = 1 To .Rows.Count
        For j = 1 To 5
            If Not D.Exists(.Cells(i, j)) And .Cells(i, j) <> "" Then
                Application.Union(.Cells(i, j), .Cells(i, j + 5)).Copy _
                Sheets("APRES").Cells(Application.Rows.Count, 1).End(3)(2)
                D(.Cells(i, j)) = ""
            End If
        Next j
    Next i
End With
End Sub
Cordialement
 
Dernière édition:

mrzaitsev90

XLDnaute Occasionnel
Re : Copie de chiffres de plusieurs colonnes vers colonne unique sur autre onglet

Oui, c'est çà.

Maintenant comment adapter ta superbe macro à mes colonnes "réelles".

Si je te dis que les colonnes A à E de mon fichier test correspondent aux colonnes N à R du vrai fichier.
Si je te dis que les colonnes F à J de mon fichier test correspondent aux colonnes S à W du vrai fichier.

Les boucles ne doivent commencer qu'à partir de la ligne 7 du document.

Ta macro fonctionne très bien par ailleurs. C'est un vrai bonheur !

Merci

MrZaitsev90
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 729
Membres
110 553
dernier inscrit
loic55