Bonjour,
je débute la partie dictionary vb script car je dois faire des analyses de données assez importante
j'ai donc commencé les cours ici:
https://vbaforexcel.wordpress.com/
j'ai compris le raisonnement de cette macro que vous trouverez ici
https://vbaforexcel.files.wordpress.com/2013/09/dictionnaire2.xls
Sub test()
'Dans la fenêtre VBA, sélectionner Outils, Références et cocher Microsoft Scripting Runtime
Dim Dico As Object
Dim c As Byte
Dim ii As Variant, jj As Variant
Set Dico = CreateObject("scripting.dictionary")
c = 2
Do Until IsEmpty(Cells(c, 1))
If Not Dico.exists(Cells(c, 1).Value) Then
Dico(Cells(c, 1).Value) = 0.9 * Cells(c, 3)
Else
Dico(Cells(c, 1).Value) = Dico(Cells(c, 1).Value) + Cells(c, 3)
End If
c = c + 1
Loop
Range("E1").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)
Range("F1").Resize(Dico.Count, 1) = Application.Transpose(Dico.items)
Set Dico = Nothing
End Sub
***************************************
j'ai voulu remplacer le do until par un for next
Sub plplp()
'Dans la fenêtre VBA, sélectionner Outils, Références et cocher Microsoft Scripting Runtime
Dim Dico As Object
Dim c As Object
Set Dico = CreateObject("scripting.dictionary")
For Each c In Range("A2", Range("A2").End(xlDown))
If Not Dico.exists(Cells(c, 1).Value) Then
Dico(Cells(c, 1).Value) = 0.9 * Cells(c, 3)
Else
Dico(Cells(c, 1).Value) = Dico(Cells(c, 1).Value) + Cells(c, 3)
End If
Next
Range("E1").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)
Range("F1").Resize(Dico.Count, 1) = Application.Transpose(Dico.items)
Set Dico = Nothing
End Sub
***************
je comprends absoulement pas pourquoi je me paye une erreur "incompatibilité de type"
quelqu'un aurait une idée?
Merci bcp
Pierre