récupérer plusieurs valeurs dans une cellule et faire la somme

Niquido

XLDnaute Junior
Bonjour,

J'ai un petit soucis:
je souhaite faire la somme dans une case de toute les heure qu'il y à dans une seule cellule. Comment faire ?

Pour mieux comprendre il faut regarder le fichier joint.

par avance merci
 

Pièces jointes

  • Classeur1.xlsx
    7.8 KB · Affichages: 46
  • Classeur1.xlsx
    7.8 KB · Affichages: 44
  • Classeur1.xlsx
    7.8 KB · Affichages: 51

Robert

XLDnaute Barbatruc
Repose en paix
Re : récupérer plusieurs valeurs dans une cellule et faire la somme

Bonjour Niquido, Djidji, bonjour le forum,

Tout à fait d'accord avec Djidji ! Le code ci-dessous considère que la ligne unique a été au préalable dispatchée sur plusieurs lignes... Je te laisse faire ce travail.
le code :

Code:
Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim NL As String 'déclare la variable NL (Nombre en Lettre)
Dim NC As Double 'déclare la variable NC (Nombre en Chiffre)
Dim T As Double 'déclare la variable T (Total)

Set O = Sheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O
Set PL = O.Range("A1:A" & DL) 'définit la palge PL
For Each CEL In PL 'boucle sur toutes les cellules de la palge PL
    NL = Split(CEL.Value, "=")(1) 'définit la variable NL
    NL = Replace(NL, ".", ",") 'redéfinit la variable NL
    NL = Left(NL, 3) 'redéfinit la variable NL
    NC = CDbl(NL) 'définit la vatiable NC
    T = T + NC 'définit le total T
Next CEL 'prochaine cellule de la boucle
MsgBox T 'affiche le total dans un message
End Sub
Le fichier :
 

Pièces jointes

  • Niquido_v01.xlsm
    15.6 KB · Affichages: 33

Niquido

XLDnaute Junior
Re : récupérer plusieurs valeurs dans une cellule et faire la somme

Merci Robert,

Par contre je n'ai peut être pas donné suffisamment d'information.

une base de donnée me fournie un extract dont une colonne avec ces information là.
j'aimerai avoir seulement à rajouter une colonne dans laquelle il y à la somme des heures écrite dans la cellule, et pas dans une fenêtre, sans avoir à rajouter de ligne.

est-ce possible ?

Voir fichier joint
 

Pièces jointes

  • Classeur1.xlsx
    7.9 KB · Affichages: 28
  • Classeur1.xlsx
    7.9 KB · Affichages: 37
  • Classeur1.xlsx
    7.9 KB · Affichages: 39

Robert

XLDnaute Barbatruc
Repose en paix
Re : récupérer plusieurs valeurs dans une cellule et faire la somme

Bonjour le fil, bonjour le forum,

Si les données que tu reçois comportent toujours 1 valeur et 3 signes "=" par ligne et que la valeur est toujours placée entre le premier et second signe "= " de chaque ligne, alors le code ci-dessous devrait fonctionner :
Code:
Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim NE As Byte 'déclare la variable NE (Nombre de signe Egale)
Dim I As Byte 'déclare la variable I (Incrément)
Dim NL As String 'déclare la variable NL (Nombre en Lettre)
Dim NC As Double 'déclare la variable NC (Nombre en Chiffre)
Dim T As Double 'déclare la variable T (Total)

Set O = Sheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O
Set PL = O.Range("A1:A" & DL) 'définit la palge PL
For Each CEL In PL 'boucle 1 : sur toutes les cellules de la palge PL
    T = 0 'réinitialise le total T
    NE = UBound(Split(CEL, "=")) 'définit le nombre de signe "=" dans la cellule
    For I = 1 To NE Step 3 'boucle 2 : de 1 à NE par pas de 3
        NL = Split(CEL.Value, "=")(I) 'définit la variable NL
        NL = Replace(NL, ".", ",") 'redéfinit la variable NL
        NL = Left(NL, 3) 'redéfinit la variable NL
        NC = CDbl(NL) 'définit la vatiable NC
        T = T + NC 'définit le total T
    Next I 'prochaine valeur de la boucle 2
    CEL.Offset(0, 1).Value = T 'affiche le total dans la cellule en colonne B
Next CEL 'prochaine cellule de la boucle 1
End Sub
Le fichier :
 

Pièces jointes

  • Niquido_v02.xlsm
    15.7 KB · Affichages: 31

Discussions similaires