Tableau Array : décompte doublon
Bonjour à tous,
Je fais un répertoire de requête à adresser à un fichier plus gros. Les information des 4 premières colonnes doivent permettre de faire "matcher" les informations se trouvant dans les 3 dernières. Pour ne pas se tromper la macro ne doit pas faire de requête ambigüe. Ça implique de supprimer toutes les lignes où les 4 premières colonne sont identiques.
Comme je n'arrive pas à les supprimer directement, je cherche à les compter pour ensuite supprimer toutes les lignes qui aurons en colonne 5 une valeur supérieur à 1. (Si quelqu'un veut m'aider à supprimer directement les occurrences multiple y a pas de problème.)
Tous cela est en Array
Montreuil |
|
5 85 |
avenue jean rouseau |
1 |
VICTOR HUGO |
JEAN-JACQUES ROUSSEAU (AVENUE) |
2 |
Montreuil |
2 40 |
19 79 |
rue paul couturier |
1 |
SIMONE VEIL |
PAUL VAILLANT COUTURIER (RUE) |
2 |
Montreuil |
2 40 |
19 79 |
rue paul couturier |
1 |
LE PARC |
PAUL VAILLANT COUTURIER (RUE) |
3 |
Montreuil |
4 68 |
3 103 |
rue romain bouvet |
1 |
CHRISTINE DE PISAN |
ROMAIN BOUVET |
2 |
Etape 1
Montreuil |
|
5 85 |
avenue jean rouseau |
1 |
VICTOR HUGO |
JEAN-JACQUES ROUSSEAU (AVENUE) |
2 |
Montreuil |
2 40 |
19 79 |
rue paul couturier |
2 |
SIMONE VEIL |
PAUL VAILLANT COUTURIER (RUE) |
2 |
Montreuil |
4 68 |
3 103 |
rue romain bouvet |
1 |
CHRISTINE DE PISAN |
ROMAIN BOUVET |
2 |
Etape 2
Montreuil |
|
5 85 |
avenue jean rouseau |
1 |
VICTOR HUGO |
JEAN-JACQUES ROUSSEAU (AVENUE) |
2 |
Montreuil |
4 68 |
3 103 |
rue romain bouvet |
1 |
CHRISTINE DE PISAN |
ROMAIN BOUVET |
2 |
Pour parvenir à l'étape 1 je me suis inspiré d'un code de Jacques Boisgontier que j'ai modifier pour mon cas mais y a un truc qui cloche. Soit le code ne fait pas la somme de la colonne 6 soit il affiche une erreur d'incompatibilité de type(erreur 13) .
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| (tab_sect_3 correspond au premier tableau et tab_sect_4 au second)
'décompte doublon
Dim d, Ncol, clé, tab_sect_4()
Set d = CreateObject("Scripting.Dictionary")
Ncol = UBound(tab_sect_3, 2)
For I = 1 To UBound(tab_sect_3)
clé = ""
For k = 1 To Ncol: clé = clé & tab_sect_3(I, k) & "|": Next k
Debug.Print k
If d.Exists(clé) Then 'somme colonne 6
ReDim a(1 To 1, 0 To Ncol)
For k = 1 To Ncol - 4: a(1, k) = tab_sect_3(I, k): Next k
For k = 6 To 6: a(1, k) = d(clé)(k) + tab_sect_3(I, k): Next k
For k = Ncol - 3 To Ncol: a(1, k) = tab_sect_3(I, k): Next k
d(clé) = a
Else
d(clé) = Application.Index(tab_sect_3, I)
End If
Next I
tab_sect_4 = Application.Transpose(Application.Transpose(d.Items)) ' Dictionnaire dans Array Tbl2()
[af2].Resize(UBound(tab_sect_4), UBound(tab_sect_4, 2)) = tab_sect_4
End Sub |
C'est la première fois que j'utilise un objet dictionnaire et je vois pas d'où vient le problème ...
Une âme charitable ?