Manipulation de date

Manipulation de date.

Bonjour à tous,

J'importe avec excel des pdf. par code VBA je corrige les erreurs d'importation et je met en forme (grâce à votre aide). Mais pour les date je ne trouve pas la solution

Dans le PDF les dates sont sous la forme pare exemple : "02.12"

L'importation du PDF me renvoie pour ces dates:

soit : "02.12" considéré comme du texte par excel.

ou bien sans raison apparentes

soit : "02/12/2025" considéré comme une date par excel

J'aimerai, pour le cas "02.12", le transformer en une date sous la forme jj/mm/aaaa en choisissant l'année qui n'est pas toujours l'année en cours.

pour le cas "02/12/2025" je voudrai pouvoir changer l'année.

Merci de me lire

paterbleutch

Bonjour,

Il me semble que tu as ta réponse ici non https://forum.excel-pratique.com/excel/changer-l-annee-d-un-date-par-macro-198934 ?

C'est un autre de tes sujets où tu poses cette même question (ou a peu de chose près) et tu disais que nos réponses te convenaient .....

Alex020181, merci pour ta réponse

Effectivement c'était pour une date reconnue par excel

Par exemple : si la date affichée est 02/04/2025 en A1 . je peux en B1 écrire =date( y ;mois(A1);jour(A1) où y = 2024 : Ce qui me permet de changer l'année comme cela m'était indiqué dans ma précédente demande.

Mais pour : "02.12", qui n'est pas reconnu comme une date par excel il faudrait que je puisse extraire le "02" de "02.12" pour utiliser la formule ci-dessus en utilisant une autre variable pour le mois et je ne sais pas faire cette extraction.

Voici une méthode pour extraire une sous chaine d'une chaine complète. Ici c'est simple car ce sont tes x derniers caractères de gauche et droite.

Ensuite tu concatènes. Tu as les formules en ligne 1 (j'ai bien sûr enlevé le "=") et les résultats en ligne 2.

image

Les fonctions Gauche() et Droite() te permettent d'isoler un certain nombre de caractères à partir de l'extrémité gauche ou droite d'une valeur initiale.

Si la partie que tu veux isoler n'est pas une des extrémités tu as la fonction Stxt() qui te permet d'isoler une partie d'un texte initiale en lui indiquant le numéro de caractère dans le texte initial où se trouve ta chaine à isoler.

Ce qui te donne.

image

Tu peux aussi mélanger et prendre Gauche() pour le jour et Stxt() pour le mois (ou inversement) dans ta formule globale pour info.

Bon après il y a d'autres solutions si la chaine que tu veux extraire est au milieu mais que tu ne connais pas forcément le nombre de caractères avant ou après. Il y a plusieurs façons mais ça c'est autre chose et te mettre ici serait trop long et je crois, vu ta demande, que tes chaines à extraire sont toujours en début et en fin donc on est bon.

Alex020181, merci pour ta réponse, c'est si simple.

Avec cette solution je devrai tout simplement résoudre mon problème avec ces indications et du code.

Sauf que mon code ne fonctionne pas

Voila ce que j'ai écrit :

Dim datdat as date

dim x as integer, y as integer

datdat = Date( x ; y ; left(ActiveCell.Value;2)) la formule ne plait pas à excel VBA

Normal.

Date() est une fonction réservée VBA pour retourner la date du jour. Tu ne peux pas lui inclure de paramètres.

image

Pour ton second point tu veux enregistrer dans ta variable datdat une de ces fameuses date reconstituée si je comprends bien. Dans ce cas tu peux utiliser la fonction CDate() ou DateValue() ou DateSerial().

Je te conseille d'utiliser DateSerial(). Tu verras avec le code ci-dessous que c'est la plus simple d'utilisation.

Attention. Dans tous les cas Excel te plantera si tu essaies de créer une date farfelues (50/12/2024 par exemple).

Voici un exemple d'utilisation pour les 3 cas. D'abord la version simple standard pour te montrer puis appliquées à ta demande. Choisis l'une ou l'autre de ces 3 et supprime les autres (tu peux aussi supprimer les exemples standards de chaque fonction).

Nota : tu remarqueras que les séparateurs des arguments en VBA sont les "," et pas les ";" qui sont les séparateurs des arguments pour les formules.

image

Plus d'infos

Si par contre ton but est d'insérer une formule dans une cellule alors c'est une autre syntaxe.

Alex020181, Merci beaucoup pour ta réponse elle est complète et elle répond parfaitement à ma demande. je ne l'ai pas encore essayé mais je suis sur que cela va fonctionner parfaitement

Rechercher des sujets similaires à "manipulation date"