Macro qui s'éxécute sans renvoyer de résultat...
Résolu
Tarpin-perlinpinpin
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
Tarpin-perlinpinpin Messages postés 22 Date d'inscription Statut Membre Dernière intervention -
Tarpin-perlinpinpin Messages postés 22 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Macro qui s'éxécute sans renvoyer de résultat...
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Resultat foot - Télécharger - Vie quotidienne
- Lexer resultat - Télécharger - Sport
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 583
Suggestion : toujours ajouter "option explicit" avant le code de la macro, pour faciliter la détection d'erreurs.
Quand VBA voit :
Cela est donc évalué comme FAUX.
Si tu veux utiliser une formule, je pense qu'il faut l’enregistrer dans une ou plusieurs cellules. Et la macro utilise la valeur de la cellule où se trouve la formule.
Donc soit tu enregistres la formule (la macro peut faire cela), soit tu crées du code pour faire, dans la macro, en VBA, ce que fait la formule.
Quand VBA voit :
FormulaR1C1 = "=index(Code_horaires!R1C1:R4C6,match(mabase.Cells(ligne,7).value,Code_horaires!R1C1:R1C6,0),match(mabase.Cells(3,colonne).value,Code_horaires!R1C1:R4C1,0))", il compare la variable FormulaR1C1 (non initialisée) à la chaine de caractères qui suit.
Cela est donc évalué comme FAUX.
Si tu veux utiliser une formule, je pense qu'il faut l’enregistrer dans une ou plusieurs cellules. Et la macro utilise la valeur de la cellule où se trouve la formule.
Donc soit tu enregistres la formule (la macro peut faire cela), soit tu crées du code pour faire, dans la macro, en VBA, ce que fait la formule.
Bonjour,
Je rejoins yg_be que je salue sur option explicit auquel je rajoute l'écriture eb début de macro le thread suivant
qui évite les défilements d'écran et diminue la durée de traitement.
En regardant ton classeur, il me semble que l'analyse du pb n'a pas été poussée:
déjà, tu ne vas pas recommencer ton classeur chaque année et donc , il serait peut-être intéressant d'écrire l'année dans une cellule qq part (code horaire?)
et d'établir des formules dans le tableau d'une semaine.
Le calcul des heures supp est bon mais le seuil des 35h est de + en + remis en cause et donc ton calcul risque d'^tre faux (je te souhaites de rester aux 35h!)...
Actuellement, tu exécutes ta macro Sur 3 semaines: est ce exact ou travailles tu par mois (ta formule colonne I est fausse) : 4 semaines et des poussières).
Le relevé des heures se fait il hebdomadairement ou mensuellement ?
détail: Vois avec ta direction si elle trouverait intéressant de mettre en évidence les jours fériés et ponts.
Michel
Je rejoins yg_be que je salue sur option explicit auquel je rajoute l'écriture eb début de macro le thread suivant
application.screenupdating=False
qui évite les défilements d'écran et diminue la durée de traitement.
En regardant ton classeur, il me semble que l'analyse du pb n'a pas été poussée:
déjà, tu ne vas pas recommencer ton classeur chaque année et donc , il serait peut-être intéressant d'écrire l'année dans une cellule qq part (code horaire?)
et d'établir des formules dans le tableau d'une semaine.
Le calcul des heures supp est bon mais le seuil des 35h est de + en + remis en cause et donc ton calcul risque d'^tre faux (je te souhaites de rester aux 35h!)...
Actuellement, tu exécutes ta macro Sur 3 semaines: est ce exact ou travailles tu par mois (ta formule colonne I est fausse) : 4 semaines et des poussières).
Le relevé des heures se fait il hebdomadairement ou mensuellement ?
détail: Vois avec ta direction si elle trouverait intéressant de mettre en évidence les jours fériés et ponts.
Michel
Bonjour Michel,
Merci pour votre réponse. J'ai oublié d'intégrer le screenupdating, mais ce sera chose faite sur la version finale.
Effectivement, pour les problème des années, on a prévu de fonctionner comme cela mais je ne me suis pas encore penché sur cet aspect...
Concernant le calcul des heures supp, mon responsable a relevé ce soucis, et je vais donc faire en sorte que la valeur numérique des formules soit remplacée par une cellule de référence dans lequel nous renseignerons le nombre d'heures légal hebdomadaire. Nous modifierons la valeur de la dite cellule en cas de besoin.
Nous travaillons effectivement 4 semaines et des poussières (dans le fichier transmis, j'ai simplement 3 semaines (juste pour tester le code) et la formule en I est donc fausse).
Le relevé des heures est effectué quotidiennement par les chefs d'équipe, et mensuellement par le service RH. Notre planning actuel fonctionne de manière hebdomadaire (1 fichier de 52 onglets, 1 par semaine) et nous souhaitons que le nouveau fonctionne de manière mensuelle et donc avec 1 onglet par mois, ce qui pose effectivement le problème des heures supp (calculées à la semaine) et des semaines partielles en fin de mois.
Après discussion avec la gestionnaire de paie, d'un point de vue légal, si il y a des heures supp les derniers jours de Janvier 2017 (par exemple), le 30 et le 31, celles-ci sont calculées sur la semaine courant du 30/01 au 03/02 et payées avec un mois de décalage. La semaine en question sera considérée comme la 5ième semaine de Janvier.
Concernant le reste de l'année, le découpage exhaustif de chaque mois si nous rencontrons ce problème sera fait ultérieurement.
Merci pour votre réponse. J'ai oublié d'intégrer le screenupdating, mais ce sera chose faite sur la version finale.
Effectivement, pour les problème des années, on a prévu de fonctionner comme cela mais je ne me suis pas encore penché sur cet aspect...
Concernant le calcul des heures supp, mon responsable a relevé ce soucis, et je vais donc faire en sorte que la valeur numérique des formules soit remplacée par une cellule de référence dans lequel nous renseignerons le nombre d'heures légal hebdomadaire. Nous modifierons la valeur de la dite cellule en cas de besoin.
Nous travaillons effectivement 4 semaines et des poussières (dans le fichier transmis, j'ai simplement 3 semaines (juste pour tester le code) et la formule en I est donc fausse).
Le relevé des heures est effectué quotidiennement par les chefs d'équipe, et mensuellement par le service RH. Notre planning actuel fonctionne de manière hebdomadaire (1 fichier de 52 onglets, 1 par semaine) et nous souhaitons que le nouveau fonctionne de manière mensuelle et donc avec 1 onglet par mois, ce qui pose effectivement le problème des heures supp (calculées à la semaine) et des semaines partielles en fin de mois.
Après discussion avec la gestionnaire de paie, d'un point de vue légal, si il y a des heures supp les derniers jours de Janvier 2017 (par exemple), le 30 et le 31, celles-ci sont calculées sur la semaine courant du 30/01 au 03/02 et payées avec un mois de décalage. La semaine en question sera considérée comme la 5ième semaine de Janvier.
Concernant le reste de l'année, le découpage exhaustif de chaque mois si nous rencontrons ce problème sera fait ultérieurement.
Merci d'avoir pris le temps de répondre. Je prends bonne note du conseil concernant l'option explicit.
Donc si je comprend bien, impossible de procéder de la sorte dans avoir de plus solides connaissance en programmation ?
Enregistrer une formule, j'y ai pensé. Cependant, il me faudrait une formule différente pour chaque jour de la semaine et chaque code horaire (5 jours * 3 possibilités = 15 formules différentes !! ) selon moi: là où la macro me permet d'exprimer "match(mabase.cells(ligne,7)...", la formule m'obligera à spécifier une seul et unique cellule (à moins de passer par une fonction Si imbriquée).
Cependant, si je ne trouve pas d'autres solutions, je me résignerai à celle-ci, même si je trouve qu'elle relève plus du bricolage...