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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?