Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Extraire une date dans une chaine via VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Loustalot33

XLDnaute Nouveau
Bonjour,

Je suis débutant dans le codage VBA.
J'ai besoin d'extraire et mettre dans une autre colonne la date. Cette date est toujours sous la même forme et se trouve toujours à la fin.
Le contenu des cellules est variable.
Je n'arrive pas à écrire le code pour couper la date et la copier dans la 1ère cellule à droite.
Quelqu'un peut m'aider ?

ex:
2521.6.0068006158 09/08/2016
AV16-01413 08/08/2016
3164938 05/08/2016
 
Bonjour le forum

Par formule
=DROITE(A1;A10)

On peut aussi prendre Données/Convertir en choisissant l'espace comme séparateur
et en cochant Date dans la rubrique Format des données en colonne

Cette macro est le reflet de l'utilisation de cette méthode
VB:
Sub Macro1()
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, Space:=True, FieldInfo:=Array(Array(1, 9), Array(2, 4))
End Sub

Les données à extraire sont en colonne A et le résultat s'affichera en colonne B.
 
Dernière édition:
Pour lancer la macro, il faut d'abord avant sélectionner la colonne A.
Les dates alors sont bien mises en colonne B.

Si la colonne doit être la colonne adjacente à la colonne sélectionnée, on peut faire çà
Code:
Sub Macro1()
Dim Col As Long
Col = Selection.Column
Selection.TextToColumns Destination:=Cells(1, Col + 1), DataType:=xlDelimited, Space:=True, FieldInfo:=Array(Array(1, 9), Array(2, 4))
End Sub
 
On peut cocher Colonnes non distribuées pour les colonnes inutiles
C'est plus simple à expliquer quand on fait le Donnés/Convertir manuellement donc essaies de jouer sur les paramètres en convertissant quand il y a plusieurs espaces.

Et pour avoir les lignes VBA, il faut laisser tourner l'enregistreur de macros tout en faisant le Données/Convertir.
 
Si c'est trop compliqué avec Données/Convertir alors on peut faire cette macro aussi.
VB:
Sub Macro2()
Dim Cell As Range
For Each Cell In Selection
Cell.Offset(, 1) = CDate(Split(Cell, " ")(UBound(Split(Cell, " "))))
Next
End Sub
 
Bonjour le forum

macro testée sur ton dernier fichier
VB:
Sub Macro()
Dim Cell As Range, Chaine As String
For Each Cell In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
On Error Resume Next
Chaine = Split(Cell.Text, " ")(UBound(Split(Cell.Text, " ")))
If IsDate(CDate(Chaine)) Then
Cell.Offset(, 1).Value = CDate(Chaine)
End If
Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
431
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…