Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1823 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Problème avec tableau

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Problème avec tableau

n°2284363
jhonduff
Posté le 27-06-2016 à 23:12:56  profilanswer
 

Bonjour,
 
Je cherche à alimenter un tableau à partir d'une plage de valeur tout en supprimant les doublons.
J'ai trouvé ce code tout fait sur Internet qui utilise un dictionnaire pour repérer les doublons. Ce code répond très bien à mon besoin sauf que le tableau ne se rempli pas ...
Avec des MsgBox, j'arrive à voir que les cellules s'incrémentent bien dans la boucle puis une fois sorti de celle-ci, je constate que seule la dernière valeur du tableau a été enregistrée.
Ci-dessous le code :
 

Code :
  1. Sub Macro1()
  2.   Dim Tableau()
  3.   Set MonDico = CreateObject("Scripting.Dictionary" )
  4.   For Each c In Sheets("Feuil1" ).Range("A2:A292" )
  5.     'si la donnée n'existe pas encore dans le dictionnaire
  6.     If Not MonDico.Exists(c.Value) Then
  7.         'on l'ajoute dans le dictionnaire
  8.         MonDico.Add c.Value, c.Value
  9.         'et dans le tableau VBA
  10.         ReDim Tableau(1 To MonDico.Count)
  11.         Tableau(MonDico.Count) = c.Value
  12.       End If
  13.   Next c
  14. MsgBox Tableau(2)
  15. MsgBox Tableau(20)
  16. End Sub


 
Dans ma feuille, je trouve 20 valeurs différentes, sur les deux msgbox à la fin de mon code, le premier ne retourne rien (msgbox vide) et le second retourne bien la dernière valeur du tableau.
 
Ça fait deux heures que je planche dessus et je n'arrive pas à trouver la raison du pourquoi ça ne marche pas.
 
Merci d'avance pour vos réponses.


Message édité par jhonduff le 27-06-2016 à 23:14:38
mood
Publicité
Posté le 27-06-2016 à 23:12:56  profilanswer
 

n°2284392
Marc L
Posté le 28-06-2016 à 14:22:08  profilanswer
 

 
            Bonjour.
 

Code :
  1. Sub Macro1_1()
  2.     With CreateObject("Scripting.Dictionary" )
  3.         For Each V In Feuil1.[A2:A292].Value
  4.               If V > "" Then .Item(V) = ""
  5.         Next
  6.         If .Count = 0 Then Exit Sub
  7.         ReDim VT(1 To .Count)
  8.         For N& = 1 To .Count:  VT(N) = .Keys()(N - 1):  Next
  9.         .RemoveAll
  10.     End With
  11.         MsgBox VT(1) & vbLf & VT(UBound(VT))
  12. End Sub

 

n°2284395
Marc L
Posté le 28-06-2016 à 15:06:26  profilanswer
 

Code :
  1. Sub Macro1_2()
  2.     With CreateObject("Scripting.Dictionary" )
  3.         For Each V In Feuil1.[A2:A292].Value
  4.               If V > "" Then .Item(V) = ""
  5.         Next
  6.         VT = .Keys
  7.         .RemoveAll
  8.     End With
  9.         If UBound(VT) > -1 Then MsgBox VT(0) & vbLf & VT(UBound(VT))
  10. End Sub


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Problème avec tableau

 

Sujets relatifs
Problème de tableau excelprobleme de taille d'un tableau excel envoyé par mail
[c] Probleme afficher valeur correcte tableauphp problème tableau suite requête MySQL [résolu]
[Résolu] Problème affichage tableau [Résolu] Problème de tableau multidimensionnel et associatif
Probleme : Tableau de pointeurs sur structureProblème affichage tableau de taille variable
problème avec de manager.canvas.draw de matplotlib et gobject.idle_addProblème largeur colonne d'un tableau PHP/CSS
Plus de sujets relatifs à : [VBA] Problème avec tableau


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR