XL 2016 Mise ne forme des Date sur une plage variable

Utilisateur_X

XLDnaute Junior
Bonjour
J'avais un problème avec le format des dates.Suite à une extraction que je fait les date étais parfois sur la forme dd/mm/yyyy et parfois mm/dd/yyyy et parfois en anglais expl:12/AUG/2020. Pour rendre tout sur la même forme j'ai utiliser la macro suivante qui fonctionne très bien
Sub modifDate()

Dim F1 As Range

Dim i As Integer

Dim DernLigne As Long

DernLigne = Range("A" & Rows.Count).End(xlUp).Row

Set F1 = ActiveSheet.Range("A2:A" & DernLigne)

For i = 1 To F1.Rows.Count

F1(i, 3).Value = Format(F1(i, 3).Value, "dd/mm/yyyy")

Next i

Selection.NumberFormat = "dd/mm/yyyy"

Range("A1").Select

End Sub

Sauf que je veut appliquer cette macro sur des colonnes que je sélectionne. EXPL: je vais sélectionner une colonne H ou I ou autre et je veut appliquer cette macro dessus.
Est il possible ?

Merci à vous
 
Solution
Bonjour,
Pour mettre votre code utilisez la balise </>, c'est plus lisible.:)
Avec ce code, vous sélectionnez une cellule puis lancez la macro :
VB:
Sub MiseEnForme()
    Dim DernLigne As Long, Colonne as Long, DerLig as Long, Plage as Range
    ' Cherche N° colonne de la cellule active
    Colonne = ActiveCell.Column
    ' Sélectionne cette colonne
    Set Plage = ActiveSheet.Range(Cells(1, Colonne), Cells(65000, Colonne))
    ' Recherche la dernière ligne occupée de cette colonne
    DernLigne = Plage.CurrentRegion.Count
    ' Selectionne la bonne plage
    Set Plage = ActiveSheet.Range(Cells(1, Colonne), Cells(DernLigne, Colonne))
    ' Applique le format
    Plage.NumberFormat = "dd/mm/yyyy"
    Range("A1").Select
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Pour mettre votre code utilisez la balise </>, c'est plus lisible.:)
Avec ce code, vous sélectionnez une cellule puis lancez la macro :
VB:
Sub MiseEnForme()
    Dim DernLigne As Long, Colonne as Long, DerLig as Long, Plage as Range
    ' Cherche N° colonne de la cellule active
    Colonne = ActiveCell.Column
    ' Sélectionne cette colonne
    Set Plage = ActiveSheet.Range(Cells(1, Colonne), Cells(65000, Colonne))
    ' Recherche la dernière ligne occupée de cette colonne
    DernLigne = Plage.CurrentRegion.Count
    ' Selectionne la bonne plage
    Set Plage = ActiveSheet.Range(Cells(1, Colonne), Cells(DernLigne, Colonne))
    ' Applique le format
    Plage.NumberFormat = "dd/mm/yyyy"
    Range("A1").Select
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re Bonjour,
Au post #1 vous dites que votre macro marche très bien.
J'ai donc reconduit strictement votre mise en forme : Selection.NumberFormat = "dd/mm/yyyy"
Si votre Windows est en format français alors 04/AUG/2020 est un texte non une date. En français il afficherait : 04/août/2020 ou pour février 04/févr/2020.
 

Utilisateur_X

XLDnaute Junior
VB:
Sub MiseEnForme()
    Dim DernLigne As Long, Colonne As Long, DerLig As Long, Plage As Range
    ' Cherche N° colonne de la cellule active
    Colonne = ActiveCell.Column
    ' Sélectionne cette colonne
    Set Plage = ActiveSheet.Range(Cells(1, Colonne), Cells(65000, Colonne))
    ' Recherche la dernière ligne occupée de cette colonne
    DernLigne = Plage.CurrentRegion.Count
    ' Selectionne la bonne plage
    Set Plage = ActiveSheet.Range(Cells(1, Colonne), Cells(DernLigne, Colonne))
    ' Applique le format
    Set F1 = ActiveSheet.Range("A2:A" & DernLigne)
    For i = 1 To F1.Rows.Count
        F1(i, Colonne).Value = Format(F1(i, Colonne).Value, "dd/mm/yyyy")
    Next i

    Plage.NumberFormat = "dd/mm/yyyy"
    Range("A1").Select
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je ne comprends pas.
C'est cette ligne qui fait la mise en forme, pas besoin de boucle FOR :

Set Plage = ActiveSheet.Range(Cells(1, Colonne), Cells(DernLigne, Colonne)) ' Applique le format Plage.NumberFormat = "dd/mm/yyyy"

Testez cette PJ, il suffit de sélectionner une cellule puis d'appuyer sur GO. Toutes les nombres de la colonne prennent le bon format.
 

Pièces jointes

  • MiseEnForme.xlsm
    17.1 KB · Affichages: 3

Utilisateur_X

XLDnaute Junior
Bonjour ( Désolé pour la réponse tardive )
J'ai essayer votre fichier mais le problème c'est que si ma cellule est sous cette forme : 24/AUG/2021 il ne la traite pas .alors que avec mon fichier il va la mettre sous 24/08/2021.
 

Pièces jointes

  • DATE_PB.V2.xlsm
    47.8 KB · Affichages: 0
Haut Bas