Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Insertion automatique de ligne vide entre plusieurs heures

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 !

johanexcel

XLDnaute Nouveau
Bonjour à tous, me voila tout nouveau sur ce forum! J'espère donc y trouver mon bonheur.

Je vous explique. J'ai un tableau contenant une suite d'heure au format hh:mm:ss dans la colonne A.
Normalement chaque ligne devrais faire +1min par rapport à la précédente(cf exemple).
Je voudrais que lorsque la différence entre 2 ligne n'est plus égale à une minute, une ligne vide s'insere automatiquement entre les deux.
Je sais que sa se gère par macro j'ai vu des sujet semblable mais ils ne géraient pas le problème de l'heure en plus.
J'espère avoir été claire dans mon explication


Merci d'avance!!
 

Pièces jointes

Re : Insertion automatique de ligne vide entre plusieurs heures

Je continu le fil en rajoutant quelque chose, je ne sais pas si sa va alourdire le code ou pas, ou carrément impliquer un nouveau code.

Si une minute est sautée on rajoute une ligne, 2min 2 lignes jusque la Efgé à trouver la solution(ou presque).

Moi mon fichier est sencé débuté avec la valeur 00:00:00 à quelque secondes près. Et s'incrémenter d'une minute à chaque ligne.
Le problème c'est que quelques fois le fichier débute à 02:32:00 ou une autre valeur...
Est-il possible d'inserer "au dessus" de cette valeur autant de ligne qu'il y a de minutes la séparant de 00:00:00

Je sais que c'est compliqué, je suis sur un gros projet et il se passe principalement sur excel et je n'ai malheureusement aucune connaissances en VBA

Merci à vous...
 
Re : Insertion automatique de ligne vide entre plusieurs heures

Re
Il faut remplacer
VB:
Dim T(159) As Long
par
VB:
Dim T(120)
D'autre part il semble que tu n'ais pas compris le Thisworkbook:
Il est juste sous le module de la feuille 1 dans l'exemple.
J'ai préparé le terrain pour lancer la macro à l'ouverture du classeur.
La ligne est en commentaire, il suffit d'enlever l "'" qui est devant.
Cordialement
 

Pièces jointes

Re : Insertion automatique de ligne vide entre plusieurs heures

Effectivement je n'avais pas compris. Merci d'être si patient...

Et concernant mon dernier poste est-ce que une solution est envisagable en VBA? Tout en concervant la fonctionnailé de votre code précédent?

Cordialement
 
Re : Insertion automatique de ligne vide entre plusieurs heures

Re
Une proposition pour insérer les heures manquantes. Le code ajoute aussi les heures insérées dans la liste et mets les cellules en vert pour les identifiées.
Si cela fonctionne comme tu le souhaite, je pense avoir avoir fait le tour de la question.
Cordialement
 

Pièces jointes

Dernière édition:
Re : Insertion automatique de ligne vide entre plusieurs heures

Merci beaucoup Efgé! Le code que vous me proposé est super et c'est bien pratique de voir les cellule qui ont été rajouté. Je ne pensais pas que mon problème allait être si vite résolu. Encore merci. Maintenant je vais essayer de comprendre votre code en mettant des commentaires à chaque ligne! J'aime pas copier bêtement.


Bonne soirée.

A bientôt peut être!
 
Re : Insertion automatique de ligne vide entre plusieurs heures

Bonjour,

Ne vous cassez pas le tête j'essayerai de le commenter moi même.
Une derniere choses..... Si jamais le fichier commence à 14h on est daccord que vos programme marche à merveille, il rajoute les heures manquantes depuis minuit.
Est ce que c'est possible de le faire dans l'autre sens également? Si jamais la derniere valeur est 14h18 par exemple, completer jusqu'a 23h59. Une journéé normal comporte 1440minutes. Mon tableau devrait donc avoir 1440lignes. Et je souhaiterais qu'il est dans tout les cas 1440lignes d'heures, même si il commence à 14h18 et se termine à 21h15. Je ne sais pas si sa change beaucoup de chose à votre code....
 
Re : Insertion automatique de ligne vide entre plusieurs heures

Oubliez tout je peux me débrouiller sans. Meme si le code ne gère pas l'ajout de ligne jusqu'a 23h59mn0s les cellules restes vides donc je vais travailler avec cela.


Merci pour tout
 
Re : Insertion automatique de ligne vide entre plusieurs heures

Re!
Bon... Je reviens à la charge. J'ai pris le dernier fichier que vous m'avez envoyé et mis mes données à l'intérieur ( comme sa pas de souci du lieu ou je dois coller votre code etc).

Et il y a un problème, alors que la première valeurs est bien à minuit, des valeurs sont rajoutées...

Est ce que votre programme prend en compte les secondes?
 

Pièces jointes

Re : Insertion automatique de ligne vide entre plusieurs heures

Bonjour johanexcel, le fil, le forum
Bon....
Une version qui règle le problème de l'ajout intempestif avant 00:00:00 et qui ajoute, le cas échéant, les heures manquantes en fin de liste.
Je ne suis pas trop content du code, complexe, trop de lignes, etc....
Je ne gère pas les secondes, je ne gère d'ailleurs pas les heures non plus mais des valeurs de 0 à 59 😀.
Cordialement
 

Pièces jointes

Dernière édition:
Re : Insertion automatique de ligne vide entre plusieurs heures

Re
Comme je suis tétu... ...une nouvelle version, qui me parait beaucoup plus... ...disons, courte... 😀

VB:
Sub Der_des_Ders()
Dim i&, M!
M = (1 / 24) / 60
Application.ScreenUpdating = False
With Sheets("Feuil1")
    For i = 2 To 1441
        If Left(Format(.Cells(i, 1), "hh:mm:ss"), 6) <> _
                    Left(Format((i - 2) * M, "hh:mm:ss"), 6) Then
            .Rows(i).Insert CopyOrigin:=xlFormatFromRightOrBelow
            .Cells(i, 1).Value = Format((i - 2) * M, "hh:mm:ss")
            .Cells(i, 1).Interior.ColorIndex = 35
        End If
    Next i
End With
Application.ScreenUpdating = True
End Sub
Cordialement
 

Pièces jointes

Dernière édition:
Re : Insertion automatique de ligne vide entre plusieurs heures

Bonjour! Désolé de répondre que maintenant. Effectivement le premier code était vraiment monstrueux!
Je me demande comment vous avez réussis à passé du premier à celui-ci. C'est super efficace . Sacré travail en tout cas. Mille merci!
 
Re : Insertion automatique de ligne vide entre plusieurs heures

Re bonjour à tous!
Me revoila après plusieurs mois concernant mon problème d'ajout de ligne vide entre plusieurs heure.
J'ai eu l'ai très précieuse de efgé qui m'avait proposé un bout de code qui fonctionnait à merveille. Après plusieurs mois d'essai, j'ai détecté un problème que je n'arrive pas à résoudre.

Je vais metttre si joint un fichier excel comme ceux postés précédemment afin de vous montrer le problème. Normalement, la macro VBA doit completer par des ligne vides les minutes manquantes. Or dans ceux cas. Je ne comprend pas pourquoi cela ne fonctionne pas. Au final je doit me retrouver avec 1441 ligne (24h*60min + titre).

J'espère que efgé est toujours sur le forum afin de me donner de nouveau un coup de pouce!
Les autres menbres sont toujours les bienvenu.
 

Pièces jointes

Re : Insertion automatique de ligne vide entre plusieurs heures

Bonjour johanexcel johanexcel, le fil, le forum
En regardant ton exemple, tu n'auras jamais 1441 lignes. Il y a 3 lignes à 15h50 suivies de 3 lignes à 16h08.
Plus étrange : les données passent de 23h59 à 22h00.
Il faudrait que tu précise le résultat attendu, en particulier pour la gestion des doublons.
Cordialement
 
Re : Insertion automatique de ligne vide entre plusieurs heures

Re
Une proposition avec des codes couleurs:
En vert les lignes ajoutées
En orange les lignes en doublons
En rouge les lignes "en trop"

J'ai retiré des colonnes inutiles pour alléger le fichier
VB:
Sub Doublons()
Dim i&, M!, T!, F&
M = (1 / 24) / 60: T = -M: F = 1441
Application.ScreenUpdating = False
With Sheets("Feuil1")
    For i = 2 To F
    T = T + M
        If Format(.Cells(i, 1).Value, "hh:mm:00") <> Format(T, "hh:mm:00") And _
                    Format(.Cells(i, 1).Value, "hh:mm:00") <> Format(.Cells(i - 1, 1).Value, "hh:mm:00") Then
            .Rows(i).Insert CopyOrigin:=xlFormatFromRightOrBelow
            .Cells(i, 1).Value = Format(.Cells(i - 1, 1).Value + M, "hh:mm:00")
            .Cells(i, 1).Interior.ColorIndex = 35
        ElseIf Format(.Cells(i, 1).Value, "hh:mm:00") = Format(.Cells(i - 1, 1).Value, "hh:mm:00") Then
            .Range(.Cells(i - 1, 1), .Cells(i, 1)).Interior.ColorIndex = 40
            T = T - M
            F = F + 1
        End If
    Next i
    .Range(.Cells(F + 1, 1), .Cells(Rows.Count, 1).End(xlUp)).Interior.ColorIndex = 3
End With
End Sub


Cordialement
 

Pièces jointes

- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…