Macro qui s'éxécute sans renvoyer de résultat...
Résolu/Fermé
Tarpin-perlinpinpin
Messages postés
22
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
2 décembre 2016
-
10 nov. 2016 à 16:56
Tarpin-perlinpinpin Messages postés 22 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 2 décembre 2016 - 17 nov. 2016 à 14:34
Tarpin-perlinpinpin Messages postés 22 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 2 décembre 2016 - 17 nov. 2016 à 14:34
A voir également:
- Macro qui s'éxécute sans renvoyer de résultat...
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Lexer resultat - Télécharger - Sport
- Macro word - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Jitbit macro recorder - Télécharger - Confidentialité
2 réponses
yg_be
Messages postés
23473
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
Ambassadeur
1 568
10 nov. 2016 à 19:30
10 nov. 2016 à 19:30
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
Modifié par michel_m le 12/11/2016 à 09:20
Modifié par michel_m le 12/11/2016 à 09:20
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
Modifié par michel_m le 12/11/2016 à 10:40
Modifié par michel_m le 12/11/2016 à 10:40
lire 39h au lieu de 35h !!!
j'ai automatisé par formules les dates et semaines en fonction du mois et de l'année mais voir RH:Comment est gérée la dernière semaine du mois ( les 4 semaines et des poussières)? important pour l'automatisation du tableau
j'ai automatisé par formules les dates et semaines en fonction du mois et de l'année mais voir RH:Comment est gérée la dernière semaine du mois ( les 4 semaines et des poussières)? important pour l'automatisation du tableau
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
14 nov. 2016 à 11:35
14 nov. 2016 à 11:35
Bonjour Tarpin
excuses moi d'avoir passé du temps à essayer de t'aider
bonne continuation
excuses moi d'avoir passé du temps à essayer de t'aider
bonne continuation
Tarpin-perlinpinpin
Messages postés
22
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
2 décembre 2016
14 nov. 2016 à 12:06
14 nov. 2016 à 12:06
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.
Tarpin-perlinpinpin
Messages postés
22
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
2 décembre 2016
>
Tarpin-perlinpinpin
Messages postés
22
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
2 décembre 2016
14 nov. 2016 à 12:07
14 nov. 2016 à 12:07
Bonjour Michel, veuillez m'excusez par ma réponse tardive, je me suis connecté ce matin....
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
>
Tarpin-perlinpinpin
Messages postés
22
Date d'inscription
jeudi 10 novembre 2016
Statut
Membre
Dernière intervention
2 décembre 2016
15 nov. 2016 à 09:48
15 nov. 2016 à 09:48
Bonjour,
avant de passe au VBA, il y a un travail Important sur des formules. et c'est assez compliqué de travailler avec des dates, des semaines et des mois...
Dans ta feuille "test", la présentation change entre la semaine 1 et la semaine 2
Merci de m'envoyer un classeur cohérent.
avant de passe au VBA, il y a un travail Important sur des formules. et c'est assez compliqué de travailler avec des dates, des semaines et des mois...
Dans ta feuille "test", la présentation change entre la semaine 1 et la semaine 2
Merci de m'envoyer un classeur cohérent.
14 nov. 2016 à 11:29
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...