Comment formater des dates correctement dans Excel ?
Dans ce tutoriel, je vais vous montrer comment formater des dates dans Excel lorsque celles-ci ne sont pas reconnues en tant que telles. Nous apprendrons à automatiser la conversion de dates dans un format correct en un clic, ce qui est particulièrement utile lorsque vos données importées depuis une application tierce contiennent des dates mal formatées.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Présentation
Pour illustrer ce tutoriel, nous pouvons utiliser l’exemple suivant, dans lequel sont reprises les commandes enregistrées par une entreprise :
Dans cette base, chaque ligne représente une transaction avec des informations telles que le numéro de commande, le nom du client, les produits achetés et la date de la transaction. Ces données peuvent être utilisées pour analyser les performances de l'entreprise en termes de ventes, de délais de livraison et pour identifier les tendances saisonnières dans les achats des clients.
Cependant, nous pouvons remarquer une anomalie dans ces données : la date dans la base de données n'est pas dans le bon format. Elle ne comporte ni tiret ni symbole de barre oblique.
Pour résoudre ce problème, nous allons devoir utiliser une macro VBA pour convertir les dates en un format correct.
Une macro VBA (Visual Basic for Applications) est un ensemble d'instructions que nous rédigeons pour automatiser des tâches au sein d'Excel. Cette automatisation permet d'accomplir des opérations complexes et répétitives en un simple clic.
Si vous êtes novice en la matière, ne vous inquiétez pas, je vais expliquer chaque ligne de code en détail pour que tout le monde puisse suivre ce guide.
Toutefois, si vous souhaitez approfondir vos connaissances dans ce domaine et découvrir comment VBA peut révolutionner votre utilisation d'Excel, je vous invite à consulter mon livre intitulé « Apprendre le VBA » en cliquant sur ce lien. Ce livre vous permettra d'acquérir les bases du VBA et de comprendre comment il peut transformer votre manière de travailler avec Excel.
Maintenant, pour créer notre macro VBA, nous devons lancer l'éditeur VBA en utilisant le raccourci clavier [Alt]+[F11]. Cela ouvrira l'interface de développement VBA.
Cet éditeur nous permet d'écrire, de modifier et d'organiser nos macros VBA à l'intérieur d'un classeur Excel.
Ensuite, nous pouvons ajouter un nouveau module à notre projet en sélectionnant "Insérer" > "Module".
Un module de code représente une feuille sur laquelle nous écrirons les instructions pour la macro que nous sommes en train de créer. Chaque module peut contenir plusieurs macros, que nous pourrons organiser selon nos besoins.
Maintenant que le module a été correctement inséré dans le projet, nous sommes prêts à créer la macro qui permettra de nettoyer les caractères indésirables dans les cellules sélectionnées.
Pour cela, nous utilisons le mot-clé "Sub", suivi du nom de la macro que nous voulons créer :
Sub convertirColonneDate()
End Sub
Comme vous pouvez le constater, lorsque nous appuyons sur la touche [Entrée], la macro est créée, ce qui implique deux éléments importants ici :
- Des parenthèses ouvrantes et fermantes sont ajoutées à la suite du nom de la macro. Nous verrons par la suite que ces parenthèses nous permettront de spécifier des arguments pour notre macro.
- La ligne "End Sub" est également ajoutée. Cette ligne sert à clore notre macro. Ainsi, tout ce que nous inscrirons entre ces deux lignes sera automatiquement exécuté à chaque fois que nous invoquerons la macro.
Pour cette macro, l'objectif est de formater une plage de cellules contenant des dates au format JJ/MM/AAAA (jours/mois/année) en utilisant la fonction TextToColumns de VBA.
Pour cela, nous commençons par déclarer une variable nommée « plageDates » pour stocker la plage de cellules contenant les dates que nous souhaitons formater. Pour cela, nous la typons en tant que « Range », c’est-à-dire une plage de cellules :
Dim plageDates As Range
Ensuite, nous allons lui affecter pour valeur les cellules sur lesquelles se trouvent les dates à corriger, ici les cellules D9 jusqu’à D16 :
Set plageDates = [D9:D16]
Nous utilisons la méthode "Set" pour spécifier cette plage de cellules, car la variable « plageDates » est un objet de type Range.
Pour finir, il ne reste plus qu’à utiliser la fonction « TextToColumns » de l’objet plageDates pour formater les dates dans la plage « plageDates ».
Ici, seul l'argument "FieldInfo" va nous intéresser. Celui-ci permet en effet de spécifier des informations sur la manière dont les données doivent être séparées et formatées lors de l'opération de découpage de texte en colonnes.
Dans cet argument, nous utilisons "FieldInfo:=Array(Array(1, xlDMYFormat))" pour définir le format de date que nous souhaitons appliquer lors de la séparation du texte en colonnes.
Il s’agit ici d’un tableau contenant des tableaux permettant de personnaliser chacune des colonnes.
Étant donné que la plage des cellules contenant les dates n’est composée que d’une seule colonne, le tableau principal n’est composé que d’un seul argument.
Ensuite, dans ce second tableau, le premier élément, "1", indique le numéro de colonne ou de champ que nous souhaitons formater. Dans ce cas, "1" représente la seule colonne de données dans la plage spécifiée. Le deuxième élément, "xlDMYFormat", spécifie le format de date que nous voulons appliquer à cette colonne. "xlDMYFormat" est une constante prédéfinie dans VBA qui représente le format jour-mois-année (JJ-MM-AAAA) pour les dates.
Et voilà, notre macro est maintenant terminée ! Il suffit de la lancer en revenant sur la feuille de calcul, puis en appuyant sur les touches [Alt]+[F8] pour afficher la boîte de dialogue de lancement des macros.
Nous sélectionnons ensuite la macro que nous venons de créer et pouvons la lancer en cliquant sur le bouton « Exécuter ».
Les dates sont maintenant correctement formatées :