Macro recherche d'un espace + somme de colonnes

Fermé
Thornhegel Messages postés 151 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 17 juillet 2022 - Modifié le 24 juil. 2018 à 11:40
Thornhegel Messages postés 151 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 17 juillet 2022 - 24 juil. 2018 à 17:17
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 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
24 juil. 2018 à 16:47
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 dimanche 17 janvier 2010 Statut Membre Dernière intervention 17 juillet 2022 12
Modifié le 24 juil. 2018 à 17:18
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 jeudi 7 décembre 2017 Statut Membre Dernière intervention 31 août 2018 40
Modifié le 24 juil. 2018 à 15:27
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 dimanche 17 janvier 2010 Statut Membre Dernière intervention 17 juillet 2022 12
24 juil. 2018 à 16:57
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 dimanche 17 janvier 2010 Statut Membre Dernière intervention 17 juillet 2022 12
24 juil. 2018 à 17:17
Résolu par la Macro ci-dessous, merci de l'aide en tout cas
0