Formatage des dates en VBA

Bonjour,

Pour mon plaisir et me faciliter le travail (au boulot) je "développe" des macros afin d'automatiser au maximum les tâches récurrentes.

Je rencontre une difficulté concernant le formatage des dates sous VBA.

Je pense qu'il y a un problème entre le format de dates anglo-saxon et français, mais je ne parviens pas efficacement à le comprendre et le résoudre.

A partir d'une date saisie sous la forme : jj/mm/aaa (par exemple : 01/12/2013), je souhaite que mon script VBA affiche dans une case donnée la date sous la forme : mmm-aa (soit : déc-13).

En l’occurrence, cela fonctionne pour la date donnée en exemple, mais si je lui fixe la date du 01/11/2013, il m'affichera : 13-nov !

Je joint un fichier avec une macro "explicative" pour plus de compréhension.

Voyez dans la case C6, le format est "inversé" par rapport aux autres affichages de la ligne.

En outre, lors de l'affichage des dates, le format des cellules n'est pas le même, certaines sont automatiquement formatées comme des dates (cellules B2 et E2) alors que les deux autres apparaissent sous le format standard.

Le format est également différent entre les lignes 6 et 7, sans aucune intervention de ma part.

Quelqu'un peut-il m'aider à résoudre ce problème ?

Merci, cordialement

crissc

15macro-dates.xlsm (18.57 Ko)

Bonjour,

En outre, lors de l'affichage des dates, le format des cellules n'est pas le même, certaines sont automatiquement formatées comme des dates (cellules B2 et E2) alors que les deux autres apparaissent sous le format standard.

Tres Important La déclaration de tes variables n'est pas en date sauf pour la Date4. date1, 2 et 3 sont en Variant et non Date.

Corrige le code comme suit :

Dim date1 As Date, date2 As Date, date3 As Date, date4 As Date

remplace :

Cells(ran + 3, col).Value = Format(Cells(2, col), "mmmm-yy")

par

Cells(ran + 3, col) = Cells(2, col)
Cells(ran + 3, col).NumberFormat = "mmm-yy"

A te relire

Bonjour crissc54 et

Un exemple de traitement

16macro-dates.xlsm (17.51 Ko)

A+

Bonjour,

Je te retourne le fichier avec quelques petites modifications de macro

18macro-dates.xlsm (19.19 Ko)

Bonjour Dan,

Merci pour l'aide, je vais faire ces modifs.

Cependant je pensais que la déclaration des variables, telle que :

Dim date1, date2, date3, date4 As Date

valait pour les 4 variables, et non uniquement pour la dernière occurrence.

Ceci signifierait alors que :

Dim col, ran As Integer

ne déclare que ran comme entier ?

Quoiqu'il en soit, cela fonctionne à la perfection et signifie que j'ai encore beaucoup à apprendre.

Frangy et Raja

Merci également pour vos fichiers, j'y découvre l'utilisation de CDate que je ne connaissais pas encore.

Autre méthode qui fonctionne également à la perfection.

Raja, une deuxième macro que je ne comprends pas encore, je l'étudierai à tête reposée...

Cordialement

Re,

Ceci signifierait alors que : ......ne déclare que ran comme entier ?

Exact oui. Si tu mets "dim col, dim as integer", alors "co"l est considéré comme "variant" et non comme "integer"

Là il te faut mettre Dim col as integer ou dim col as byte (byte est suffisant pourt ton fichier - la limité étant de 256)

L'erreur que tu avais venait en premier par une mauvaise déclaration des variables "date"

Le CDATE permet par exemple de convertir une variable déclarée au départ comme "integer" et que dans le code tu veux à un moment utiliser comme Date

Si ok, lors de ta réponse clique le peti V vert à coté du bouton EDITER pour cloturer le fil

Amicalement

Merci Dan,

J'attendais ta dernière réponse.

Merci. Cordialement

crissc

Rechercher des sujets similaires à "formatage dates vba"