Sommer une cellule contenant plusieurs valeurs

Sommer une cellule contenant plusieurs valeurs - VB/VBA/VBS - Programmation

Marsh Posté le 22-03-2009 à 10:08:34    

Bonjour, plusieurs heures que je cherche pourtant au début cela me paraissait simple.
J'ai un programme VBA qui ajoute dans une cellule, des valeurs séparées par des retour à la ligne (matérialisé par "chr(10)" ).
Donc dans une cellule j'ai plusieurs montant.
Cette opération est répétée sur plusieurs cellules de la même colonne.
A la fin de cette colonne je veux faire une somme de tous ces montants.
Ben ça a l'air bête mais je n'y arrive pas. Comme faire comprendre à Excel en langage VBA de sommer chaque montant qui sont présent dans la cellule séparée par des chr(10) ?
Si quelqu'un a une idée...
Merci d'avance, je continue à chercher.
 
Bon dimanche

Reply

Marsh Posté le 22-03-2009 à 10:08:34   

Reply

Marsh Posté le 22-03-2009 à 11:33:19    

Bon, j'ai fini par toruver.
Je poste ici le code que j'ai adapté et qui peut être utile à d'autres.

Code :
  1. Sub extraireValeursNumeriques_DansChaine()
  2. Dim i As Byte, Nb As Byte
  3. Dim Cible As String, Resultat As String
  4. Dim Resul As Double
  5. Dim Nombre As Double
  6. Dim lig As Long
  7. Cells(1, 2) = " " & Cells(1, 5) & Chr(10) & " " & Cells(2, 5) & Chr(10) & " " & Cells(3, 5)
  8. For lig = 1 To 3
  9. Cible = Cells(lig, 2)
  10. 'Pour que fonction Val puisse reconnaitre les décimales: Remplacement des
  11. 'virgules par des points
  12. Cible = Replace(Cible, ",", "." )
  13. 'Pour gérer deux nombres qui se suivent: remplacement des espaces
  14. 'par un caractère Alpha
  15. Cible = Replace(Cible, Chr(10), "x" )
  16. For i = 1 To Len(Cible)
  17. If IsNumeric(Mid(Cible, i, 1)) Then
  18. Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1))
  19. Nb = Nb + 1
  20. Resultat = Resultat & Nombre & vbLf
  21. Resul = Resul + Nombre
  22. i = i + Len(Str(Nombre)) - 1
  23. End If
  24. Next
  25. Next lig
  26. Cells(5, 1) = Resul
  27. MsgBox "Il y a " & Nb & " valeurs numériques dans la cellule " & vbLf & Resultat
  28. End Sub


 
Re bon dimanche à tous.

Reply

Marsh Posté le 27-03-2009 à 16:35:24    

Il y avait plus simple...
 
Private Sub CommandButton1_Click()
Montotal = 0
For i = 1 To 2
     
    Macell = Cells(i, 1)
    Mesval = Split(Macell, Chr(10))
    NbValCel = UBound(Mesval)
     
    TotalCel = 0
    For j = 0 To NbValCel
        TotalCel = TotalCel + CDbl(Mesval(j))
    Next
     
    Montotal = Montotal + TotalCel
Next
MsgBox Montotal
End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed