[Excel VBA] Userform et calcul

[Résolu/Fermé]
Signaler
Messages postés
22
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
2 septembre 2009
-
Messages postés
22
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
2 septembre 2009
-
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

6 réponses

Messages postés
24183
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 septembre 2021
6 888
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
191
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
13 août 2015
117
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
191
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
13 août 2015
117
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 ...
Messages postés
22
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
2 septembre 2009
8
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
Messages postés
22
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
2 septembre 2009
8
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!
Messages postés
22
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
2 septembre 2009
8
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! :)