1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| 'on ne peut redimentionner que le nombre de colonne dans un tableau a 2 dimentions
'on va donc tranférer les donées des cellules horizontalement dans le tablofinal
Option Base 1
Sub list_sans_doublons_par_tablo_sans_dico()
Dim tablo As Variant 'variable pour les tableau de cellules
Dim tablofinal() 'variable pour le tableau final qui contiendra tout les element
Dim presence As Boolean 'variable booleenne qui servira de tiket d'entrée pour les elements dans le tablo final
feuille = Array(1, 2)
For f = 1 To UBound(feuille) 'on boucle sur l'array contenant l'index ou le nom des des feuilles
tablo = 0
tablo = Sheets(f).Range("a1:e" & Sheets(f).Range("a" & Rows.Count).End(xlUp).Row)
For i = 1 To UBound(tablo) 'on boucle sur tout les elements du tablo
For E = 1 To n 'n etant le nombre d'item presents dans le tablofinal a chaque tour de boucle
presence = False
'si dans le tablofinal on trouve tablo (i,1)
If tablofinal(1, E) = tablo(i, 3) Then
'on ajoute tablo(i,2) a tablofinal(2,e)
tablofinal(2, E) = tablofinal(2, E) + tablo(i, 2) 'addition code postal
tablofinal(3, E) = tablofinal(3, E) + tablo(i, 4) ' addition code INSEE
tablofinal(4, E) = tablofinal(2, E) / tablofinal(3, E)
tablofinal(5, E) = tablofinal(5, E) + 1
presence = True 'on met la booleenne a true
GoTo suite 'puisque l'on a trouver on sort de la boucle et on va au tablo(i,1) suivant
End If
Next E
If presence = False Then
'si la booleenne est resté a false ca veut dire que tablo(i,1) est absent de tablofinal(e,1)
'on l'ajoute alors a tblofinal
ReDim Preserve tablofinal(5, 1 To E) ' on preserve le nouvel element
tablofinal(1, E) = tablo(i, 3): tablofinal(2, E) = tablo(i, 2) 'on l'inscrit dans le tablofinal
tablofinal(1, E) = tablo(i, 3): tablofinal(3, E) = tablo(i, 4)
If i <> 1 Then tablofinal(1, E) = tablo(i, 3): tablofinal(4, E) = tablofinal(2, E) / tablofinal(3, E)
If i = 1 Then tablofinal(1, E) = tablo(i, 3): tablofinal(4, E) = "Coef"
If i <> 1 Then tablofinal(1, E) = tablo(i, 3): tablofinal(5, E) = 1
If i = 1 Then tablofinal(1, E) = tablo(i, 3): tablofinal(5, E) = "Nbre de ville"
E = E + 1: n = n + 1 'on incremente les variables pour le decompte et le compte tablofinal
'car n nous sert a boucler sur le tablofinal.count et e sert a placer le nouvel element
End If
suite: 'on atterrit ici si il y a doublon ,on a donc sauter les lignes ou sinscrivent les données du nouvel element
Next i
Next f
ThisWorkbook.Sheets("Feuil4").Range("a1:e300").ClearContents
'on transpose le tablofinal horizontal dans un range vertical
Sheets(4).Cells(1, 1).Resize(E - 2, UBound(tablofinal)) = Application.Transpose(tablofinal)
'traduction:
'Sheets(4).Cells(1, 1).Resize(le nombre de colonne du tablofinal,le nombre de lignes du tablofinal)=......
'comme tu peut le voir j'ai inverser les colonne du tablofinal avec les ligne de la plage de cellule de reception
End Sub |