Utiliser une array de dimensions variable

Bonjour,

J'ai un code utilisant une variable array, et je souhaiterai pouvoir définir les dimension de mon array en fonction d'une variable :

Ce code fais un copié collé d'un tableau à un autre endroit de ma feuille en supprimant les doublons et additionnant ces derniers dans la dernière colonne.

Dim mondico(6)
Dim i As Integer
Dim j As Integer
Dim x As Integer
Application.ScreenUpdating = True

Set f1 = Sheets("Feuil10")
a = f1.Range("A1").CurrentRegion.Value
f1.Range("P1").CurrentRegion.Clear

For i = 1 To 6
    Set mondico(i) = CreateObject("Scripting.Dictionary")
Next

For i = 1 To 6
    mondico(i).RemoveAll
Next

For i = 2 To UBound(a)
    temp = a(i, 4) & " / " & a(i, 5) & " / " & a(i, 6) & " / " & a(i, 7) & " / " & a(i, 3)
    mondico(1)(temp) = mondico(1)(temp) + a(i, UBound(a, 2))
    For j = 2 To 6
        mondico(j)(temp) = a(i, j + 1)
    Next
Next

For x = 2 To 6
f1.Cells(1, x + 14).Resize(mondico(1).Count) = Application.Transpose(mondico(x).items)
Next
f1.[U1].Resize(mondico(1).Count) = Application.Transpose(mondico(1).items)

Comme vous pouvez le voir je définit dès le début mon array sur 6 car je devais bien commencer par faire un test. Mon code fonctionne parfaitement, or j'aurai besoin d'appliquer cette macro à plusieurs tableaux différents n'ayant pas les mêmes nombre de colonnes. Je souhaiterai donc savoir comment faire pour rendre mon array variable pour que tout le reste du code puisse s'adapter et pouvoir rendre mes boucles for variable également.

Je ne sais pas si c'est bien clair sur ce que je souhaite faire.

Pour être plus précis je souhaiterai arriver à un dim mondico(y) mais lorsque je fais ceci vba me met une erreur que je ne sais résoudre. L'erreur: "erreur de compilation, constante requise"

J'espère que vous pourrez m'aider

Bonjour,

Oulala ! Je ne sais pas ou tu as été pêcher ce code mais.... mauvaise pioche !

Déjà pas besoin de dimensionner ton Dico (Un Dico n'est pas un Array)

Dim MonDico suffit.

Pour le reste voir le lien suivant :

Tout sur les Dictionary c'est ici.

A+

Merci de ta réponse, J'ai trouvé sur un autre guide la solution pour éviter mes doublons et après je l'ai beaucoup modifié pour l'adapter à ma situation. Et comme il fonctionne je me contente de ça.

Je vais jeter un œil à ce que vous m'avait envoyé.

Edit : j'avais trouvé le code sur le même site

  Application.ScreenUpdating = False
  Set f1 = Sheets("BD")
  a = f1.Range("A1").CurrentRegion.Value
  Set mondico = CreateObject("Scripting.Dictionary")
  Set mondico2 = CreateObject("Scripting.Dictionary")
  Set mondico3 = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(a)
    temp = a(i, 1) & " / " & a(i, 2)
    mondico(temp) = mondico(temp) + a(i, UBound(a, 2))
    mondico2(temp) = a(i, 1)
    mondico3(temp) = a(i, 2)
  Next
  f1.[G1].Resize(mondico.Count) = Application.Transpose(mondico2.items)
  f1.[H1].Resize(mondico.Count) = Application.Transpose(mondico3.items)
  f1.[I1].Resize(mondico.Count) = Application.Transpose(mondico.items)

J'avais utilisé le array pour pouvoir faire des boucles avec mes différentes dictionnaires. C'était peut-être pas la bonne solution pour pouvoir faire ce que je veux faire maintenant.

Rechercher des sujets similaires à "utiliser array dimensions variable"