Besoin aide pour code vba

Résolu
titeframboise62 Messages postés 3 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 24 septembre 2010 - 22 sept. 2010 à 10:47
nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 - 25 sept. 2010 à 20:56
bonjour,
j'aurais besoin d'une aide!
Actuellement je conçois mes plannings prévisionnels/réels à la main et j'aimerais que ma méthode soit informatisée.
Dans un tableau Excel, j'indique
colonne A : date du chantier
colonne B : Nom du chantier
Colonne C : Nom salarié
Colonne D : prénom salarié
colonne E et F : heure début et fin de matinée
colonne G et H : heure début et fin d'aprem
colonne I : total des heures de la journée

A la suite de cela en ligne 1 (au dessus de mon tableau) je fais apparaitre une ligne de cellules de couleur correspondant au nombre de jour prévisionnel; une cellule de couleur = 1 journée travaillée
Et en ligne 2, je voudrais que mes cellules correspondant aux heures réels travaillées se colorent automatiquement en faisant référence au nombre d'heures travaillées.
Si dans la colonne I, il y a eu 8h de travail, il faudrait qu'en colonne 2, une cellule soit colorée. Si le lendemain, il y a de nouveau 8h de travaillé, il faut que la cellule suivante de la ligne soit colorée.
Mais parfois, les salariés sont plusieurs à travaillé sur le même chantier donc parfois en une journée il y a l'équivalent de 3 jours de travail; donc dans ce cas il faudrait que les 3 cellules suivantes soit colorées.

Merci de m'éclairer avec un éventuel code VBA ou diverses macros.

J'espère avoir été assez claire dans ma description, bien que c'est plus facile de comprendre quand on sait de quoi on parle.

5 réponses

titeframboise62 Messages postés 3 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 24 septembre 2010
24 sept. 2010 à 15:05
merci bcp pour ton aide.
Pour le moment le code ne fonctionne pas mais ne faudrait-il pas créer un bouton qui activerait le code ou qqch de ce style?
3
nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 1
23 sept. 2010 à 18:25
Bonjour,

tout d'abord je tiens à t' informer que toutes les réponses à tes questions ce trouve sur les différents forum.

N'étant encore qu'a mes début sur vb6 moi aussi, quelques petit conseils avant tout cherche a décomposer ton problème en plusieurs étapes en recherchant leurs solutions, il ne te reste plus qu'a les assembler.

Pour ne pas te laisser dans le déssaroi voici ce que j'ai pu faire en 20 minutes avec la methode citée ci dessus. Attention mon code est en vb6.3 pas en Vba mais cela devrai fonctionné

donc en suppossant que tu travaille sur la feuille 1 de ton classeur
le code est a collé dans ta feuille 1
Enum myRoundEnum
    myRoundup = -1
    myRoundDown = 1
End Enum
 
Public Function myRound(vValeur As Variant, Optional byNbDec As Byte, Optional eSens As myRoundEnum = myRoundup) As Variant
   myRound = eSens * Int(eSens * vValeur * 10 ^ byNbDec) / 10 ^ byNbDec
End Function

Private Sub Worksheet_Calculate()
Dim i As Double
Dim x As Integer, c As Integer

c = 0
i = 0
x = 0
With ThisWorkbook.Worksheets(1)
    
     .Rows("2:2").Interior.ColorIndex = xlNone ' remise à blanc de toute la ligne avant de mettre à jour
        i = .Range("I10").Value ' recuperation du nombre d'heures totale LA REFERENCE RANGE
        'EST A ADAPTER SELON TON TABLEAU
        i = i * 3 ' decompte du nombre d'heure en journée de 8 heures
        x = myRound(i, 0, myRoundup) ' suppression des nombres décimaux arrondi à l'entier
        'superieur
        For c = 1 To x ' Boucle sur le nombre de jour soit le nombre de cellule a colorié
            With .Cells(2, c).Interior
                .ColorIndex = 3
                .Pattern = xlSolid
            End With
        Next c
        
    
End With
End Sub

dis moi ci ça marche et si ça répond à ton besoin
0
nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 1
24 sept. 2010 à 20:06
Bonjour,
la création d'un bouton est inutile car la macro devrait se lancer toute seule lors du calcul des formules de ta feuille d'ou l'évènement "Private Sub Worksheet_Calculate()".

Pourquoi la macro ne se lance pas :

- l'option de calcul automatique est désactivé :

vérifie tes options excel

- tu n'as pas mis le code ou il fallait :

Quel est le nom de la feuille où tu saisie tes heures? tu dois mettre le code complet dans ton explorateur de projet sur la feuille qui contient ton tableau, puis dans la ligne " With ThisWorkbook.Worksheets(1) remplace le 1 par le nom de ta feuille pour donner "With ThisWorkbook.Worksheets("mafeuille"), attention les guillemets sont obligatoire.

- tu n'a pas modifié une cellule entrant dans une formule de calcul :

modifie donc l'une des cellules( ta colonne "I" se calcul bien par des formules ce n'est pas toi qui saisie manuelement le total d'heure?)

Pour mon code je suis parti du principe que la derniere ligne de ta colonne I, était la somme de toute les autres cellules de ta colonne I dans ton tableau. a tu modifié la référence "I10" par la derniere ligne de ton tableau en collonne I.

Je crois avoir fais le tour de toutes les raisons pour que le code ne fonctionne pas sur ton classeur.

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
0
titeframboise62 Messages postés 3 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 24 septembre 2010
24 sept. 2010 à 21:54
Je suis dsl mais je suis pas experte en code VBA et je n'y parviens pas. SI tu es d'accord je te joint mon fichier pour que tu vois à quoi cela ressemble et si tu parviens à me faire fonctionner tout cela se serait vraiment génial de ta part.

C'est déjà cool que tu es consacré du temps à mon projet et je t'en remercie.

Aurais-tu une adresse mail à me passer que je puisse t'envoyer mon fichier? merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 1
25 sept. 2010 à 20:56
je t'es mis mon adresse mail dans ta boite e mail du site

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
0
Rejoignez-nous