Erreur d'exécution 13 de type incompatibilité

Bonsoir le forum,

Mon userform14 contient deux textbox pour saisie des dates. La saisie de la date fonctionne correctement dans la textbox1 mais lorsque je saisie une date dans le textbox2, il y a un message "Erreur d'exécution 2 de type incompatibilité" sur la ligne suivante :

Private Sub TextBox2_Change()
Sheets("journal achats").Range("J7").Value = CDate(TextBox2)
End Sub

J'ai utilisé le même code pour le textbox1. J'ai testé le code dans le userform15 (cession véhicule) qui comporte un textbox, même message.

J'ai regardé partout dans le code est dans les feuilles excel qui reprennent les dates, rien à première vue.

Je suis poursuivi par ce message car dans le userform1 même topo par contre, il ne pointe pas de ligne de code.

Je vous joint mon fichier, si quelqu'un pouvait m'aider.

Merci beaucoup.

PS : le mot de passe "TITI"

Titouan

20titouan-v010913.xlsm (256.92 Ko)

Bonsoir,

pourquoi mettre ça dans Change et non pas dans Exit ? Après avoir testé si c'est une date correcte.

D'ailleurs pour tester plus simplement tu pourrais faire un cdate() au début et gérer l'erreur. En plus ça autorisera plus de format de saisie.

Je ne peux pas tester, tu utilises Calendar 2007 qui bloque tout si on ne l'a pas...

eric

Bonsoir Eriiiiic,

J'ai testé dans exit même soucis. Par contre, je n'utilise pas de calendrier dans mon fichier car il sera mis sur des postes qui n'auront pas cette fonctionnalité comme cela j'évite les problèmes en théorie. Je l'utilisait au départ et après réflexion j'ai tout viré.

Merci de t'être penché sur mon problème.

Titouan

Bonjour,

Explication en prenant pour exemple la saisie de la date 311213.

Il y a problème avec la ligne suivante dans la procédure TextBox2.Exit :

TextBox2 = Left(TextBox2, 4) & 20 & Right(TextBox2, 2)

Cette instruction provoque le lancement de TextBox2.Change et l’exécution de

Sheets("journal achats").Range("J7").Value = CDate(TextBox2)

A cet instant, la valeur de TextBox2 est 31122013. Cette valeur est interprétée comme le numéro de série d’une date. Or, la date maximale pour Excel est fixée au 31/12/9999, soit au numéro de série 2958465, d’où l’apparition de l’erreur.

Bien sûr, si tu saisis une date inférieure au 3eme jour d’un mois, le numéro de série reste inférieur au maximum et ça passe. Ce qui explique sûrement que tu n’as pas constaté le problème avec TextBox1.

A+

Bonjour Frangy,

Merci d'avoir trouvé la cause du Bug. Peut-on modifier le code ou faut-il en refaire un ?

Titouan

Sans rentrer dans le détail de ton code, j'ai effectué un exemple de correction des 2 procedures TextBox.Exit pour que les textes soient interprétés correctement.

J'ai laissé l'ancien code pour que tu puisses comparer.

A+

Désolée, mais le problème persiste, de plus les / n'apparaissent plus après la saisie de la date ce qui génère le msgbox d'erreur de saisie. J'ai désactivé le msgbox pour voir si la modification fonctionne mais malheureusement pas.

Merci d'avoir regardé mon soucis.

Titouan

Je lance le module Journal des Achats,

Je saisis 010113 dans la TexBox1 correspondant à la date de début.

L’affichage à la sortie est bien 01/01/2013

Je saisis 311213 dans la TexBox2 correspondant à la date de fin.

L’affichage à la sortie est bien 31/12/2013

Dans la feuille Journal Achats je retrouve bien ces valeurs.

Il faut donc croire que nous ne faisons pas la même manip.

Je te répète que je ne suis pas rentré dans le détail de ton code. Tu as fait un choix de gestion de la saisie des dates qui me parait très discutable. Sans calendrier, la gestion des erreurs peut s’avérer très fastidieuse.

A+

Bonjour,

je n'utilise pas de calendrier dans mon fichier car il sera mis sur des postes qui n'auront pas cette fonctionnalité comme cela j'évite les problèmes en théorie. Je l'utilisait au départ et après réflexion j'ai tout viré.

Il faudrait que tu désactives la référence alors.

eric

Je tapait 31122013 . Du coup, j'ai limité à 6 caractères la saisie dans textbox pour éviter le bug si l'utilisateur tape 31122013.

J'ai fait le choix de ne pas mettre de calendrier car le fichier sera installé sur des pc qui n'auront certainement pas les modules complémentaires ou access.

Merci pour ton aide.

Pourrai tu également voir pour mon autre souci dans l'usf 1 ?

Titouan.


Bonjour Eriiic,

Je viens de désactiver les modules complémentaires.

Merci pour ton post.

Titouan.

En déroulant en pas à pas le programme correspondant à la cession d’un véhicule, tu t’apercevras que l’erreur se produit dans la procédure InitCBB4.

Cette procédure est censée remplir la ComboBox4 avec une liste de N° immatriculation de la feuille "Mouvements". Ces numéros sont reportés dans la Feuil1 avec une formule du type =SI(Mouvements!K5="";Mouvements!H5;0) qui indique que si la date de vente n’est pas renseignée alors on alimente la ComboBox avec le numéro d’immatriculation correspondant au véhicule qui n’est pas vendu.

Si tu regardes la Feuil1, tu constateras que certaines cellules contiennent #REF!

Ce sont ces valeurs qui provoquent l’erreur.

A+

Alors là autant le souci de date était au delà de mes compétences, la boulette sur la feuil1 était grosse comme un éléphant dans un magasin de porcelaine. Je n'avais absolument pas regardé cette feuille.

Merci pour ton gros coup de pouce.

Bon week end.

Titouan.

Rechercher des sujets similaires à "erreur execution type incompatibilite"