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

Résolu/Fermé
Carotte77 Messages postés 543 Date d'inscription mardi 19 décembre 2006 Statut Membre Dernière intervention 30 juin 2011 - 5 mai 2009 à 21:58
Carotte77 Messages postés 543 Date d'inscription mardi 19 décembre 2006 Statut Membre Dernière intervention 30 juin 2011 - 6 mai 2009 à 14:05
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.
A voir également:

6 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
5 mai 2009 à 22:43
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 mardi 19 décembre 2006 Statut Membre Dernière intervention 30 juin 2011 539
6 mai 2009 à 08:53
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
6 mai 2009 à 09:00
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 mardi 19 décembre 2006 Statut Membre Dernière intervention 30 juin 2011 539
6 mai 2009 à 09:40
Merci beaucoup Gbinforme !!

Problème résolu ;)
A++ !!
0
Carotte77 Messages postés 543 Date d'inscription mardi 19 décembre 2006 Statut Membre Dernière intervention 30 juin 2011 539
6 mai 2009 à 10:33
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
6 mai 2009 à 12:05
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 mardi 19 décembre 2006 Statut Membre Dernière intervention 30 juin 2011 539
6 mai 2009 à 14:05
Merci beaucoup !
0