Calculs de dates en VBA | ||
---|---|---|
Inscription: 12/07/2008
De RENNES
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 FR |
Posté le : 23-05-2012 21h12
Bonsoir,
Suite à mon précédent post sur les dates en VBA et grâce à Didier, je suis reparti de son fichier d'origine en divisant l'USF en trois parties : la première permet de calculer une durée=> là pas de problème grâce à notre serviteur. Mais pour la deuxième et troisième partie, je cherche à calculer une date de fin ou de début en additionnant ou soustrayant une durée en années, mois et jours. J'ai trouvé avec la fonction DateAdd mais je n'arrive qu'à écrire le code pour les années (cf. CalculValid2) et je n'arrive pas à y imbriquer les mois et les jours. Est ce la bonne procédure ? PS : de même dès que j'ai fini de saisir la date, le calcul se déclenche alors que les 3 textbox sont forcément vides. Merci d'avance pour vos réponses et bonne soirée. |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 23-05-2012 22h55
Bonsoir criscris11,
Ton classeur est un très bon support d'exercices Je vais te donner une solution possible pour la 2ème partie de ton Userform, à toi ensuite d'adapter la démarche pour réaliser par toi-même la 3ème partie... Tout d'abord, si tu veux utiliser DateAdd() pour ajouter un nombre d'Années, de Mois et de Jours, il te faut donc utiliser 3 fois la fonction comme suit : If D1 <> 0 Then Une autre solution consiste par exemple dans l'utilisation de la fonction DateSerial (au lieu de DateAdd), comme suit en une ligne de code au lieu de 3 : If D1 <> 0 Then Par ailleurs, tu as du remarquer que j'ai utilisé la fonction Val() aussi, comme dans l'expression : Val(Années_Plus.Value) Au final, il te faut aussi t'assurer que la Date sera bien recalculée si l'utilisateur modifie la date de départ, le nombre d'années, le nombre de mois ou le nombre de jours : pour ce faire, il faut donc ajouter la gestion d'évènement à la sortie (exit) des Textbox Année, Mois et Jours. Voici donc l'ensemble du code modifié correspondant au traitement de cette 2ème partie : ' --------------------------------------------------------------------- J'ai testé, ça fonctionne , mais je te laisse reproduire tout ça dans ton classeur à titre d'exercice... Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 12/07/2008
De RENNES
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 FR |
Posté le : 23-05-2012 23h27
Merci Didier pour ta réponse. Je vais tester tout cela demain et je n'hésiterai pas à te tenir informé : tout cela à titre d'exercice bien sûr ...
Bonne soirée. |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 12/07/2008
De RENNES
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 FR |
Posté le : 24-05-2012 14h45
Bonjour Didier, le forum,
Didier, comme promis je viens te donner des nouvelles. J'ai bien réussi à reproduire le code dans mon fichier et qui plus est j'ai même réussi à programmer moi-même la troisième partie (pas trop dur tu me diras car tu as bien mâché le travail mais quand même...) : en tout cas merci pour le partage de tes connaissances. Il me reste toutefois 2 petits détails à régler mais qui ne devrait pas trop te poser de problèmes : dans la 2ème et 3ème partie, j'ai rajouté un bouton "Validez" qui insère la date obtenue dans la cellule active et je voudrais que ce bouton soit actif seulement si la date est saisie (cà c'est bon : btnCalculValid2.Enabled = D1 <> 0) et si au moins l'une des 3 Textbox (années, mois, jours) a été renseignée (et là c'est pas bon) ou peut-être plus simple ne faire apparaître la date cherchée que si les deux conditions ci-dessus soient remplies auquel je rendrais le bouton actif si une date apparaît dans le label résultat. Deuxième chose, plus optionnelle celle-ci, comment rendre cet USF plus esthétique d'un point de vue visuel ? Sache d'ores et déjà que je serais honorer de poster mon fichier une fois finalisé, avec ton accord il en va de soi, sur ton site afin qu'il puisse servir d'exemple aux membres du forum. Encore merci pour tout et à bientôt. Cordialement. |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 24-05-2012 20h51
Bonsoir criscris11, le Forum,
Citation : criscris11 a écrit : Tu trouveras en pièce jointe une solution ne reprenant que la partie 2 de ton Userform, tu adapteras pour les autres parties. J'ai utilisé le code suivant : Option Explicit Private Sub Annees_Plus_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Pour rendre actif (ou non) le bouton "Valider", j'ai ajouté la ligne de code suivante dans la procédure CalculValid2() : 'Bouton VALIDER activable ? Attention : j'ai supprimé aussi les lettres accentuées dans le nom de tes contrôles, Années_Plus devient Annees_Plus par exemple (ce n'est pas obligatoire, mais je te déconseille les lettres accentuées dans les noms de controle ou les nom de variables). Citation : criscris11 a écrit : Pour cela, tu peux jouer sur les propriétés des controles et du Userform (et particulièrement sur les propriétés Backcolor, Bordercolor, Forecolor, Picture et SpecialEffect). Il y a plein de choses à tester déjà là. Dans la pièce jointe, tu verras que j'ai un peu modifié l'apparence du formulaire par ce biais, pour tenter de le rendre un peu moins austère. Attention toutefois à ne pas trop abuser des Pictures car c'est autant de poids en plus pour ton projet. Ton fichier finalisé sera bienvenu pour clore ce fil de discussions et je te remercie de cette intention. N'y vois pas ombrage, mais je réserve autant que possible la section de téléchargement du site aux fichiers complémentaires des tutoriels ou aux applications complètes. J'espère que tu comprends. En espérant t'avoir aidé... Cordialement, EDITION : correction d'un bug mineur (voir plus loin dans ce fil)
Edité par myDearFriend! le 24/05/2012 22:25:17
Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 12/07/2008
De RENNES
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 FR |
Posté le : 24-05-2012 21h39
Merci Didier pour ton aide : cela me donne déjà plein d'idées pour améliorer mon idée de départ grâce à tes compétences tant techniques que pédagogiques.
D'ici la fin de ce long week-end, je pense que j'aurai finalisé mon projet (voir peut-être même 2 modèles différents si j'ai le temps) et c'est avec plaisir que je viendrai clôturer ce fil avec le ou les fichiers concernés. Je comprends tout à fait ton point de vue concernant la section Téléchargement et j'adhère entièrement à ton principe donc je ne me sentirai en cas offusqué (et qui plus est on ne vas pas se fâché entre Bourguignons car si je suis à Rennes depuis 1991 je ne vais pas renier mes origines Côte d'Oriennes car né à Dijon. Je ne sais pas si tu es Bourguignon d'origine mais pour moi cela ne change rien bien au contraire). Merci encore pour ton aide très précieuse et te souhaite une très bonne soirée. A bientôt sur le forum. Amitiés Xldiennes. |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 24-05-2012 22h02
Re criscris11,
Citation : criscris11 a écrit : Merci Didier pour ton aide : cela me donne déjà plein d'idées pour améliorer mon idée de départ grâce à tes compétences tant techniques que pédagogiques. Content que ça te convienne. heu... « Amitiés XLpagiennes», hein ?! Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 12/07/2008
De RENNES
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 FR |
Posté le : 24-05-2012 22h03
Didier,
En testant un peu plus en profondeur (je me met à la place du novice qui va utiliser l'USF), j'ai découvert un léger bug : quand la date est saisie et que l'on rentre un nombre d'années dans le contrôle correspondant, le bouton Validez ne s'active pas alors qu'il y aura certains cas où on n'aura à ajouter qu'un certain nombre d'années uniquement. Merci de ta compréhension. Oui désolé, l'habitude sans doute : cela ne se reproduira plus |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 24-05-2012 22h20
Arf, je n'avais pas vu, tu as raison il y a une erreur dans le code :
Private Sub Années_Plus_Exit(ByVal Cancel As MSForms.ReturnBoolean) Je rectifie plus haut et remets la pièce jointe conforme. Note cependant, que le test d'activation du bouton (et recalcul de la date) n'intervient que lorsque les TextBox perdent le focus (évènement Exit). Il faut donc sortir du TextBox (par la touche TAB ou un clic souris) pour que le traitement se déclenche... Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Calculs de dates en VBA | ||
---|---|---|
Inscription: 12/07/2008
De RENNES
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 FR |
Posté le : 24-05-2012 22h29
Il n'y a pas de mal : l'erreur est humaine .
Et puis de toute façon, c'est la faute des accents lol. Bonne soirée à toi et merci pour la correction. |
|
|
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
Qui consulte actuellement ce sujet ?
1 Utilisateur(s) anonymes