Heure qui augment de 1 seconde excel

  • Initiateur de la discussion Initiateur de la discussion avyrex1926
  • 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 !

A

avyrex1926

Guest
Bonjour a tous,

J'ai un probleme avec un code. Dans la colonne D de mon fichier excel, j'ai des cellules vide ainsi que des cellules avec qui contient des valeurs ex: 11/01/2010 5:00:00 AM, 11/01/2010 6:00:00 AM, 11/01/2010 7:00:00 AM......

Ce que je veux c'est qu'il verifie chaques valeurs de la colonne D et s'il y a des valeurs qui ce double, qu'il augment chaques valeurs en double ou en triple de 1 seconde.

Ex:
Colonne D
11/01/2010 5:00:00 AM

11/01/2010 5:00:01 AM

11/01/2010 5:00:02 AM


11/01/2010 5:00:03 AM

11/01/2010 6:00:00 AM

11/01/2010 7:00:00 AM.........



Merci pour votre aide
 

Pièces jointes

Re : Heure qui augment de 1 seconde excel

Bonjour avyrex1926, le forum,

Le fichier et la macro :

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, tablo, d As Long, i As Long, j As Long
Set plage = Range("D1", Range("D65536").End(xlUp))
tablo = Application.Transpose(plage)
d = UBound(tablo)
For i = 1 To d - 1
  If IsNumeric(CStr(tablo(i))) Then
    For j = i + 1 To d
      If tablo(i) = tablo(j) Then tablo(j) = tablo(j) + 1 / 86400
    Next
  End If
Next
plage = Application.Transpose(tablo)
End Sub

A+
 

Pièces jointes

Re : Heure qui augment de 1 seconde excel

Re,

Une variante si l'on veut supprimer les lignes des cellules vides intermédiaires (à partir de D5) :

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, tablo, d&, i&, j&
Set plage = Range("D4", Range("D65536").End(xlUp))
tablo = Application.Transpose(plage)
d = UBound(tablo)
For i = 1 To d - 1
  If IsNumeric(CStr(tablo(i))) Then
    For j = i + 1 To d
      If tablo(i) = tablo(j) Then tablo(j) = tablo(j) + 1 / 86400
    Next
  End If
Next
plage = Application.Transpose(tablo)
[COLOR="Red"]On Error Resume Next
Intersect(plage.SpecialCells(xlCellTypeBlanks), Range("D5:D65536")).EntireRow.Delete[/COLOR]
End Sub

A+
 

Pièces jointes

Dernière édition:
Re : Heure qui augment de 1 seconde excel

Boujour a tous,

Je reviens avec mon probleme de code.

Je me rend compte que avec le nouveau code, je me trouve avec un nouveau probleme.

Il augmente de 1 seconde les heures sans problème. Par contre, il ne tient pas en considération que la date est différente. Est-il possible qu'il tienne conte de la date aussi?

Ex:

Jan 11, 2010 05:00:00
Jan 12, 2010 05:00:00
Jan 11, 2010 05:00:00

deviendrait:
Jan 11, 2010 05:00:00
Jan 12, 2010 05:00:00
Jan 11, 2010 05:00:01


Merci encore pour votre aide
 

Pièces jointes

Re : Heure qui augment de 1 seconde excel

Re,

Il augmente de 1 seconde les heures sans problème. Par contre, il ne tient pas en considération que la date est différente.

Je ne comprends pas du tout...

Dans votre fichier la macro traite la colonne D et c'est bien ceci que l'on obtient :

Jan 11, 2010 05:00:00
Jan 12, 2010 05:00:00 => voir la cellule D51 🙄
Jan 11, 2010 05:00:01


La macro tient compte des dates + heures puisqu'il y a ce test :

If tablo(i) = tablo(j) Then

Edit : n'auriez-vous pas compris comment est construit le système Dates/heures sur Excel ?

Dans ce cas mettez la colonne D au format "Standard" et regardez : la partie entière des nombres ce sont les jours depuis le 01/01/1900, la partie décimale c'est l'heure (fraction de jour).

La macro stocke ces nombres (jours+heures) dans le tableau tablo.

A+
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour