[VBA] Découper le contenu d'une cellule

Résolu
Carotte77 Messages postés 543 Date d'inscription   Statut Membre Dernière intervention   -  
Carotte77 Messages postés 543 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une feuille excel, dont la première colonne indique une date et une heure au format AAAAMMJJHHmm (Exemple 200901092000 pour le 09 janvier 2009 à 20h00). Je voudrais en fait récupérer les valeurs de l'année, du mois, du jour, des heures et des minutes, les stocker dans 5 variables (une pour chaque valeur de date), afin de reconstituer une date facilement compréhensible.

Étant donné que j'ai plus de 2500 dates comme celles là à traiter, je voudrais automatiser cela avec un code VBA.

J'ai déjà commencé, mais il me manque la partie la plus importante, celle qui va sélectionner les 4 premiers caractères et les enregistrer dans ma variable année, ensuite les deux suivants pour la variable mois, les deux suivants pour la variable jour, les deux suivants pour la variable heures, et les deux derniers pour la variable minutes.

J'ai vu qu'on pouvait utiliser les propriétés Left, Right ou Mid, ou la fonction Split pour séparer, mais je ne sais pas lui dire de tronquer la chaîne de caractères de la sorte : AAAA|MM|JJ|HH|mm...

Merci d'avance pour votre aide !

PS : j'utilise Excel 2007.

6 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

Ceci devrait effectuer ta fonction :
For Each cel In Columns(1).Cells
    If cel.Value <> "" Then
        cel.Offset(0, 2).Value = _
            DateValue(Mid(cel.Value, 7, 2) & "/" _
                & Mid(cel.Value, 5, 2) & "/" _
                & Mid(cel.Value, 1, 4)) _
            + TimeValue(Mid(cel.Value, 9, 2) & ":" _
                & Mid(cel.Value, 11, 2))
    End If
Next

Tu remplaces le 2 de la fonction offset par le nombre de colonnes de décalage par rapport à A où tu veux ton résultat sous format date/heure exploitable.
0
Carotte77 Messages postés 543 Date d'inscription   Statut Membre Dernière intervention   541
 
Bonjour,
Tout d'abord merci pour ta réponse.
Lorsque j'insère ton code à ma feuille, il me met que 'cel' est une variable non définie.

J'ai essayé en remplaçant tes 'cel' par des 'Cells', mais à ce moment là, il me dit qu'une variable est requise...
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

'cel' est une variable à définir : dim cel as range

Elle représente chaque cellule trouvée en colonne A
0
Carotte77 Messages postés 543 Date d'inscription   Statut Membre Dernière intervention   541
 
Merci beaucoup Gbinforme !!

Problème résolu ;)
A++ !!
0
Carotte77 Messages postés 543 Date d'inscription   Statut Membre Dernière intervention   541
 
Par contre, juste une petite question (oui, je t'embête encore...) :

Lorsque l'heure de la cellule concernée est minuit, il ne transforme pas les 0000. Par exemple, pour "200812020000", avec ton code, il me transforme en "02/12/2008", et non pas en "02/12/2008 00:00" comme pour tous les autres horaires.

Aurais-tu une solution ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

Il fait bien la traduction mais c'est excel qui ne l'affiche pas.

Sur ta colonne il suffit d'appliquer le format personnalisé : jj/mm/aaaa hh:mm
et les zéros seront affichés sans souci.
0
Carotte77 Messages postés 543 Date d'inscription   Statut Membre Dernière intervention   541
 
Merci beaucoup !
0