Macro recherche d'un espace + somme de colonnes

Thornhegel Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   -  
Thornhegel Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'aimerais créer un nouvel indicateur sur un fichier Excel existant qui me permettrait de connaître la somme de différentes colonnes, entre 2 espaces. Je vous écris un exemple en dessous pour que cela soit plus clair :



Ici, j'aimerais qu'une macro me renvoie (quelque soit la forme), OP1 = 2.75 ; OP2 = 16 ; OP3 = 5.5 ; OP4 = 4 ; OP5 = 17 ; OP6 = 0 ; OP7 = 0. Soit la somme par colonne des temps par opération entre la 1ère ligne d'espace du fichier Excel et la seconde.

En fonction des fichiers, le nombre de lignes est amené à bouger.

Quelqu'un serait-il capable de m'aiguiller sur la marche à suivre et idéalement de m'écrire un petit bout de macro pour résoudre mon problème?

Merci d'avance en tout cas !
Thorn
A voir également:

2 réponses

via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
Bonjour Thorn

Un macro à adapter à ton fichier
Sub somme_partielle()
dercol = 8 ' dernière colonne à traiter A ADAPTER
derlign = 10 ' dernière ligne à traiter A ADAPTER
For col = 2 To dercol ' boucle sur toutes le scolonnes
'RAZ variables
tot = 0
vid1 = 0
vid2 = 0
' 1er vide
For lg = 2 To derlign 'boucle sur toutes les lignes
If Cells(lg, col) = "" And Cells(lg + 1, col) <> "" And vid1 = 0 Then vid1 = lg 'si cellule vide et celle du desssous remplie et vid1=0 alors vid1=n° de ligne
Next lg
'2eme vide
For lg = vid1 + 1 To derlign ' boucle sur la ligne après vide jusqu'à dernière
If Cells(lg, col) = "" And Cells(lg - 1, col) <> "" And vid2 = 0 Then vid2 = lg 'si cellule vide et celle du desus remplie et vid2=0 alors vid2=n° de ligne
Next lg

'si vid2=0 total=0 sinon total partiel des lignes entre vid1 et vid2
If vid2 = 0 Then tot = 0 Else tot = Application.WorksheetFunction.Sum(Range(Cells(vid1 + 1, col), Cells(vid2 - 1, col)))

Cells(derlign + 2, col) = tot ' inscription du total 2 lignes en dessous de la dernière ligen à traiter

Next col
End Sub

Cdlmnt
Via
1
Thornhegel Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   12
 
Bonjour Via,

Merci beaucoup pour la réponse !
J'ai modifié un petit peu pour que cela corresponde à ce que je voulais mais l'idée du départ était très bonne.
Voici le code si quelqu'un d'autre pourrait être intéressé par cela.
J'ai sorti les variables vid1 et vid2 de la boucle car sinon j'avais un problème (exemple sur la photo, OP1 sortirait 2.25 au lieu de 2.75 car cellule B6 est vide).
Enfin, j'ai simplement rajouté une condition sur la somme finale pour que cela ne compte que les sommes dont j'ai besoin

Sub somme_partielle()
dercol = 13 ' dernière colonne à traiter A ADAPTER
derlign = 200 ' dernière ligne à traiter A ADAPTER
vid1 = 0
vid2 = 0
For col = 2 To dercol ' boucle sur toutes les colonnes
'RAZ variables
tot = 0
' 1er vide
For lg = 5 To derlign 'boucle sur toutes les lignes
If Cells(lg, col) = "" And Cells(lg + 1, col) <> "" And vid1 = 0 Then vid1 = lg 'si cellule vide et celle du desssous remplie et vid1=0 alors vid1=n° de ligne
Next lg
'2eme vide
For lg = vid1 + 1 To derlign ' boucle sur la ligne après vide jusqu'à dernière
If Cells(lg, col) = "" And Cells(lg - 1, col) <> "" And vid2 = 0 Then vid2 = lg 'si cellule vide et celle du desus remplie et vid2=0 alors vid2=n° de ligne
Next lg

'si vid2=0 total=0 sinon total partiel des lignes entre vid1 et vid2
If vid2 = 0 Then tot = 0 Else tot = Application.WorksheetFunction.Sum(Range(Cells(vid1 + 1, col), Cells(vid2 - 1, col)))
If col > 9 Then Cells(derlign + 2, col) = tot ' inscription du total 2 lignes en dessous de la dernière ligne à traiter

Next col
End Sub


En tout cas, cela a résolu mon problème donc merci beaucoup !
Thorn
0
Jauster Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   41
 
Bonjour,
Je ne comprends pas :
"Soit la somme par colonne des temps par opération entre la 1ère ligne d'espace du fichier Excel et la seconde."

Il faut faire la somme des valeurs entre 2 lignes blanches (sans donnée) ?
Pourquoi OP1 = 2.75 alors que OP2 = 16 et non 16.5 ?

Ou alors c'est les espaces dans la colonne A (OF) qui définissent la plage des sommes ?

Merci de m'éclaircir la dessus
0
Thornhegel Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   12
 
Dans mon exemple, la ligne 4 est vide et définit donc le départ de la somme et la ligne 8 est la seconde ligne vide, ce qui doit définir la fin de la somme.

Le 0.5 dans l'OP 2 est après la seconde ligne vide, elle ne doit donc pas être prise en compte

Merci en tout cas
0
Thornhegel Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   12
 
Résolu par la Macro ci-dessous, merci de l'aide en tout cas
0