[Excel] Calculs automatiques sur Excel | GPAO

Résolu/Fermé
Hellowa Messages postés 11 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 28 avril 2009 - 21 avril 2009 à 09:43
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 22 avril 2009 à 13:50
Bonjour à tous,
J'ai longuement parcouru le forum, mais je n'ai malheureusement pas trouvé la réponse a ma question.
Voilà, je suis entrain de créer un fichier d'aide a la Gestion de Production. Cependant, je bloque sur quelques points:
Avant tout je vais resituer le contexte, afin de faciliter, je l'espère la compréhension.
Le tableau est constitué de la manière suivante: Un premier tableau avec en entrées:Les numéros et noms des affaires en cours et les informations relatives a chaque affaire: Le temps prévu, l'échéance, et le récapitulatif des heures passées sur chaque affaire, par mois.
A côté de cela, j'ai un tableau avec comme entrées: Le nom de chaque personne de l'entreprise, et la date.


L'utilisateur du tableau ( ici le chef de production) veux utiliser le tableau de la manière suivante: Il remplis son premier tableau avec le numéro, le nom, le délai et le temps prévu pour l'affaire, ensuite il répartit les taches dans le tableau de droite ( exemple: a l'aide d'un menu déroulant il décide de qui fait quoi a tel jour).
J'ai réussit a créer un menu déroulant avec une saisie semi automatique, mais je ne vois absolument pas comment je pourrai faire pour que Excel calcule directement en fonction des jours ou ont étés attribuer les taches, le temps qui a été passé a les effectuer. Je reformule pour essayer d'être un tantinet plus clair:
J'aimerai que lorsque l'on sélectionne une tache tel jour tel personne grâce au menu déroulant, cela rajoute le nombre d'heures que la personne travaille ce jour là au total d'heures passées sur l'affaire.
Je ne sais pas comment résoudre ce problème en VBA et je pense qu'en simples formules, cela ne serai...pas très simple justement.

Je pensais faire quelque chose de ce genre:
Plage de données1=lundi; mardi; mercredi;jeudi, pour tout le monde=tpstravail1
tpstravail1=8,5h
Plage de données2=vendredi, pour tout le monde=tpstravail2
tpstravail2=5h

Test=Combien de cellules de la valeur de l'affaire numéro1 pour le tpstravail1?= nbre1tps1
Test=Combien de cellules de la valeur de l'affaire numéro1 pour le tpstravail2?= nbre1tps2

Temps passé sur l'affaire 1= nbre1tps1 x tpstravail1 + nbre1tps2 x tpstravail2

Voilà pour le principe...
J'espère avoir été assez clair,
Merci d'avance de prendre en compte ma demande,
Bien cordialement,
Eloi.
A voir également:

7 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
21 avril 2009 à 19:18
Bonjour Hellowa,

J'ai pris ton dernier fichier et j'ai réalisé une macro en VBA qui semble fonctionner.
Ce n’était quand même pas si simple que ça. Tu verras j'ai créé une feuille dans laquelle on peut paramétrer la liste des salariés, cela m'a semblé plus souple.

Regardes ce que tu en penses.

http://www.cijoint.fr/cjlink.php?file=cj200904/cijUi3n9gD.xls

A+
4
Hellowa Messages postés 11 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 28 avril 2009
21 avril 2009 à 10:34
J'ai fait une version bateau du fichier afin que vous compreniez mieux ma requête.
Elle est disponible a cette adresse:http://www.cijoint.fr/cjlink.php?file=cj200904/cijOuwSpX9.xls
Cordialement,
Eloi
0
Hellowa Messages postés 11 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 28 avril 2009
21 avril 2009 à 14:24
J'ai continué mes recherches, mais je bloque dans la réalisation de la macro...
Voici un fichier d'exemple que j'ai créé cette après midi.
http://www.cijoint.fr/cjlink.php?file=cj200904/cijulfK73W.xls
Merci d'avance!
Eloi
0
Je crois me souvenir qu'il y a une fonction "sommesi" qui fait le total d'une cellule en fonction d'un critere.
Je ne peux pas tester car je n'ai pas excel sous la main maintenant mais en mettant que la plage à tester est le tableau complet du planning des equipes à droite ; alors je pense qu'en entrant comme conditon "=numero de l'affaire", alors tu devrais avoir le nombre de jour alloué à la dite affaire.
0
Hellowa Messages postés 11 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 28 avril 2009
22 avril 2009 à 08:11
Woaw, c'est fantastique, merci! Je suis impressionné!!!

J'était tellement démoralisé de ne pas arriver à faire de macro que je l'ai fait en ligne de calcul directement dans Excel! Mais ta solution est 100 fois meilleure.

http://www.cijoint.fr/cjlink.php?file=cj200904/cij6pXL9dj.xls

Voilà le fichier que j'avais fait.
Maintenant je souhaiterai trouver un système qui permet, chaque semaine, de décaler les semaines. C'est a dire, je m'explique:
J'aimerai que le lundi par exemple, on lance la macro, et les données de la semaine précédente sont éffacées, quand a celles de la semaine en cours sont décalées.
Cepandant, les temps de potentiel de travail doivent être conservée...
Ce n'est pas très clair, mais il est 8heures du mat et j'ai la tete dedans.
Je cherche une solution et lorsque je serai à bout, je viendrais soliciter votre aide =)!
En fait, l'idéal, je dis bien l'idéal, serait de trouver comment faire pour que , quel que soit le jour de la semaine ou l'on execute la macro, elle mette a jour les dates et les semaines.
J'ai trouvé cette formule, mais je ne la comprend pas...

=ENT((D-SOMME(MOD(DATE(ANNEE(D-MOD(D-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
Elle permet de trouver le numéro ISO de la semaine en fonction de la date!
Si quelqu'un peut m'éclairer, d'avance merci!
Bonne journée,
Eloi
0

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

Posez votre question
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
22 avril 2009 à 10:37
Bonjour,

Il exsite une fonction VBA qui calcule le numéro de semaine :

NumeroSemaine = DatePart("ww", TaDate)

Mais elle ne donne pas toujours le même résultat que ta formule car il y a l'eternel problème de la position du 1° janvier... bref dans certain cas ta formule donne semaine 53 alors que la fonction VBA donne semaine 1.

Je pense que c'est ta formule qui est compliquée mais juste.

Au fait, pour qu'elle marche, il suffit de nommer le champ date en "D" ou remplacer les "D" dans la formule par la référence à la cellule (C32 dans ton exemple).

Tu peux essayer d'adapter ma macro pour faire ce que tu souhaites.

Si tu as des problèmes, dis le nous.

A+
0
Hellowa Messages postés 11 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 28 avril 2009
22 avril 2009 à 10:57
Après réfléxion, je me suis rendu compte qu'il fallait mieux faire 2 macro
Une pour le calcul direct, l'autre pour le "décalage" hebdomadaire.

Voilà ce que j'ai trouvé, reste plus qu'à trouver comment faire avancer le chmilblik.
Si quelqu'un sait comment décaler une portion de tableau, j'aimerai un peu d'aide... Mais je continue et chercher et si je trouve je vous montrerai le résultat!
En attendant, voilà ce que j'ai fait!
Function WeekNumber(Optional ByVal vDate As Variant) As Byte
    If IsMissing(vDate) Then vDate = Date
    WeekNumber = DatePart("ww", vDate, vbMonday, vbFirstFourDays)
End Function
Sub Decalage_semaine()
 Dim SEM As Integer, ICOL As Integer
 
'On calcule tout d'abbord la semaine en cours
SEM = WeekNumber(Now)
'Puis on l'ajoute sur les 2 tableaux
For ICOL = 4 To 6
    Cells(1, ICOL) = ""
    
Next ICOL
For ICOL = 4 To 6
    Cells(1, ICOL) = "Semaine" & SEM
    SEM = SEM + 1
Next ICOL
End Sub


Informatiquement,
Eloi
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
22 avril 2009 à 12:03
Bonjour,

Juste une info. Il existe une fonction en VBA pour calculer le N° de semaine :

NumeroSemaine = DatePart("ww", TaDate)

Mais ta fonction donne un résultat plus correct. En effet, il y a toujours un problème pour avec le 1° janvier qui est selon les années en semaine 53 et non pas en semaine 1.

(Je ne sais pas si c'est ta question mais ta formule fonctionne si tu nomme "D" ta cellule date ou si tu remplace "D" par C32 dans ton exemple)

A+
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
22 avril 2009 à 13:50
Ce message est sans intérêt, je l'ai posté en double ...
0