XL 2016 Addition d'heures sur plusieurs onglet en mode VBA

bigeart

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous,

Je viens vous solliciter pour un problème de calcul. J'avais commencé une approche Excel, mais elle
s'avère compliquée. j'ai été aidé sur le forum par MAPOMME, mais il a abandonné. Je le remercie encore pour son aide.

Je m'oriente sur du VBA et je ne suis pas très à l'aise.
J'ai commencé à suivre des formations sur vidéo qui m'ont permises d'avancer sur les couleurs.
je l'ai mis en pratique dans mon fichier en PJ.

Toutefois, pour la suite du calcul, je suis un peu perdu. je dois encore me former.
J'ai un fichier Excel avec des onglets qui représentent les semaines du mois d'avril et un onglet synthèse.
Mes cellules horaires sont au formats TEXTE et les couleurs en MFC.
J'en ai besoin pour mettre des couleurs sur des cellules qui sont sous conditions.
Exemple: Onglet S14 colonne AC et AF. Verte si heure comprise entre a 00:16 et 00:30 et orange si heure sup à 00:31
Cela me permet également de compter le nombre de cellules vertes et oranges par jour.

Additionner des cellules et le contenant des cellule sur une ligne en mode VBA ne pose pas de problème, enfin pas trop.
Je n'arrive pas à additionner les heures des cellules vertes et oranges par onglet en mode VBA.
Je souhaiterais que la cellule O26 de l'onglet synthèse me donne la somme en minutes des cellules vertes
de la ligne 26 des onglets S14 à S18, en commençant par le 01/04/20. Idem pour les autres lignes.
Exemple à la mano: Onglet synthèse cellule O26 et P26.

A priori ça à l'air un peu technique, merci d'avance pour votre aide.

Bigeart
 

Pièces jointes

  • Analyse temps_modif.xlsm
    352.3 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonjour bigeart, sylvanu, le forum,

La solution que j'ai donnée suppose que dans les feuilles le nombre des lignes soit le même et que ces lignes se succèdent dans le même ordre.

Or ce n'est pas le cas,

Dans toutes les feuilles il y a des doublons sur les colonnes du N° interne, ce n'est pas normal.

C'est à vous d'arranger les choses, s'il n'y a pas de doublons on pourra s'en sortir.

A+
 

bigeart

XLDnaute Occasionnel
Supporter XLD
Bonjourà tous,

Tout d'abord je tenais à remercier job75 car ça correspond exactement à ce que je voulais.
Je suis encore loin de cette maitrise en VBA.
En ce qui concerne les doublons c'est exact et c'est normal.
Les numéros correspondent à des plaques de camions et à des conducteurs.
Nous avons certains camions avec deux conducteurs, dont je n'ai pas mis les noms pour des raisons de confidentialité.
Donc chaque ligne correspond à une personne. Est-ce que cela pourra aller?
J'aurais une question dans le code que vous m'avez envoyé.
En le détaillant, j'ai vu que vous aviez mis le code des couleurs mais que vous les aviez nommés gris à 25% pour le vert et brun pour le orange.
Pourquoi ne mettons pas Coul1 vert et Coul2 orange?

Cordialement

Bigeart
 

job75

XLDnaute Barbatruc
Ce que vous avez fait ne suffit pas car les tableaux n'ont pas le même nombre de lignes.

Voyez ce fichier (2) et les commentaires mis dans les feuilles S15 S17 S18 et Synthèse Avril.

Les lignes 97 des feuilles S17 S18 et Synthèse Avril ont été supprimées.
 

Pièces jointes

  • Analyse temps_modif(2).xlsm
    362.6 KB · Affichages: 3

bigeart

XLDnaute Occasionnel
Supporter XLD
Bonjour Job75,

Je viens vous soliciter sur un fichier similaire à celui de ci-dessus.
J'ai contrôlé le nombres de lignes et les numéros afin qu'ils soient dans l'ordre et sans doublons.
Toutefois, en copiant le code sur ce nouveau fichier il passe en mode débogage.
sur la ligne Redim Tablo.
Je débute en VBA et la je sèche sur la raison, bien que je m'en doute.

En vous remerciant.
 

Pièces jointes

  • Moyens Synthèse_modif.xlsm
    658 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour bigeart,

Si vous vous doutez de la raison corrigez-la donc !

Il est évident que pour définir derlig il faut utiliser la colonne C et non pas A :
VB:
derlig = Range("C" & Rows.Count).End(xlUp).Row
Par ailleurs la restitution doit se faire en R8 au lieu de O8 :
VB:
[R8].Resize(UBound(tablo), 2) = tablo
A+
 

Discussions similaires

Réponses
21
Affichages
403

Statistiques des forums

Discussions
312 210
Messages
2 086 277
Membres
103 170
dernier inscrit
HASSEN@45