diagramme de gantt via MFC

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 7'074
Appréciations reçues : 370
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 9 avril 2018, 18:57

Bonjour et merci pierrep56 ! :-)

Je vais m'amuser à regarder cela de plus près !

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
Avatar du membre
pierrep56
Membre impliqué
Membre impliqué
Messages : 1'197
Appréciations reçues : 197
Inscrit le : 18 juin 2014
Version d'Excel : 2016

Message par pierrep56 » 9 avril 2018, 19:29

Hello LouReed, Bonsoir aux autres,

Pour le fun voici une autre version avec en plus :
* La possibilité d'indiquer des horaires intermédiaires entre les quarts d'heures (3h35 par exemple)
* La possibilité de dessiner plusieurs histogrammes par ligne d'opérateur (je suppose que le gars qui finit une tâche donnée en reprend une autre après)

Pierre
Gantt_2018_Heures_e.xlsm
(235.03 Kio) Téléchargé 32 fois
1 membre du forum aime ce message.
a
apprentissage
Membre habitué
Membre habitué
Messages : 63
Appréciations reçues : 3
Inscrit le : 25 février 2018
Version d'Excel : 2016

Message par apprentissage » 9 avril 2018, 19:41

@galopin01
vous pouvez vusualisez la formule sur toutes les cellules de la mfc.
L'incrémentation de la formule ne permet pas au texte d'aller sur la cellule d'à coté.
MFC.xlsm
(41.37 Kio) Téléchargé 19 fois
a
apprentissage
Membre habitué
Membre habitué
Messages : 63
Appréciations reçues : 3
Inscrit le : 25 février 2018
Version d'Excel : 2016

Message par apprentissage » 9 avril 2018, 20:05

Bonjour PierrEp56, re LouReed,
Merci pour ce magnifique planning un forma très pro.
Je demande si possible de me faire des commentaires explicatifs sur le code parce que je dois l'appliquer sur mon vrais fichier de (1500 lignes :( et 24 colonnes :( :( ) .
ce que je pense à faire c'est d
Enlever le message qui s'affiche en cliquant sur la barre pour alléger le fichier
Créer 5 feuils de planification pour planifier sur 5 jours c'est juste les horaires l'ordre de tâche et les opérateurs qui change.
Afficher le planning à coté des données (mon responsable m'a demandé d'afficher les données + le planning sur la même feuil )
Le fonctionnement sur 15 min suffit largement parce que on est pas trop précis dans la production.
a
apprentissage
Membre habitué
Membre habitué
Messages : 63
Appréciations reçues : 3
Inscrit le : 25 février 2018
Version d'Excel : 2016

Message par apprentissage » 9 avril 2018, 20:34

je croix qu'il me faut une explication du code en commentaire parce que mon nom d'opérateur n'est pas dans la colonne B comme dans l'exemple pareil pour la tâche.
une question : moi pour faire un Gantt automatiser je déclare les données en tableau et j'utilise les fonction index equiv pour calculer les dates de débuts est ce que le fait de déclarer un tableau nécessite une modification sur le code !
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 7'074
Appréciations reçues : 370
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 9 avril 2018, 21:56

pierrep56, cela se rapproche d'un planning personnel !!!
J'aime l'idée, il me reste plus qu'à mélanger les deux : un planning journalier avec la possibilité de mettre plusieurs rectangle à coin arrondis sur une même ligne... Quand je dis plusieurs c'est à dire plusieurs... ;;)

Merci @ vous, et sachez que je n'hésite pas à vous mettre en référence pour aider des "demandeurs" ! :-)

@ bientôt

LouReeD
1 membre du forum aime ce message.
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
Avatar du membre
pierrep56
Membre impliqué
Membre impliqué
Messages : 1'197
Appréciations reçues : 197
Inscrit le : 18 juin 2014
Version d'Excel : 2016

Message par pierrep56 » 10 avril 2018, 09:33

Bonjour à tous,

Pour essayer de répondre à la demande, voici quelques explications :

* Tout d'abord, une précision sur la présentation sur 2 feuilles : j'ai remarqué qu'en fonction des besoins, les utilisateurs créent un nombre variable de colonnes pour les données (par exemple ici 'retard/avance' ne sera pas utile pour un autre utilisateur). Donc pour faire une proposition la plus modulable, les 2 feuilles permettent de créer autant de colonnes de données qu'on veut.
Ceci dit, si on veut tout mettre sur une seule feuille, il suffit de modifier les lignes Whith Sheets("Machin") et d'indiquer la première colonne du graphe dans le code.

* Pour alléger le fichier : il suffit de sélectionner la première colonne vide à droite, puis Maj+Ctrl+Fleche droite et supprimer, puis sélectionner la première ligne vide en bas et Maj+Ctrl+Fleche bas et supprimer. On fait cette manip dans toutes les feuilles et ça réduit le fichier à 75ko environ. (ci-joint fichier allégé, sans pesticide, sans paraben, ni phtalates)
Gantt_2018_Heures_e.xlsm
(74.7 Kio) Téléchargé 29 fois
* Pour supprimer le message au clic sur un histogramme : dans le module 'Accueil', on efface les lignes de la procédure Fiche (en laissant les 2 lignes : Sub Fiche et End sub)
(mais ce n'est pas ça qui va alléger beaucoup)



Pour le code en lui-même, voici la séquence :

* Les données sont placées dans une variable tableau Tdata (procédure Init_T). Pour la suite quand on boucle sur cette variable (for i= 2 to ...), les données de la colonne 2 sont récupérées par un truc genre Tdata(i,2). Ainsi avec les données de l'exemple l'heure de début est en colonne H (colonne 8) pour y faire référence ce sera Tdata(i,8).
A noter : cette donnée est au format variant, il faudra donc éventuellement la re-typer (implicitement ou explicitement) pour l'utiliser.
Par exemple l'instruction : TData(i, 9) - TData(i, 8) est un re-typage implicite en valeur numérique, CStr(TData(i, 1)) est un re-typage explicite en texte

* Le graphique se base sur :
1/ la première heure de l'échelle en "D2" => si on met tout sur une seule feuille, il faudra alors modifier D2 par la nouvelle référence
2/ la première ligne du graphique, ici 3 : valeur composée dans lg = Idx_T2D(TGr, TData(i, 2), 2) + 1 (l'index de la première donnée étant =2 , l'entête étant en première ligne du tableau Tdata).

* On boucle donc sur les lignes du tableau Tdata, et pour chaque ligne on calcule les 4 valeurs de l'histogramme : left, top, width et height :

- Top : le haut, variable T est simplement le haut de la ligne du graphique plus 2 pour centrer verticalement l'histogramme

- Height : la hauteur, variable H est simplement la hauteur de la ligne du graphique moins 2 en haut et moins 2 en bas (pour le centrage vertical)

- Left : la limite gauche, variable L : on calcule d'abord la différence entre l'heure du début du graphe et l'heure du début de la tâche:
TData(i, 8) - CDbl(Deb)
à cette valeur on ajoute éventuellement 1 (soit 24h) si l'heure du début de la tâche est le lendemain de l'heure de début du graphe
+ IIf(TData(i, 8) > CDbl(Deb), 0, 1)
Cette valeur est multipliée par 24 pour transformer l'heure en dixième (par ex 2:30 est transformée en 2,5), puis par 4 puisque le graphique est prévu tous les 1/4 d'heures.
La variable Lcl représente donc le nombre de colonnes entre le début du graphe et le début de la tâche. Il suffit alors de multiplier ce Lcl par la largeur type des colonnes du graphe, d'y ajouter le left de la première colonne du graphe pour obtenir le Left de l'histogramme. (Le plus 2 correspond à un décalage 'pour faire joli')

- Width : la largeur, variable W : principe similaire, entre l'heure de début et l'heure de fin. Calcul du nb de colonnes qu'on multiplie par la largeur type des colonnes.

Une fois ces 4 valeurs calculées, il suffit de dessiner un shape rectangle dont la couleur reprend celle de la colonne A : couleur = .Range("A" & lg).Interior.Color

En résumé ça reste assez classique.
Est-ce que ça répond à la demande?


@LouReed : comme planning personnel, je me suis fait un agenda que je poste ici si ça peut donner des idées.
Agenda++_v2.4b.zip
(317.93 Kio) Téléchargé 30 fois
Pierre
1 membre du forum aime ce message.
a
apprentissage
Membre habitué
Membre habitué
Messages : 63
Appréciations reçues : 3
Inscrit le : 25 février 2018
Version d'Excel : 2016

Message par apprentissage » 10 avril 2018, 10:25

Bonjours messieurs,

Merci PierreP56 pour les explication ça commence à être claire pour moi mais ça reste un peu compliqué vu mon niveau en VBA j'avoue.
Le mieux pour moi c'est de commencer par le modèle que je trouve un peu simple ci-joint car j'ai compris comment est il fait et une fois je trouve le temps je perfectionne mon planning en utilisant le votre.

Donc Messieurs, si quelqu'un pourra me faire des modifications sur le fichiers ci-joint pour qu'il soit adapter à mon besoin, pour cela je cherche à avoir:

1/ un planning type 24h qui commence à 21h et fini à 20h qui fonctionne en 15 min ET qui sera affiché à coté du tableau de données (de préférence toujours décalé par rapport à la dernière colonne du tableau d'une colonne mais c'est pas trop important car mes tableau sont de tailles fixes).
2/ un astuce pour que si je veux pas faire une tâche (la tâche 5 dans l'exemple) le logiciel m'affiche rien sur ça ligne, car dans mon planning j'ai des tâches qui sont pas à faire tous les jours et cela est trop important ! par exemple dire en VBA que si la cellule de la colonne "N de tâche" et vide ==> n'affiche rien sur le planning.
3/ je veux appliqué la même chose sur plusieurs feuils (normalement 5)

Merci messieurs de m'aider à cette réalisation parce que sans ça tout ce que j'ai fais durant mon stage n'a aucun intérêt ::( !
Gantt_super.xlsm
(20.21 Kio) Téléchargé 47 fois
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message