Offset avec VBA
Bonjour,
Le debogage continue ?????
J'espère que le résultat du second test a été concluant !
Qu'en est il des bogues du premier test de débogage ????
A+
Bonjour,
Initialisation Février ok...
Modification à la date du 22/02 : passage de 3 à 5. Aucun nouveau bogue et tout a l'air conforme.
Il me restera donc un test à faire sur le début mars, pour vérifier que le report des modifs sur le mois précédent (semaines qu'on trouve sur les deux mois) s'opère, avec modification sur un dimanche (pour avoir les deux bouts de la semaine)
Plus peut-être un ou deux autres pour voir les effets de sorties en désordre : pour le moment je fais en sorte de choisir la date de changement pour que ce soit la dernière unité qui sorte (ce qui montre qu'on peut parfaitement le faire). Mais on peut faire sortir aussi bien la 1 ou la 2... Ces noms sont arbitraires, ce qui ne devrait avoir aucun effet, le programme se contente de sortir celle qui est en position de sortie au jour considéré, mais autant le vérifier.
Bonne journée.
Bien reçu et bonne journée à vous aussi...
Finalement je vais finaliser le fichier actuel en ma possession... Donc hier j'ai pu régler la lenteur et en vitesse normal d'exécution... Je finalise aussi aujourd'hui avec les dernières mises en forme.
Je vais suivre votre conseil et ne rien précipité... Je vais juste les dire que c'est en cours d'amélioration et qu'ils peuvent déjà exploiter la version actuelle et que la version finale plus dynamique et automatique les parviendra plus tard.
Vraiment Merci!
Je ne vous connaît pas personnellement mais vous êtes devenu une inspiration pour moi.
Votre expertise et votre sens de le partager et d'aider les autres....
Merci!
Initialisation de Mars (à 5).
Changement au 4 mars : on passe à 6.
La mise à jour des semaines figurant sur février se fait... Un petit point cependant est loupé : les inscriptions figurant en colonne A (non visibles) qui sont adaptées la semaine où intervient la modification (si elle n'intervient pas le lundi).
Par exemple : pour la première semaine de mars, en A3 figurait 5 (roulement lors de l'initialisation, qui figure encore sur les deux dernières semaines de février que l'on retrouve en mars).
La modif intervenant le 4 mars (qui est un dimanche), l'inscription en A3 devient mod5 (ancien roulement modifié), en A4 est ajouté nou6 (nouveau roulement), et en A5 dJ6 (date d'effet décalée de 6 jours par rapport au lundi, soit le dimanche).
Il se trouve que dans la version précédente qui était en cours quand j'ai commencé à concocter la dernière, ces mentions devaient être utilisées, ainsi que d'autres indications qui devaient s'ajouter sur les colonnes AE à AG masquées. La dernière version n'a pas eu besoin de tout ça, j'ai abandonné ce qui devait aller en AE:AG mais j'ai conservé (au cas où...) les indications de changements...
Comme elles ne servent pas (et ne sont pas visibles) la répercussion sur le mois précédent n'a rien d'urgent...
Mais il est possible qu'elles puissent tout de même être utilisées : tu peux noter sur mars que l'UR6 a été ajoutée sur la dernière ligne, toute la ligne est cependant dépourvue de "X" ! Normal car du 26/02 au 03/03 elle n'entrait pas le le roulement en vigueur (à 5), elle n'apparaît que le 4 mais en repos n'apparaîtra en service effectif que le 5 (le lundi).
Il semblerait donc qu'il serait peut-être utile de prévoir une signalisation de changement (peut-être simplement en mentionnant la date d'entrée en col. A ?) et dans ce cas, le fait de les avoir déjà placés dans la feuille s'avèrera utile car ce sera juste le fragment de code à modifier pour faire cette signalisation.
Initialisation Avril (à 6).
Changement au 13 avril : on passe à 4.
Là on peut noter qu'à la date du 13 avril, les unités sortantes sont la 1 et la 2. Il va donc rester les 3, 4, 5, 6 qui occupent les 4 premières lignes de la semaine modifiée, la1 et la 2 étant déplacées sur les deux dernières, et disparaîtront les semaines suivantes.
Pas la peine que je continue plus... mais il reste cependant tout un volet que je n'ai pas testé et qui pourra révéler quelques bogues ou anomalies : il s'agit de l'ensemble des opérations considérées comme non licites lors de changements d'année...
Lorsqu'on change l'année (en R1), une proc. évalue la relation entre l'année affichée antérieurement et la nouvelle. Si le changement est normal, incrémentation de 1 an, l'utilisateur est simplement informé que les données relatives à l'année précédente seront effacées s'il choisit de continuer.
Si l'année antérieure n'existait pas (0) ou si elle était inférieure de plus d'un an à l'année en cours ou bien si elle était supérieure à l'année en cours, le changement sera validé sans signalisation (on considère qu'on pouvait être en train d'opérer des simulations, que l'on n'était pas en situation opérationnelle, et que l'on s'apprête sans doute à y revenir...)
Si on efface sans mettre de nouvelle année, le changement sera de même validé mais après confirmation de l'utilisateur (car cela peut être un effacement par erreur).
Par contre dans les autres cas, le changement de date sera bloqué (enfin pas vraiment puisqu'il suffira d'effacer, confirmer l'effacement, pour ensuite remettre ce qu'on veut...) Mais cela évite au moins des discontinuités d'une année sur l'autre faites par erreur.
Ceci intervient donc lorsqu'on changera l'année, mais la procédure ne fait rien d'autre qu'émettre les messages et ne change rien !
C'est lors de l'initialisation qui suit que des choses pourront se produire (mais en fonction de ce qui existait précédemment, indépendamment du changement de l'année) : d'abord, si un cycle n'était pas défini auparavant, on va demander un roulement pour le créer, et il ne pourra l'être sans qu'un roulement soit fourni. Si une année existait pour laquelle un cycle était défini, si la nouvelle année est égale à l'ancienne +1 pas de problème, la nouvelle année prolongera le cycle de l'année précédente automatiquement. Si par contre on s'est écarté de cette succession, un message va signaler une rupture de continuité et demander à l'utilisateur de choisir : si l'année est supérieure de plus d'un an à ce qui précédait, soit rétablir la continuité (il faudra que l'utilisateur modifie les années en suivant leur succession et déclenchant l'initialisation une fois pour permettre la propagation du cycle préexistant jusqu'à l'année recherchée), soit entériner la rupture (réponse non) et il est alors avisé qu'au prochain lancement il lui sera demandé un roulement pour initialiser ; si l'année est inférieure à ce qui précédait : il peut choisir de confirmer ce retour en arrière (même situation que la réponse non dans le cas précédent) ou non (et dans ce cas il devra modifier l'année pour être dans la continuité de l'année préexistante.
Je lâche ce message, j'apprête le fichier d'illustration et le fais passer ensuite.
Voilà le fichier qui illustre la simulation d'initialisation de 4 feuilles de Quart mensuelles, janvier à avril, et incorporant 4 modifications de roulement.
Le tableau des semaines fournit en quelque sorte l'historique... Sur la feuille cycle, à part l'année (dont j'ai parlé dans le dernier post) et le mois servant à lancer l'initialisation, les cellules U2 et U3 sont à servir pour lancer une modification, mais tout le reste est servi automatiquement... sauf dans le tableau bleu à gauche, les indications d'équipes à porter en regard des unités actives.
J'ai encore un ou deux point à souligner mais je les passerai avec le fichier suivant (vierge)...
Bien reçu.
Je charge pour visualiser et te revient.
D'ici là merci et à tout à l'heure...
Voilà maintenant un fichier d'expérimentation, vidé, où tu pars d'une situation vierge pour l'année 2018.
Les deux points qu'il me restait à soulever : dans l'ancienne version, le lancement d'une initialisation provoquait la vérification de l'existence d'une feuille Mois demandé (si trouvée on disait, déjà créée, existe...) ce qui se fait toujours, puis on cherchait une feuille du mois précédent car on assurait la continuité de cycle à partir du mois précédent. Ce n'est plus le cas, et on s'en passe, on mémorise l'année au départ, et on la maintient à jour.
Si une feuille précédente disparaît, le programme ne s'en apercevra même pas. L'inconvénient est sans doute que tu peux lui faire initialiser une feuille d'un mois passé, ce qui pourrait créer un certain bazar...
Il faudra sans doute que je vois à verrouiller cela.
Par contre, c'était le 2e point, il existe déjà un verrou en la matière s'agissant des modifications : tu peux effectivement demander une modification sur un mois antérieur au mois en cours, le programme t'informe alors que si tu confirmes, tout les mois qui suivent la date de ta demande seront préalablement supprimés (on reviendra à un mois en cours antérieur). En quelque sorte on te permet de faire des simulations et revenir en arrière...
Bonne journée.
Bonjour ;
Probleme1 : les colonnes commencent àJ; donc il je vois plus de I2 comme dans dans l'explication
Je ne vois plus ou choisir les quart par equipe(ie les 0;1;2;3;-1;-2); ensuite ou inserer la liste des agents dans leur équipe et enfin comment utiliser les unités de roulement UR
Merci!
Tu ne me lis pas !
Au démarrage (rien avant) tu choisis le roulement qui t'es demandé par InputBox. Et c'est tout ! Tu ne choisis rien d'autre.
Tu attends le résultat, quand tu as la feuille tu peux la consulter, tu vois comment est établi le roulement, et là tu peux choisir de mettre des Equipes en face de chaque unité de roulement. Cela te sera demandé pour les opérations ultérieures, c'est ainsi que tu définis comment le cycle va s'appliquer.
I est devenu R et L est devenu U. Oubli de mise à jour. De même que tu n'inscris pas le roulement, on te le demande.
Tu ne me lis pas !
Au démarrage (rien avant) tu choisis le roulement qui t'es demandé par InputBox. Et c'est tout ! Tu ne choisis rien d'autre.
Tu attends le résultat, quand tu as la feuille tu peux la consulter, tu vois comment est établi le roulement, et là tu peux choisir de mettre des Equipes en face de chaque unité de roulement. Cela te sera demandé pour les opérations ultérieures, c'est ainsi que tu définis comment le cycle va s'appliquer.
I est devenu R et L est devenu U. Oubli de mise à jour. De même que tu n'inscris pas le roulement, on te le demande.
Si je vous lis ....
Au fait j'ai fait une bêtise, j'étais tellement content quand j'ai reçu le fichier que je me suis affolé et j'ai mélangé mon fichier que je devais présenter demain!!!!!! Conséquence : ça ne fonctionne plus et je ne sais pas comment régler:::::
de coup , je suis déboussoler et ça m'inquiète///////////////
Qu'est-ce qui ne fonctionne plus ?
Qu'est-ce qui ne fonctionne plus ?
Mon fichier que j'ai nomme TASED et je vous l'avais envoyé un moment en Messages prives (au fait c'est sur la dernière fichier dans laquelle vous avez ajoute quart des agents )que j'ai très modifie pour la présentation de demain et l’implémentation avant la finalisation comme vous m'avez conseille,
Finalement j'ai pu y voir claire mais certaines erreurs persistent et la lenteur des macros est revenu.
Si tu l'avais mis en message privé, tu peux l'y récupérer en cas de besoin...
Tout est bon maintenant !
Dieu merci. La lenteur est réglé..
J'ai mis quelques postes pour demander de l'aide, sinon tout est fin prêt pour la présentation de demain.
C'est pour informer et vous remercier pour votre contribution...
Merci et bonne nuit!
Bonjour,
La présentation s'est bien passé maintenant on me demande de l'implémenter...
Trop de bugs mais j'arrive à gérer certains..
Pour le roulement à 6, je pense que ce n'est pas configuré car le système que m'envoie le bogue suivant : "Erreur d'execution9, L'indice n'appartient pas à la sélection.."
Et ça se blogue sur l'écran pas moyen ni de lancer le débogage ni de quitter , ça se fige là et pas moyen de quitter...
Si je fais une fermeture forcé en enregistrant , c'est uniquement les quart de la première semaine qui sont remplies en laissant les autres semaines vierges sur la feuille "QUART PAR AGENT"...
J'ai un roulement à 6 à implémenter et je n'arrive pas , s'il vous plaît, il me voir ça sinon je suis mort...
Je suis actuellement au niveau de l'implémenter et ça marche pas.
Il faut penser voir pour le cas de 5 aussi , pour le moment je n'ai pas tomber sur un tel cas et l'implémentation continue jusqu'en fin de semaine, il me reste encore 8 unités a implémenter avant le Samedi ...
Je 'ai pu implémenter qu'une seule unité, la seconde a un roulement à 6 et j'y suis bloqué..
Sauvez moi!!!
Merci!
SOS!
Je vous sais occupé mais des que vous avez un petit moment il faut y voir s'il vous plaît....
Je suis vraiment coincé..
Bonsoir,
Tu deviens brouillon et on ne sait plus de quoi tu parles. Tu mets un classeur qui ne correspond pas à ce que tu dis... Un peu d'ordre dans tout ça...
D'abord pour ce qui est de traiter les erreurs, il va falloir être très précis :
- Les erreurs d'exécution, qui surviennent lors de l'exécution, un message indique le numéro d'erreur, on clique sur Débogage et on se retrouve en mode arrêt dans la procédure où le programme s'est bloqué, avec une ligne surlignée en jaune.
Il faut communiquer le n° d'erreur, la ligne où s'est produit l'arrêt, le contexte dans lequel on exécutait (surtout si cela ne se produit pas systématiquement) et relever les valeurs des variables au moment de l'arrêt (j'en ai en principe pas mal, et c'est une information importante pour déceler la source du problème)
Pour connaître la valeur des variables, on les survole à la souris et leur valeur s'affiche dans une info-bulle.
Les erreurs les plus fréquentes sont toujours 9 et 13. On verra aussi relativement la 91, et parfois 424 et 438 (qui sont plus des erreurs de syntaxe), la 6 quand on crée par inadvertance une boucle infinie...
Ces erreurs sont des erreurs identifiés par VBA et on sait en général à quoi s'en tenir, même s'il faut parfois chercher un moment pour trouver ce qui motivait l'erreur.
Mais on a aussi fréquemment l'erreur 1004, et cette erreur n'est pas une erreur VBA, c'est une erreur Excel dont VBA ne sait rien dire. Il faut donc en trouve la source, pas toujours à l'endroit signalé, loin de là, ou la contourner dans certains cas. Elles sont plus épineuses parce qu'on n'a souvent pas de piste réelle au départ.
- Les erreurs de compilation, qui surviennent au moment où on lance : le compilateur se réveille et découvre quelque chose qui ne lui convient pas... On a alors un message sybillin, la déclaration (1re ligne) de procédure surlignée en jaune, et un mot dans le corps de code surligné en bleu.
Là il faut fournir tous ces éléments, et on essaie de décoder le rébus...
D'autres de même type se contentent de message, type "Next sans For" ou "End With sans With". Le plus souvent il manque effectivement quelque chose mais 3 fois sur 4 c'est autre chose que ce qui est indiqué... On s'y retrouve tout de même assez vite.
Dans le même style : "Argument ByRef incompatible". Si on ne veut pas réfléchir, on se rend à la procédure appelée et on place un ByVal devant l'argument. Mais il peut être tout de même bon de savoir de plus près le pourquoi.
Donc si tu as à signaler des erreurs, rélève tous les éléments, et fait la signalisation dans les règles, on gagnera beaucoup de temps.
Pour ce qui est de ton roulement 6, tu as pu voir dans la démo de tests que j'avais ouvert à 4, ramené à 3, remonté à 5, puis à 6, avant de ramener à 4. Les passages se sont déroulés sans heurt et la passage à 6 comme les autres.
Maintenant, si tu parles de l'ancien programme, il ne comportait pas encore les modifications, donc si tu as initialisé du 4 tu ne pourras jamais avoir autre chose sans supprimer tout ce qui précèdait. (Mais c'est déjà un peu de l'histoire ancienne...)
Il faut que je crée la connexion entre le programme d'élaboration des cycles et le montage de la feuille Quart Agent.
Pour cela je m'appuie sur la présence d'une feuille Equipes qui fournit les agents de chaque Equipe, et sur la feuille Quart Agent qui est unique (c'est la même qu'on réaménage, donc je sais où la trouver, il faudra codifier les conditions de démarrage de l'opération pour que ça ne détruise pas la feuille prématurément...)
Dans la foulée, j'avais annoncé que je ferais l'édition des heures brutes du mois, mais là c'est un peu plus flou pour la réalisation, le support semble être une feuille mensuelle mais on ne sait comment elle arrive là, comment identifier que c'est bien celle du mois à servir... Il y a quelques flous dans les questions d'intendance. Il faudrait un peu plus de précisions...
Je te fais remarquer que pour les cycles, il m'aurait été impossible d'arriver au bout si je n'avais pas défini le changement d'année, l'initialisation annuelle lors du passage d'une année à l'autre, pour pouvoir traiter diverses situations qui risquent de se présenter. Et mensuellement, on sait qu'on l'édite chaque mois, dans la continuité...
Mais je ne vois pas d'organisation semblable pour les heures... et il me semble que ça fait défaut.
Cordialement, et bonne soirée.
Bonsoir,
Comme je l'ai dit, c'est une erreur de code 9,
Quand je clic sur débogage , voici la ligne qu'il mets en jaune :
Do While Teq(m+1, 0) <>""
Avec l'infobule j'ai :
Teq(m+1, 0)=<L'indice n'appartient pas à la sélection.>.
Détails :
Dans la feuille MENU PRINCIPAL si j'active les 6 Équipe avec R en cours (1,2,3,0,-1,-2)..
Initialiser Mois marche
Si je mets les équipes, et je vais sur la génération de la feuille QUART PAR AGENT , C'EST LE BOGUE ...
Je parle pas des modifs juste que le tableau de quart n'est pas généré pour une équipe à 6 agents...
Je dois implémenter un roulement à 6 et ça me bloque.
Je voulais que si possible que vous corriger ce bogue pourque je puisse l'implémenter..
Par ailleurs, les autres éléments du tableau ne sont pas à jour , donc j'attends que vous finalisée pour utiliser le nouveau fichier d'ici le dernier fichier qui fonction est la feuille que j'ai chargé et c'est celle là que j'ai adopté et n'exploite en attendant que vous finalisée.
Merci et bonne nuit!
Pour les autres éléments je vous revient mais tout de suite je suis sous pression au niveau de mon service pour implémenter ce fichier d'ici le Vendredi ... C'est le juste le cas de 6 qui bloque ... Je n'ai eu un cas de 5 équipe pour le moment.
Merci!!!
Relis ce que j'ai déjà écrit, je ne vais pas me répéter indéfiniment...
Je crois que tu fais des confusions, tout à l'heure tu présentais un classeur avec un roulement à 4 ! Si c'est 4 c'est pas 6 ! et avec l'ancienne version tu n'as aucune chance de passer de 4 à 6 ou vice-versa ! C'est pas prévu pour ça !
En outre, il me semble que tu voudrais faire et du 4 et du 6 dans le même classeur pour la même période ! Si c'est le cas il faut oublier, ancienne ou nouvelle, ça ne gère qu'un cycle unique...
Si tu as des unités de gestion qui doivent fonctionner différemment les unes des autres, chacune avec leurs équipes et leurs agents, chacune doit avoir son propre classeur...
Pour l'instant j'ai une impression de mélimélo qu'il faudrait lever...
Cordialement.