Macro permettant de changer un format date + heure en ne gardant que la date

achatenet

XLDnaute Nouveau
Bonsoir,

Dans le cadre de mon stage, je dois réaliser une macro permettant le retraitement d'une extraction tiré d'un logiciel. Cete extraction possède des doublons qui sont différencié par la date de création. Or une même ligne peut avoir été créé avec un léger décalage temporel empéchant la suppression des doublons.

J'ai réussi à réaliser une macro mais elles m'inversent le jours et la date à chaque fois que je clique sur mon bouton executant la macro.

Voici mon code :

Private Sub CommandButton1_Click()
Dim monDico As Object
Dim i As Integer

Set monDico = CreateObject("Scripting.Dictionary")

Application.ScreenUpdating = False

i = 1
Do While Cells(i, "A") <> ""
If Not monDico.Exists(Cells(i, "A") & Cells(i, "B") & Cells(i, "C") & Cells(i, "D")) Then
monDico(Cells(i, "A") & Cells(i, "B") & Cells(i, "C") & Cells(i, "D")) = ""
i = i + 1
Else
Rows(i).EntireRow.Delete
End If
Loop
For Each C In Sheets("Data RDV").Range("A1:A" & Range("A" & Application.Rows.Count).End(xlUp).Row)
C.Value = Left(C, 10)
C.NumberFormat = "dd/mm/yyyy"
Next C
Range("A2:Z1000").Sort Key1:=Range("B2"), Order1:=xlAscending
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E597"), Type:=xlFillDefault
Range("E2:E597").Select
Range("F2").Select
Selection.AutoFill Destination:=Range("F2:F597"), Type:=xlFillDefault
Range("F2:F597").Select

[F2].AutoFill Destination:=Range("F2:F" & Range("A65536").End(xlUp).Row)
[E2].AutoFill Destination:=Range("E2:E" & Range("D65536").End(xlUp).Row)


End Sub




Voyez vous d'où peux venir le problème ? Auriez vous une solution ?


Merci d'avance pour votre réactivité !


Amicalement !
 

Modeste geedee

XLDnaute Barbatruc
Re : Macro permettant de changer un format date + heure en ne gardant que la date

Bonsour®

les arguments de la fonction Offset sont les décalage respectifs Ligne et colonne

Code:
For Each c In Feuil1.Range("H2:H" & Range("H" & Application.Rows.Count).End(xlUp).Row)
    
   Select Case c.Value
       Case 1
             c.Offset(0, 4) = Int(c.Offset(0, 4)) + TimeValue("11:30:00")
       Case 2
             c.Offset(0, 4) = Int(c.Offset(0, 4)) + TimeValue("12:00:00")
      ' case 3  '---------  adapter les lignes en commentaire selon besoin
      '     c.offset(0,4) = int(C.offset(0,4))+timevalue("14:30:00")
      ' case ?
      '     c.offset(0,4) = int(C.offset(0,4))+timevalue("?h:?m:?s")

       Case Else
             '----------
  End Select
  c.Offset(0, 4).NumberFormat = "dd mm yyyy hh:mm"
Next
End Sub

Oupsss ....
désolé JCGL
- ta proposition utilisant une "éperluette" renvoie une valeur texte !!
- de plus la réitération de ta macro aboutie à une concaténation avec la valeur précédemment affichée
 

kalek93

XLDnaute Nouveau
Re : Macro permettant de changer un format date + heure en ne gardant que la date

Hello Geedee,

Merci pour ta réponse!

Effectivement ton code est mieux pour la suite de mon code, car je vais devoir comparer cette colonne avec une autre...

Cependant je ne vois pas où mettre les conditions? Je m'explique, je veux que si la colonne H commence par PL*, la colonne L rajoute 11:30:00 après la date.

Code:
For Each c In Range("H11:H" & Range("H" & Application.Rows.Count).End(xlUp).Row)
   
   Select Case c.Value
       Case range("H" & c) like "PL*" 
             c.Offset(0, 4) = Int(c.Offset(0, 4)) + TimeValue("11:30:00")
       Case Else
             '----------
 End Select
  c.Offset(0, 4).NumberFormat = "dd mm yyyy hh:mm"
Next

Le code ci-dessus ne fonctionne pas :-(
 

Modeste geedee

XLDnaute Barbatruc
Re : Macro permettant de changer un format date + heure en ne gardant que la date

Bonsour®
Effectivement ton code est mieux pour la suite de mon code, car je vais devoir comparer cette colonne avec une autre...

Cependant je ne vois pas où mettre les conditions? Je m'explique, je veux que si la colonne H commence par PL*, la colonne L rajoute 11:30:00 après la date.

:rolleyes:
simplement comme ceci :

Code:
For Each c In Range("H11:H" & Range("H" & Application.Rows.Count).End(xlUp).Row)   
   Select Case c.Value
       Case like "PL*" 
             c.Offset(0, 4) = Int(c.Offset(0, 4)) + TimeValue("11:30:00")
       Case Else
             '----------
 End Select
  c.Offset(0, 4).NumberFormat = "dd mm yyyy hh:mm"
Next
 

kalek93

XLDnaute Nouveau
Re : Macro permettant de changer un format date + heure en ne gardant que la date

Hello Geedee !

Merci pr ton feedback !

Cependant avec ton code, il m'ajoute l'heure à toutes les lignes dans la colonne L, et pas uniquement où la cellule H contient "PL*".

De plus, l'heure ajouté, n'est pas 11:30:00 mais 00:00:00.

Aurais-tu une idée?

Merci beaucoup ;-)
 

Modeste geedee

XLDnaute Barbatruc
Re : Macro permettant de changer un format date + heure en ne gardant que la date

Bonsour®

Oupsss... toutes mes excuses, code écrit scratch non testé.

correctif :
VB:
Sub toto()
Dim c As Range
For Each c In Range("H11:H" & Range("H" & Application.Rows.Count).End(xlUp).Row)
    Select Case Left(c, 2)
        Case "PL"
                c.Offset(0, 4) = Int(c.Offset(0, 4)) + TimeValue("11:30")
                c.Offset(0, 4).NumberFormat = "dd/mm/yyyy hh:mm"
        case "PM"   ' <==---ajouter autant de groupe Case que de couple de lettres souhaité 
                c.Offset(0, 4) = Int(c.Offset(0, 4)) + TimeValue("18:00") ' <== -- changer l'horaire selon le couple
                c.Offset(0, 4).NumberFormat = "dd/mm/yyyy hh:mm"
         Case Else
                c.Offset(0, 4).NumberFormat = "dd/mm/yyyy"
              '----------
 End Select  
 Next
End Sub
 

Discussions similaires

Réponses
17
Affichages
837
Réponses
0
Affichages
153

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine