Séparer éléments dictionnaire dans Array[RESOLU]

cp4

XLDnaute Barbatruc
Bonjour,

J'ai collecté dans un dictionnaire la concaténation de 2 colonnes séparées par le caractère "|".
Je voudrais passer à un tableau en séparant les données du dictionnaire.
Puis envoyer le tableau sur la feuille2.
ci-joint fichier.
 

Pièces jointes

  • Classeur1.xlsm
    13.5 KB · Affichages: 13

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @cp4, à tous,

Un autre code ?:
VB:
Sub doublon()
'tRes est le tableau résultat
Dim tSource, tRes, dico, i&, n&, k&, clef
   tSource = Sheets("Feuil1").Range("a1:b" & Sheets("Feuil1").Cells(Rows.Count, "a").End(xlUp).Row)
   Set dico = CreateObject("Scripting.Dictionary")
   For i = 2 To UBound(tSource): dico(tSource(i, 1) & tSource(i, 2)) = i: Next i
   ReDim tRes(1 To dico.Count, 1 To 2)
   For Each clef In dico
      n = n + 1: k = dico(clef)
      tRes(n, 1) = tSource(k, 1): tRes(n, 2) = tSource(k, 2)
   Next clef
End Sub
 

cp4

XLDnaute Barbatruc
Bonsoir @cp4, à tous,

Un autre code ?:
VB:
Sub doublon()
'tRes est le tableau résultat
Dim tSource, tRes, dico, i&, n&, k&, clef
   tSource = Sheets("Feuil1").Range("a1:b" & Sheets("Feuil1").Cells(Rows.Count, "a").End(xlUp).Row)
   Set dico = CreateObject("Scripting.Dictionary")
   For i = 2 To UBound(tSource): dico(tSource(i, 1) & tSource(i, 2)) = i: Next i
   ReDim tRes(1 To dico.Count, 1 To 2)
   For Each clef In dico
      n = n + 1: k = dico(clef)
      tRes(n, 1) = tSource(k, 1): tRes(n, 2) = tSource(k, 2)
   Next clef
End Sub
Merci beaucoup @mapomme , ça fonctionne aussi bien que le code de Pierrejean (que je salue).
Bonne journée.
 

laetitia90

XLDnaute Barbatruc
bonjour les amis :):):):):)
un autre code manipulant Add
VB:
Sub es()
Dim t(), m As Object, z, x As Long, i As Long
t = Feuil1.Range("a2:b" & Feuil1.Cells(Rows.Count, 1).End(3).Row)
Set m = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(t)
z = t(i, 1) & t(i, 2)
If Not m.Exists(z) Then
m.Add z, z: x = x + 1
t(x, 1) = t(i, 1): t(x, 2) = t(i, 2)
End If: Next i
Feuil2.[a2].Resize(x, 2) = t
End Sub

pas trop présente depuis quelques mois
maman depuis peu eh!!!oui
gros bisous a tous (e):):)
 

cp4

XLDnaute Barbatruc
bonjour les amis :):):):):)
un autre code manipulant Add
VB:
Sub es()
Dim t(), m As Object, z, x As Long, i As Long
t = Feuil1.Range("a2:b" & Feuil1.Cells(Rows.Count, 1).End(3).Row)
Set m = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(t)
z = t(i, 1) & t(i, 2)
If Not m.Exists(z) Then
m.Add z, z: x = x + 1
t(x, 1) = t(i, 1): t(x, 2) = t(i, 2)
End If: Next i
Feuil2.[a2].Resize(x, 2) = t
End Sub

pas trop présente depuis quelques mois
maman depuis peu eh!!!oui
gros bisous a tous (e):):)
C'est parfait.
Du fond du cœur, mes félicitations.
Longue vie pleine de réussite, de bonheur et prospérité au bébé, au papa et à notre Laetitia préférée;).
J'avoue que les Sub es() nous manquées. Merci pour ton retour.
Tendres bises au bébé et sa maman.:):):)
 

Discussions similaires

Réponses
16
Affichages
409

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof