Posez votre question Signaler

[Excel VBA] Userform et calcul [Résolu]

Jgotheboss 22Messages postés 18 février 2008Date d'inscription - Dernière réponse le 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
Lire la suite 

[Excel VBA] Userform et calcul »

6 réponses
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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 ...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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!
Ajouter un commentaire
Réponse
+0
moins plus
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! :)
Ajouter un commentaire
Ce document intitulé « [Excel VBA] Userform et calcul » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?