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
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