[Excel] Calculs automatiques sur Excel | GPAO [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
28 avril 2009
-
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
-
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.

7 réponses

Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
587
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
28 avril 2009

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
Messages postés
11
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
28 avril 2009

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
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.
Messages postés
11
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
28 avril 2009

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
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
587
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+
Messages postés
11
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
28 avril 2009

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
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
587
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+
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
587
Ce message est sans intérêt, je l'ai posté en double ...