[Excel VBA] Userform et calcul
Résolu
Jgotheboss
Messages postés
24
Statut
Membre
-
Jgotheboss Messages postés 24 Statut Membre -
Jgotheboss Messages postés 24 Statut Membre -
Bonjour à tous,
Je suis débutant en VBA et réalise une userform ou je récupère deux dates.
L'une de ces dates vient s'afficher dans ma colonne B et l'autre dans ma colonne D. Jusqu'ici pas de problème.
Dans ma colonne E j'ai mis une formule qui me calcule le nombre de jours ouvrés entre les deux dates:
=SOMMEPROD((JOURSEM(LIGNE(INDIRECT(B12&":"&D12)))<>1)*(JOURSEM(LIGNE(INDIRECT(B12&":"&D12)))<>7)*(ESTNA(EQUIV(LIGNE(INDIRECT(B12&":"&D12));'Jours ouvrés'!B4:B27;0)))*1)
C'est l'exemple où mes dates sont mises en B12 et D12 et de B4 à B27 de l'onglet 'Jours ouvrés' j'ai inscrit les jours fériés.
La formule fonctionne très bien (je l'ai utilisé pour ne pas avoir à activer les macros complémentaires car mon fichier sera utilisé par plusieurs utilisateurs).
Mon problème c'est que lorsque j'utilise la userform pour insérer mes deux dates, ma formule ne se calcule pas une fois la userform fermée alors que mes deux dates sont bien inscrites!
La technique que j'ai trouvé pour réaliser le calcul est de cliquer sur chacune dees deux dates et de taper entrée pour que le calcule s'effectue.
Je ne sais pas du tout à quoi celà peut être du... J'ai essayé plusieurs bidouillage sans succès.
Je vous remercie de m'aider, je commence à perdre mes cheveux. :D
Je suis débutant en VBA et réalise une userform ou je récupère deux dates.
L'une de ces dates vient s'afficher dans ma colonne B et l'autre dans ma colonne D. Jusqu'ici pas de problème.
Dans ma colonne E j'ai mis une formule qui me calcule le nombre de jours ouvrés entre les deux dates:
=SOMMEPROD((JOURSEM(LIGNE(INDIRECT(B12&":"&D12)))<>1)*(JOURSEM(LIGNE(INDIRECT(B12&":"&D12)))<>7)*(ESTNA(EQUIV(LIGNE(INDIRECT(B12&":"&D12));'Jours ouvrés'!B4:B27;0)))*1)
C'est l'exemple où mes dates sont mises en B12 et D12 et de B4 à B27 de l'onglet 'Jours ouvrés' j'ai inscrit les jours fériés.
La formule fonctionne très bien (je l'ai utilisé pour ne pas avoir à activer les macros complémentaires car mon fichier sera utilisé par plusieurs utilisateurs).
Mon problème c'est que lorsque j'utilise la userform pour insérer mes deux dates, ma formule ne se calcule pas une fois la userform fermée alors que mes deux dates sont bien inscrites!
La technique que j'ai trouvé pour réaliser le calcul est de cliquer sur chacune dees deux dates et de taper entrée pour que le calcule s'effectue.
Je ne sais pas du tout à quoi celà peut être du... J'ai essayé plusieurs bidouillage sans succès.
Je vous remercie de m'aider, je commence à perdre mes cheveux. :D
A voir également:
- [Excel VBA] Userform et calcul
- Word et excel gratuit - Guide
- Calcul moyenne excel - Guide
- Liste déroulante excel - Guide
- Si et ou excel - Guide
- Déplacer colonne excel - Guide
6 réponses
Bonjour,
Colles-tu bien une date dans tes cellules ou du texte ?
Utilise [A1].value = datevalue(taDate) pour voir (suivi d'un calculate si besoin)
eric
Colles-tu bien une date dans tes cellules ou du texte ?
Utilise [A1].value = datevalue(taDate) pour voir (suivi d'un calculate si besoin)
eric
Une idée en passant,
quand tu colles les données, sont-elles en date ou en texte ?
Il se pourrait que la date soit en texte et donc non reconnue dans pour la formule. Quand tu entre dans la cellule et que tu valide, il reconnaitrait alors la date.
Dans ton code il faut quelque chose du style : range("B12")= cdate(dateàColler)
quand tu colles les données, sont-elles en date ou en texte ?
Il se pourrait que la date soit en texte et donc non reconnue dans pour la formule. Quand tu entre dans la cellule et que tu valide, il reconnaitrait alors la date.
Dans ton code il faut quelque chose du style : range("B12")= cdate(dateàColler)
Bonjour,
il semblerait que le calcul soit sur ordre au lieu d'automatique.
Vérifie dans Outils, Options, calcul (Excel 2003, en 2007 je ne sais pas). Ton fichier était peut-être sur ordre au départ.
Je te mets un bout de code qui permet de changer le mode en VBA, tu peux t'en inspirer si tu dois l'insérer dans ton code
pour lancer le calcul : Application.Calculate (voir l'aide pour plus de détails).
Si ce n'est pas un problème de calcul sur ordre, je ne sais pas ce qui se passe ...
il semblerait que le calcul soit sur ordre au lieu d'automatique.
Vérifie dans Outils, Options, calcul (Excel 2003, en 2007 je ne sais pas). Ton fichier était peut-être sur ordre au départ.
Je te mets un bout de code qui permet de changer le mode en VBA, tu peux t'en inspirer si tu dois l'insérer dans ton code
If Application.Calculation = xlCalculationManual Then Application.Calculation = xlAutomatic Else Application.Calculation = xlCalculationManual End If
pour lancer le calcul : Application.Calculate (voir l'aide pour plus de détails).
Si ce n'est pas un problème de calcul sur ordre, je ne sais pas ce qui se passe ...
Bonjour leplot,
Merci de m'aider dans ma recherche.
Dans mes multiples tentatives j'avais déjà essayé d'ajouter la ligne Application.Calculate, sans succès.
Je viens de rajouter en plus ton bout de code et ça ne change malheureusement rien.
Je précise bien que je ne doit pas aller sur ma formule placée dans ma colonne E et faire entrée pour que le calcule s'active mais bien aller dans mes deux dates et faire entrée.
Je crois qu'un soucis de calcul aurait été possible si je devais activer ma formule, mais là non... :S
Merci de m'aider dans ma recherche.
Dans mes multiples tentatives j'avais déjà essayé d'ajouter la ligne Application.Calculate, sans succès.
Je viens de rajouter en plus ton bout de code et ça ne change malheureusement rien.
Je précise bien que je ne doit pas aller sur ma formule placée dans ma colonne E et faire entrée pour que le calcule s'active mais bien aller dans mes deux dates et faire entrée.
Je crois qu'un soucis de calcul aurait été possible si je devais activer ma formule, mais là non... :S
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question