Chercher une précédence
Bonjour,
j'ai des noms d'opération sur ma premiere colonne de mon tableau auxquelles je leur ai affecté une valeur sur la 2eme colonne.
Si le nom de l'opération fini par un "1" alors j'affiche sa valeur par une msgbox SINON je vais chercher le même préfixe de l'opération (les deux premiers caractères) et j’enlève 1 au dernier chiffre afin de trouver la valeur de son opération précédente dans le tableau.
Tout ceci afin d'afficher les valeurs cumulées (celles de l'opération en question + son opération précédente).
je suis parti du code suivant mais je n'arrive pas à lui dire de chercher le même préfixe en soustrayant de 1 le dernier chiffre
Sub test()
Dim tableau(3, 2) As Variant
tableau(0, 1) = "O11"
tableau(0, 2) = 1
tableau(1, 1) = "O12"
tableau(1, 2) = 3
tableau(2, 1) = "O21"
tableau(2, 2) = 2
tableau(3, 1) = "O22"
tableau(3, 2) = 4
For i = 0 To UBound(tableau, 1)
If Right(tableau(i, 1), 1) = 1 Then
MsgBox tableau(i, 2)
' sinon on va chercher l'opération précedante
Else
' MsgBox "valeur cumulée" = tableau(i, 2) +
'Afficher la valeur de l'opération en question
' + la valeur de l'opération précédente qui a le même préfixe ("O1" ou "O2") que l'opération en question
End If
Next i
End Submerci beaucoup!
Bonjour.
Tu peux mettre ton fichier en ligne, qu'on puisse voir sa tête?Ou faut-il qu'on le reconstruise nous-même?
Cordialement
c'est bon je viens de le joindre mais c'est la même chose.
je vous donne un exemple plus détaillé de ce que j'aimerais avoir :
par exemple si j'ai "O22" je conserve toujours le préfixe "O2" et comme cette opération ne se finit pas par 1 donc je vais enlever 1 à son dernier chiffre qui deviendra donc "O21" (en gros ici je cherche son opération précédente) , a partir de là je vais chercher quelle valeur a "O21" dans le tableau, en l’occurrence cette opération vaut 2.
la manip. ci-dessus c'est juste pour identifier quelle valeur a l'opération précédente.
Enfin j'affiche maintenant l'addition de la valeur de son opération précédente qu'on vient de trouver (qui vaut 2) + la valeur qu'a l'opération en question "O22" (qui vaut 4 d’après le tableau)
merci
merci a tous
je viens de trouver la solution
Sub test()
Dim Tableau(3, 2) As Variant, Cumul As Double, L As Long, Clé As String
Dim D As Dictionary ' (ou Object, en programmation dégradée, sans la réf "Microsoft Scripting Runtime")
Set D = New Dictionary ' (ou createobject("Scripting.Dictionary")
Tableau(0, 1) = "O11"
Tableau(0, 2) = 1
Tableau(1, 1) = "O21"
Tableau(1, 2) = 2
Tableau(2, 1) = "O12"
Tableau(2, 2) = 3
Tableau(3, 1) = "O22"
Tableau(3, 2) = 4
For L = 0 To UBound(Tableau, 1)
Clé = Left$(Tableau(L, 1), 2)
Cumul = D(Clé) + Tableau(L, 2)
MsgBox Cumul
D(Clé) = Cumul
Next L
End Sub