Récupérer des valeurs d'une textbox pas au format texte

verbavolant

XLDnaute Nouveau
Bonjour à tous,

Après avoir écumé le web en quête d'une solution, je viens vous demander de l'aide !
La situation est la suivante : j'ai un userform équipé de plusieurs textbox, ces textbox contiennent du texte pour certaines et des dates pour d'autres. Grâce à une fonction et une boucle je me retrouve vite avec le code suivant :

Code:
For i To fin
     Cells(i, j) = zoneDeTexte1.Value
Next

Cela me sert vous l'avez compris à recopier le contenu de ma textbox dans ma cellule. Le problème est que ces cellules contiennent des dates. Elles sont formatées en dd/mm/yyyy. Mais quand je copie le contenu de la textbox, la donnée récupérée est en String et pas en Date, et elle écrase le formatage de ma cellule !
Or j'ai besoin de pouvoir ensuite trier ma colonne, ce qui est impossible quand les dates sont enregistrées en String car Excel les trie alors par ordre alphabétique, ce qui me fout le dawa dans le fichier.

Du coup je cherche comment convertir les dates en format String en vraie date dans mon fichier au sein de la boucle. J'ai bien sûr essayé CDate(), mais quand on lui donne une chaîne vide, bam, erreur ! Et moi j'ai de temps en temps une textbox vide donc je peux pas esquiver ce cas de figure.

J'ai essayé en mettant zoneDeTexte1.Value, ou .Text même résultat, ma seule autre solution serait de faire des cas particuliers avec des If à chaque fois et c'est vraiment lourd !

Sinon j'ai pensé à un Copy/pasteSpecial, mais je n'ai pas réussi à bien faire tourner la fonction...
Sinon peut-être ajouter un élément de userform différent, pas un textbox mais un champ avec plus de possibilités ? Je ne sais pas bien où trouver ça...

En résumé, j'ai des String et je veux en faire des Date même quand la chaîne est vide, peu importe si la date retournée est alors vide !

Alors quelqu'un se sent le courage de m'aider ??? Merci d'avance :)
 

Dranreb

XLDnaute Barbatruc
Re : Récupérer des valeurs d'une textbox pas au format texte

Bonsoir.
En tout cas utilisez bien CDate, c'est incontournable.
Mais ne le faites que si votre zoneDeTexte1 n'est pas vide. Si elle est vide faites plutôt un ClearContents de votre cellule.
P.S. et de toutes façon faites On Error Resume Next devant et après If Err Then quelque chose puis On Error Goto 0 après. Parce que l'opérateur peut toujours entrer une date invalide.
À +
 
Dernière édition:

Discussions similaires

Réponses
17
Affichages
617

Statistiques des forums

Discussions
312 147
Messages
2 085 765
Membres
102 968
dernier inscrit
Tmarti