Erreur sur calcul de date (échéance)

pat40 pat40
86 contributions
Membre depuis le 04/03/2011
Envoyé le 24/01/2012 à 20:14


Bonjour,


lorsque j'ai rentré le code de Claude 40 pour le calcul de date cela fonctionnait (date départ, durée date d échéance)...
mais depuis j'ai du faire une erreur quelque part que je n'arrive pas à résoudre

en effet lorsque je valide la saisie sur la feuille une erreur apparaît soulignée dans le code ci dessous, (à noter que la saisie de toutes les données rentrées dans l'userform se fait sur la feuille)

Private Sub dicdurtx_Change()
Dim FirstDate As Date ' Déclare les variables.
Dim IntervalType As String
Dim Number As Integer
IntervalType = "d" ' "d" indique l'intervalle en jours ("m" pour intervalle en mois).
FirstDate = dicdatdebtx
Number = dicdurtx
dicdatfintx = DateAdd(IntervalType, Number, FirstDate)
End Sub

plusieurs occurences du mot selectionné (ici dicdatdetx) etc..j'ai beau actionné les préconisations de l'aide je ne comprend pas...

j'ai essayé de débaptiser le textbox incriminé mais meme erreur

alors merci pour votre aide

Claude40 Claude40
1 533 contributions
Membre depuis le 24/03/2010
Envoyé le 24/01/2012 à 20:29


Bonsoir,
Il faudrait, comme lors des demandes précédentes, fournir le classeur Excel concerné.
Un bon exposé du problème, c'est déjà un grand pas vers la solution. Dans la mesure du possible, mes solutions sont testées, sur mon système actuel (W10 Pro version 1909), mais peuvent ne pas fonctionner sur tous les Pc
pat40 pat40
86 contributions
Membre depuis le 04/03/2011
Envoyé le 25/01/2012 à 18:13


Bonjour,

Bonsoir,
Il faudrait, comme lors des demandes précédentes, fournir le classeur Excel concerné.



OK MERCI CI JOINT LE LIEN
Pour accéder au fichier cliquez sur le lien ci-dessous et entrez les identifiants...
Fichier : http://www.partage-fichiers.com/upload/37qv5w26
Taille du fichier : 1.88
Utilisateur : ety6n7e2
Mot de passe : si8iac75


Claude40 Claude40
1 533 contributions
Membre depuis le 24/03/2010
Envoyé le 25/01/2012 à 22:07 Modifié par Claude40


Bonsoir,
Cela n'a pas été facile, mais je crois que j'ai trouvé la cause du pb et je propose une solution.
CAUSE DU PROBLEME :
Au moment de la validation (clic sur le bouton dictajo), la procédure qui est exécutée remet à blanc les Textbox du formulaire et donc provoque à nouveau les calculs de date liés à dictdurtx_Change(). Comme la date de début et la durée ont été remis à blanc, la durée n'est plus numérique et provoque donc cette erreur "d'incompatibilité de type", qui se produirait aussi sur la date de fin des travaux si on mettait la durée à zéro au lieu de blanc (ce que j'ai essayé).

LA SOLUTION :
Il faut annuler toutes les remises à blanc des Textbox et remplacer par :

Unload Me
dict.Show

De cette manière le formulaire se ferme et s'ouvre à nouveau avec tous les texbox à blanc mais sans recalcul et cela permet de saisir une nouvelle DICT.

Je pense que cette méthode pourrait être généralisée sur l'application, car j'ai vu beaucoup de procédures qui procèdent de la sorte avec des risques équivalents de recalcul avec des champs vides.

Bon courage pour la suite.
Un bon exposé du problème, c'est déjà un grand pas vers la solution. Dans la mesure du possible, mes solutions sont testées, sur mon système actuel (W10 Pro version 1909), mais peuvent ne pas fonctionner sur tous les Pc
pat40 pat40
86 contributions
Membre depuis le 04/03/2011
Envoyé le 26/01/2012 à 07:18


Bonjour,

Bonsoir,
Cela n'a pas été facile, mais je crois que j'ai trouvé la cause du pb et je propose une solution.
CAUSE DU PROBLEME :
Au moment de la validation (clic sur le bouton dictajo), la procédure qui est exécutée remet à blanc les Textbox du formulaire et donc provoque à nouveau les calculs de date liés à dictdurtx_Change(). Comme la date de début et la durée ont été remis à blanc, la durée n'est plus numérique et provoque donc cette erreur "d'incompatibilité de type", qui se produirait aussi sur la date de fin des travaux si on mettait la durée à zéro au lieu de blanc (ce que j'ai essayé).

LA SOLUTION :
Il faut annuler toutes les remises à blanc des Textbox et remplacer par :

Unload Me
dict.Show

De cette manière le formulaire se ferme et s'ouvre à nouveau avec tous les texbox à blanc mais sans recalcul et cela permet de saisir une nouvelle DICT.

Je pense que cette méthode pourrait être généralisée sur l'application, car j'ai vu beaucoup de procédures qui procèdent de la sorte avec des risques équivalents de recalcul avec des champs vides.

Bon courage pour la suite.



OK merci cela fonctionne,
j'ai du courage .... enfin je pense ... mais heureusement que vous êtes là

pat40 pat40
86 contributions
Membre depuis le 04/03/2011
Envoyé le 26/01/2012 à 21:22 Modifié par pat40


Bonjour,

Bonjour,

[quote]Bonsoir,
Cela n'a pas été facile, mais je crois que j'ai trouvé la cause du pb et je propose une solution.
CAUSE DU PROBLEME :
Au moment de la validation (clic sur le bouton dictajo), la procédure qui est exécutée remet à blanc les Textbox du formulaire et donc provoque à nouveau les calculs de date liés à dictdurtx_Change(). Comme la date de début et la durée ont été remis à blanc, la durée n'est plus numérique et provoque donc cette erreur "d'incompatibilité de type", qui se produirait aussi sur la date de fin des travaux si on mettait la durée à zéro au lieu de blanc (ce que j'ai essayé).

LA SOLUTION :
Il faut annuler toutes les remises à blanc des Textbox et remplacer par :

Unload Me
dict.Show

De cette manière le formulaire se ferme et s'ouvre à nouveau avec tous les texbox à blanc mais sans recalcul et cela permet de saisir une nouvelle DICT.

Je pense que cette méthode pourrait être généralisée sur l'application, car j'ai vu beaucoup de procédures qui procèdent de la sorte avec des risques équivalents de recalcul avec des champs vides.

Bon courage pour la suite.



OK merci cela fonctionne,
j'ai du courage .... enfin je pense ... mais heureusement que vous êtes là[/quote]

après utilisation,une petite chose qui va pas bien..
En effet lorsque la durée du chantier est égale ou supérieure à 40 jours le transfert sur la feuille inverse le jour et le mois sur la date de fin ...
et ce malgré les codes format dans les textbox.

alors désolé de t'importuner merci

Re en fait je viens de faire d'autre essais j'ai le meme défaut quelque soit la durée que j'ajoute à la date de depart

merci


Claude40 Claude40
1 533 contributions
Membre depuis le 24/03/2010
Envoyé le 27/01/2012 à 14:12


Bonjour,

En fait j'avais constaté cela pendant mes essais et j'ai supprimé ".Value" dans les instructions de copie des deux dates sur la feuille Excel.
Mais j'avais oublié de le signaler sur ma réponse.

Cells(no_ligne, 36) = dicdurtx
Cells(no_ligne, 38) = dicdatfintx
Je pense que cela devrait résoudre le problème.
Un bon exposé du problème, c'est déjà un grand pas vers la solution. Dans la mesure du possible, mes solutions sont testées, sur mon système actuel (W10 Pro version 1909), mais peuvent ne pas fonctionner sur tous les Pc
pat40 pat40
86 contributions
Membre depuis le 04/03/2011
Envoyé le 30/01/2012 à 19:03


Bonjour,

Merci, Claude40 cela fonctionne
à+

Claude40 Claude40
1 533 contributions
Membre depuis le 24/03/2010
Envoyé le 31/01/2012 à 09:38


Bonjour,

Content que cela marche !
D'une manière générale les manipulations de dates sont délicates. Lorsque l'on calcule une date, il faut effectivement utiliser des fonctions propres aux dates, mais lorsque l'on récupère une date calculée, comme c'est le cas ici, il vaut mieux considérer le résultat comme du texte, de façon à éviter toute "adaptation" à un format non désiré.
Bonne continuation
Un bon exposé du problème, c'est déjà un grand pas vers la solution. Dans la mesure du possible, mes solutions sont testées, sur mon système actuel (W10 Pro version 1909), mais peuvent ne pas fonctionner sur tous les Pc

Discussion trop ancienne

Cette discussion a été automatiquement fermée car elle n'a plus reçue de nouveau message depuis trop longtemps.

Nous vous suggérons de créer un nouveau message

« Retour sur la liste des messages de ce forum