Macro conversion de date

  • Initiateur de la discussion Initiateur de la discussion malabarbe
  • Date de début Date de début

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 !

malabarbe

XLDnaute Occasionnel
Bonjour,

J'ai 2 questions :

1 - Comment par macro, transformer
Samedi 28 juin 2008 en 28/06/2008

2 - Pour supprimer des lignes (ne connaissant pas la longueur de la feuille)
je fais for i = 1 to 500
comment connaitre le nonbre de lignes
pour faire for i = 1 to nb_lignes ?

Merci à vous
 
Re : Macro conversion de date

Bonjour

EDITION II:
(PS: Il doit y vaoir une façon plus "propre" de faire la conversion)

Code:
'Avec des cellules au Format Texte
Sub test_feuille_ok()
Dim i As Long
For i = Range("A65536").End(xlUp).Row To 1 Step -1
Cells(i, 1).NumberFormat = "General"
Cells(i, 1).Value = _
DateValue(Mid(Cells(i, 1).Text, _
InStr(1, Cells(i, 1).Text, " ", 1) + 1))
Cells(i, 1).NumberFormat = "dd/mm/yyyy"
Next i
End Sub

EDITION I:
Code:
Sub test_ok()
Dim Strg As String
Strg = "Samedi 28 juin 2008"
MsgBox CDate(Mid(Strg, InStr(1, Strg, " ", 1) + 1))
End Sub



1
Format("tadate";"dd/mm/yyyy")


2
Dim i as Long
For i= Range("A65536").End(xlUp).Row to 1 step -1
'ton code
Next i
 
Dernière édition:
Re : Macro conversion de date

Re

EDITION:
Voir le fichier exemple
Ce lien n'existe plus

Code:
Sub conversion_avec_formule()
'source:
'Formule de Monique
'http://www.excel-downloads.com/forum/442482-post2.html
Dim Fin As Long
Fin = [A65536].End(xlUp).Row
Range("B1").FormulaR1C1 = "=MID(RC[-1],FIND("" "",RC[-1])+1,17)*1"
Range("B1").AutoFill Destination:=Range("B1:B" & Fin)
With Range("B1:B" & Fin)
    .NumberFormat = "dd/mm/yyyy"
    .Copy
    .PasteSpecial Paste:=xlValues
End With
Columns("A:A").Delete
End Sub

La formule en clair:
=STXT(A1;TROUVE(" ";A1)+1;17)*1
 
Dernière édition:
Re : Macro conversion de date

Bonjour,

Ce code la fonctionne très bien
Code:
Sub test_ok()
Dim Strg As String
Strg = "Samedi 28 juin 2008"
MsgBox CDate(Mid(Strg, InStr(1, Strg, " ", 1) + 1))
End Sub
Et pour la détection du nombre de lignes = OK

Merci pour tout
@ +
 
- 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
5
Affichages
914
Réponses
10
Affichages
664
Réponses
8
Affichages
782
Réponses
4
Affichages
735
Retour