Erreur sur calcul de date (échéance)
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
Il faudrait, comme lors des demandes précédentes, fournir le classeur Excel concerné.
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

1 533 contributions
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.
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à
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
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.
Merci, Claude40 cela fonctionne
à+
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
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