Exécuter cette macro sur toute la colonne

Résolu
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -  
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour Mes amis

Voici le code du macro, s'il est possible je dois l'exécuter sur toute la colonne B,

Public [/contents/446-fichier-sub Sub] CorrectionDateScanfact()
Selection.NumberFormat = "dd/mm/yyyy;@"
    
Dim myDate As Range
Dim dkoupDate() As String

    For Each myDate In Selection
        If (myDate.Text = "") Or (IsNull(myDate.Text)) Then
            Exit For
        ElseIf ((myDate.Text) Like "-*") Then
            myDate.Value = ""
        Else
            dkoupDate = Split(myDate.Text, "-")
            If dkoupDate(1) = "Jan" Then
                dkoupDate(1) = "01"
            ElseIf dkoupDate(1) = "Feb" Then
                dkoupDate(1) = "02"
            ElseIf dkoupDate(1) = "Mar" Then
                dkoupDate(1) = "03"
            ElseIf dkoupDate(1) = "Apr" Then
                dkoupDate(1) = "04"
            ElseIf dkoupDate(1) = "May" Then
                dkoupDate(1) = "05"
            ElseIf dkoupDate(1) = "Jun" Then
                dkoupDate(1) = "06"
            ElseIf dkoupDate(1) = "Jul" Then
                dkoupDate(1) = "07"
            ElseIf dkoupDate(1) = "Aug" Then
                dkoupDate(1) = "08"
            ElseIf dkoupDate(1) = "Sep" Then
                dkoupDate(1) = "09"
            ElseIf dkoupDate(1) = "Oct" Then
                dkoupDate(1) = "10"
            ElseIf dkoupDate(1) = "Nov" Then
                dkoupDate(1) = "11"
            ElseIf dkoupDate(1) = "Dec" Then
                dkoupDate(1) = "12"
            Else
                MsgBox ("Une erreur s'est produite lors de la convertion de la date")
            End If
            
            myDate.NumberFormat = "dd/mm/yyyy;@"
            'on enregistre la nouvelle date
            myDate.Value = DateSerial(dkoupDate(2), dkoupDate(1), dkoupDate(0))
              
        End If
    Next myDate
    End Sub


Merci pour votre aide :)
A voir également:

1 réponse

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Public Sub CorrectionDateScanfact()
Dim myDate As Range
Dim dkoupDate() As String

With Worksheets("feuil1")
derlig = .Range("B" & Rows.Count).End(xlUp).Row
Set Plage = .Range("B1:B" & derlig)
End With

Plage.NumberFormat = "dd/mm/yyyy;@"


For Each myDate In Plage
If (myDate.Text = "") Or (IsNull(myDate.Text)) Then
Exit For
ElseIf ((myDate.Text) Like "-*") Then
myDate.Value = ""
Else
dkoupDate = Split(myDate.Text, "-")
If dkoupDate(1) = "Jan" Then
dkoupDate(1) = "01"
ElseIf dkoupDate(1) = "Feb" Then
dkoupDate(1) = "02"
ElseIf dkoupDate(1) = "Mar" Then
dkoupDate(1) = "03"
ElseIf dkoupDate(1) = "Apr" Then
dkoupDate(1) = "04"
ElseIf dkoupDate(1) = "May" Then
dkoupDate(1) = "05"
ElseIf dkoupDate(1) = "Jun" Then
dkoupDate(1) = "06"
ElseIf dkoupDate(1) = "Jul" Then
dkoupDate(1) = "07"
ElseIf dkoupDate(1) = "Aug" Then
dkoupDate(1) = "08"
ElseIf dkoupDate(1) = "Sep" Then
dkoupDate(1) = "09"
ElseIf dkoupDate(1) = "Oct" Then
dkoupDate(1) = "10"
ElseIf dkoupDate(1) = "Nov" Then
dkoupDate(1) = "11"
ElseIf dkoupDate(1) = "Dec" Then
dkoupDate(1) = "12"
Else
MsgBox ("Une erreur s'est produite lors de la convertion de la date")
End If

myDate.NumberFormat = "dd/mm/yyyy;@"
'on enregistre la nouvelle date
myDate.Value = DateSerial(dkoupDate(2), dkoupDate(1), dkoupDate(0))

End If
Next myDate
End Sub
2
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Mr, vous avez fait un excellent travail merci,
0