VBA Excel : Selectionner des cellules [Résolu/Fermé]

Signaler
Messages postés
181
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
16 mai 2020
-
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
-
Bonjour à tous,

Voici mon problème :

J'ai un certain nombre de chantiers (disons 6) auxquels sont affectés au minimum 3 personnes qui se relèvent suivant des rotations de 4 semaines de travail et 4 semaines de congé (ce nombre 4 n'est pas fixe, on peut avoir 1, 2, 3, 5,et même 6 semaines)
Pour tracer le planning de rotation semestriel du personnel, j'utilise excel et je faisais recours au dessin de rectangles (colorés en noir pour travail et en blanc pour le congé), mais cela ne donnait pas le résultat que je voulais. Je me suis donc tourné vers le coloriages des cellules (je réduisais la largeurs des colonnes à 5 pixels pour que chaque colonne représente une journée), ce qui m'a satisfait coté résultat mais comme j'ai 15 chantier le travail devient plus long et épuisant, sans parler des erreurs très fréquentes.
Peut-on faire ça avec VBA pour gagner du temps et surtout pour éviter les erreurs ?

Voici le lien vers mon fichier car comme on dit : Un dessin vaut mieux que 1000000 discours (enfin environ looooool)
http://www.cijoint.fr/cjlink.php?file=cj200802/cij136395214651.xls

Merci à tous ceux qui auront lu mon poste, et un grand merci à ceux qui m’auront aider à trouver une solution à mon problème.

14 réponses

Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonsoir hmcirta,
J'ai regardé votre tableau.
Question : où trouve-t'on les données relatives à ses divers chantiers .... début et fin chantier , période travail, congé etc. ?
Messages postés
181
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
16 mai 2020
20
Le Pingou Bonsoir,

Tout d'abord merci de me répondre aussi vite
En suite est ce que mon fichier comporte deux feuilles si non voici le lien du nouveau fichier avec plus d'explications
http://www.cijoint.fr/cjlink.php?file=cj200802/cij4793884854649.xls

Pour ce qui concerne les chantiers : Ce sont des appareils de forage, c'est dire donc que le travail y est 24h/24h et 7jours/7.

Le but que je veux atteindre est le suivant: Sur chaque chantier sont affectés des superviseurs de forage qui se relèvent dans un système de 4x4 (c.a.d. 4 semaines de présence contre 4 semaines de congé, mais il arrive que l’on fasse 1, 2, 3, 5 et même 6 semaines de congé ou de présence), de sorte qu’au moins un superviseur soit présent sur chaque chantier, mais ce n’est pas là une condition nécessaire.
Donc les cellules coloriées correspondent au fait au nombre de jours de présence de chaque superviseur et les cellules non coloriées correspondent au nombre de jours de congé de chaque superviseur. Par exemple le superviseur 1 du chantier 01 travaillera 27 jours puis part en congé pour 27 jours etc… . Les chiffres quand à eux correspondent à la date du mois en cours (Par exemple le superviseur 1 du chantier 01 part en congé le 27/01 retourne au travail le 23/02 etc…)

Feuil2, où devra se faire la saisie des données, contient un tableau ressemblant à celui de Feuil1 mais avec des cellules qui contiennent justement ce nombre de jours. C.a.d je n’aurai qu’à saisir 29 dans la colonne Présence pour que les cellules soient coloriées automatiquement et saisir 27 dans la colonne Congé pour que ces cellules restent telles qu’elle.

Voilà… je sais c’est un vrai casse tête chinois tout ça, mais je pense que c’est réalisable.

Mais je reste ouvert à toute autre proposition

A la disposition de ceux qui cherchent plus d’explications.
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonsoir hmcirta,
Merci pour vos informations, j'ai regardé le deuxième classeur et c'est bien clair pour moi.

Par contre pour créer une macro qui va remplir les divers blocs présence/conjé (et en couleur) il faut connaitre les horaires (y compris les dates) de chaque superviseurs .........ensuite c'est sans problème.....C'est se qui me manque ou alors cela se trouve sur la feuille 2 mais il manque les dates de départ ?

Merci de votre réponse.
Pour se soir c'est la fin, les yeux vont se coucher.

Bon dimanche.
Messages postés
181
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
16 mai 2020
20
Salut Le Pingou

Il n'est pas question d'horaire de travail mais de nombre de jours de présence. Ha!... chaque superviseur est present 24h/24h et 7jours/7 et ne peut rentrer chez lui que durant les jours de congé (donc il sera abscent de chez chez lui durant toute la période de présence au travail)

J'espère que c'est le détail manquant.

http://www.cijoint.fr/cjlink.php?file=cj200802/cij4228216494721.xls
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonjour hmcirta,
Merci pour le fichier et le supplément d'informations. Il ne me vennait pas à l'idée qu'il s'agisait d'une présence 24 sur 24 d'ou ma demande d'horaire. Maintenant c'est clair, ma proposition pour demain je pense.
Bon dimanche.
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonjour hmcirta,
Ma proposition pour bien commencer la semaine.
Voir sous : https://www.cjoint.com/?crxGlJhpOb
Je reste à votre disposition, à vous de voir car il me semble qu'il y a un problème avec les présences/congé !
Bon début de semaine.
Messages postés
181
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
16 mai 2020
20
Bonjour Le Pingou

Je viens de voir le fichier et je te remercie pour le travail que tu as fait.

Effectivement il y a un problème pour le superviseur 2 et 3 pour qui la colonne C doit recevoir des informations qui leurs sont relatives.

Durant le week-end je me suis creusé les méninges et je suis arrivé à un résultat satisfaisant.

http://www.cijoint.fr/cjlink.php?file=cj200802/cij10981110404853.xls

Oui,... tu vas voir que le code est long, très long même, mais il me donne ce que je voulais avoir.

Y a t-il possibilité de fusionner les 2 codes (le tien et le mien) ou faire un autre code pour faire plus court?



Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonjour hmcirta,
Merci de votre courriel, je vais regardé votre proposition en fin de journée.
En attendant voici ma proposition pour corriger le problème.
Voir sous : https://www.cjoint.com/?csnMNcDeGY
Bonne journée.
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonjour hmcirta,
Super votre travail.

Je constate que vous refaite chaque fois le tableau de planning selon les chantiers, le personnel nécessaire et le programme "Pré/Con".

C'est une manière de faire à laquelle je n’avais pas pensée.
Je suis partie de l'idée que la feuille de planning est un canevas correspondant au semestre à traiter et qu’il suffisait d'y insérer les blocs de présences et congés selon le plan de base (cycle de chaque superviseur) correspondant à chaque Superviseur.

Ma question: que voulez-vous faire exactement ?
Messages postés
181
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
16 mai 2020
20
Bonjour Le Pingou,

D'abord pour répondre à votre question : je voudrai faire plus court que ça en parlant de code et pour tous les chantiers en même temps comme le fait très bien votre code (Sub InscrireBlocPresCong(nuliba, nulipl)). Il ne restera plus qu’a sélectionner le superviseur pour tracer son planning puis passer au superviseur suivant. Cette méthode évitera de retracer tout le planning si un seul superviseur aura son planning modifié.

« Je constate que vous refaite chaque fois le tableau de planning selon les chantiers, le personnel nécessaire et le programme "Pré/Con". »

Oui, comme le code pour 3 superviseurs est trop long je me suis contenté de tracer le planning d’un chantier à la fois puis je fait un copier coller sur le planning global dans une autre feuille.

Ceci est en quelque sorte le canevas que je retrace à chaque fois car, au fait, je voudrai utiliser la même feuille pour tracer le planning des 2 semestres, il suffira de changer les mois dans Feuil2 (Jan, Fev, etc.. pour le 1er semestre et Juin; Juilt; etc... pour le 2ème semestre ; si vous avez constaté, chaque mois a un nombre de cellules correspondant au son nombre de jours).
On peut faire ça en mettant en face de chaque mois dans Feuil2 son nombre de jours puis on sélectionnera au tout début de mon code ce même nombre de cellules dans le planning puis appliquer la mise en forme du canevas.

La partie n'est pas encore gagnée je le sais, mais arrivera au bout de ça.


Je ne sais pas si j’ai bien été claire cette fois-ci mais je reste à la disposition pour plus d’explications

Merci de votre aide Le Pingou

Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonjour hmcirta,
Merci de toutes ses explications.
J'ai passé un moment sur votre dernier classeur et je pense qu'il serait mieux d'utiliser un canevas (j'ai déjà commencé) et ensuite il faut avoir le tableau des cycles (celui des superviseurs, chantiers et jours P / CR). On part sur cette base pour réaliser le planning et on intègre à votre code (en partie..) et le mien; qui pourra servir lors d'une modification d'un cycle d'un superviseur en cours de route.
Est-il possible de se contacter directement par courriel, se serais un peut plus rapide et de plus on déchargerait CCM de nos discussions ?
A vous de voir.
Note: mon code peut sans problème traiter globalement tout le plan de cycle de base, il est simplement utilisé au cas par cas au début afin de pouvoir tester plus aisément son comportement.

Merci de votre réponse.
Messages postés
181
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
16 mai 2020
20
Bonjour Le Pingou,

Cela serait effectivement mieux de se contacter par courriel, seulement je suis moi même superviseur et je n'ai pas de connexion au net à mon travail (bien dommage d'ailleurs), et comme je dois rejoindre mon travail samedi prochain "pour 3 semaines de Présence" loool, je ne suis pas sur que ce soit une bonne idée, en tout cas moi cela ne me dérange pas, mon e-mail est : hmcirta@yahoo.fr

En ce moment je suis entrain de réduire la taille du code, comme vous l'avez sans doute remarqué, ce sont les cellules qui doivent contenir les dates qui consomment du code et je n'arrive pas à m'en sortir pour le moment (La fatigue sans doute)

Je vous transmettrai mon travail demain

Messages postés
181
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
16 mai 2020
20
Bonjour Le Pingou,

Je patine je patine de puis ce matin et je n'arrive pas à m'en sortir. Ne peut on pas modifier ce code pour le rendre plus court?

With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With


J'ai tout de même pu faire en sorte que, dans la feuilles du planning, le nombre de cellules de chaque mois soit égale à son nombre de jours, mais cela fera augmenter la taille du code... mais bon.

Je pense que votre idée de garder le canevas est bonne, mais il faudra dans ce cas avoir 2 canevas, un pour chaque semestre soit 2 feuilles, à nous de choisir avec des cases d'options le semestre pour lequel on veut tracer le planning. Qu'en pensez vous?

Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonsoir,
hmcirta et moi avons discutés en direct pour ne pas alourdir le forum et vous trouvez le résultat final sur ce lien:
https://www.cjoint.com/?dcxoyvhZQS

Salutations.
Jean-Pierre