[Excel VBA] Userform et calcul

Résolu/Fermé
Jgotheboss Messages postés 24 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 2 septembre 2009 - 29 avril 2009 à 10:36
Jgotheboss Messages postés 24 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 2 septembre 2009 - 29 avril 2009 à 11:14
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
A voir également:

6 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 256
29 avril 2009 à 11:03
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
1
leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 131
29 avril 2009 à 11:05
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)
1
leplot Messages postés 191 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 13 août 2015 131
29 avril 2009 à 10:45
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
    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 ...
0
Jgotheboss Messages postés 24 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 2 septembre 2009 8
29 avril 2009 à 10:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jgotheboss Messages postés 24 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 2 septembre 2009 8
29 avril 2009 à 11:10
Bonjour Eriic,

Entre deux j'ai essayé un truc tout bête:
- mettre en B12 et D12 des chiffres
- mettre en E12=B12+D12

Là en effet le calcul fonctionne.

Donc vos idées sont surement les bonnes sur le soucis date/texte, je vais essayer de les mettre en place et reviens vers vous!
0
Jgotheboss Messages postés 24 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 2 septembre 2009 8
29 avril 2009 à 11:14
Merci beaucoup à vous deux ça marche!!!!

J'ai juste ajouté Datevalue devant mes variables dates qui en effet étaient du texte d'où le soucis.

Bonne journée! :)
0