Rechercher : dans
Par :

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

Dernière réponse le 6 mai 2009 à 14:05:53 Carotte77, le 5 mai 2009 à 21:58:16 
 Signaler ce message aux modérateurs

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.

Cochez "Problème résolu" au début de la discussion lorsque votre problème est résolu ! Merci ;)

Configuration: Microsoft Windows XP Professional SP3
DirectX 9.0c
Intel Pentium 4 530, 3000 MHz 
1024 Mo DDR2-533	
Carte graphique HIS HD IceQ4 Radeon 4650 (1024 Mo)
Dell E173FP  [17" LCD]
Intel 82801FB ICH6 - AC'97 Audio Controller [B-1]
Lecteur de disquettes
Disque dur	ST3160023AS  (160 Go, 7200 RPM, SATA)
Disque dur	ST3320620AS  (298 Go, IDE)
NEC DVD+-RW ND-3450A  (DVD+R9:2.4x, DVD+RW:16x/4x, DVD-RW:8x/4x, DVD-ROM:16x, CD:48x/24x/48x DVD+RW/DVD-RW)
Clavier 
Souris HID
Carte réseau NETGEAR 108 Mbps Wireless PCI Adapter WG311T 
Imprimante Canon iP5200
Webcam Philips ToUcam Pro Camera

1

gbinforme, le 5 mai 2009 à 22:43:44

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.
Toujours zen

Répondre à gbinforme

2

Carotte77, le 6 mai 2009 à 08:53:22

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...
Cochez "Problème résolu" au début de la discussion lorsque votre problème est résolu ! Merci ;)

Répondre à Carotte77

3

gbinforme, le 6 mai 2009 à 09:00:58

Bonjour

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

Elle représente chaque cellule trouvée en colonne A
Toujours zen

Répondre à gbinforme

4

Carotte77, le 6 mai 2009 à 09:40:05

Merci beaucoup Gbinforme !!

Problème résolu ;)
A++ !!
Cochez "Problème résolu" au début de la discussion lorsque votre problème est résolu ! Merci ;)

Répondre à Carotte77

5

Carotte77, le 6 mai 2009 à 10:33:13

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 ?
Cochez "Problème résolu" au début de la discussion lorsque votre problème est résolu ! Merci ;)

Répondre à Carotte77

6

gbinforme, le 6 mai 2009 à 12:05:02

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.
Toujours zen

Répondre à gbinforme

7

 Carotte77, le 6 mai 2009 à 14:05:53

Merci beaucoup !
Cochez "Problème résolu" au début de la discussion lorsque votre problème est résolu ! Merci ;)

Répondre à Carotte77
Collection CommentÇaMarche.net