Macro classement horaire

Bonjour à tous,

Je suis débutant en matière de macros, je n'ai fait pour l'instant que de simples tutoriels, mais je rencontre un problème relativement complexe..

Je vais essayer de l'expliquer clairement mon problème:

J'ai deux colonnes qui contiennent des horaires. La première est une suite ininterrompue d'horaires qui s'incrémente non nécessairement de manière régulière. La deuxième continent beaucoup de cases vide et quelques horaires qui s'incrémentent également non nécessairement de manière régulière.

Je voudrais pouvoir intercaler les horaires de la deuxième colonne dans la première en gardant une suite chronologique. Au final avoir dans la colonne A les valeurs de A et B dans le bon ordre tout en pouvant repérer les anciennes valeur de la colonne B par un fond coloré (bleu par exemple)

exemple:

A -------------- B ---------- résultat

06:51:46 -----blanc___ ---- 06:50:12

06:56:46 ---- 06:50:12 -----06:51:46

07:01:46 ---- 06:57:02----- 06:56:46

07:03:06 ---- blanc___-----06:57:02

07:04:26 ---- blanc___-----07:01:46

07:05:46 ---- 07:16:32-----07:03:06

07:07:06 ---- 07:23:22-----07:04:26

07:14:06 ---- blanc___-----07:05:46

07:21:01 ---- blanc___-----07:07:06

07:23:51 ---- blanc___ -----07:14:06

blanc __ ---- blanc____ ---- 07:16:32

blanc __ ---- blanc ____ ---- 07:21:01

blanc__ ---- blanc ____ ---- 07:23:22

blanc__ ---- blanc____ ---- 07:23:51

Un dernier détail, on ne peut pas savoir combien de cellules ni à quelle heure se termine les deux colonnes...

Je ne vois vraiment pas par où commencer!

J'espère que j'ai été clair et que vous allez pouvoir m'aider!

Cordialement.

Bonjour,

Je ne vois vraiment pas par où commencer!

en déposant un fichier peut-être ?

eric

Bonsoir,

Une solution avec VBA sans fond coloré

Ctrl+a pour lancer la procédure

10essai-v1.xlsm (15.75 Ko)

En effet cela fonctionne!

Merci beaucoup, mais serait-il-possible d'avoir le code pour le comprendre et l'intégrer dans mon fichier?

Merci d'avance

Cordialement!

Re,

Pour visualiser le code faire AL F11, "Module1"

Sinon

Option Explicit
Public Sub MEF()
Dim Ws As Worksheet
Dim DerligneA As Long, DerligneB As Long, Derligne As Long
Dim Plage As Range
Dim monDico
Dim c As Range

    Application.ScreenUpdating = False

    Set Ws = Worksheets("Feuil1")
    Set monDico = CreateObject("Scripting.Dictionary")

    With Ws
        DerligneA = Range("A" & Rows.Count).End(xlUp).Row
        DerligneB = Range("B" & Rows.Count).End(xlUp).Row
        Derligne = DerligneA
        If DerligneB > DerligneA Then Derligne = DerligneB
        Set Plage = .Range(.Cells(2, 1), .Cells(Derligne, 2))

        For Each c In Plage
            If c <> "" Then monDico(c.Value) = ""
        Next c

        .[D2].Resize(monDico.Count, 1) = Application.Transpose(monDico.keys)
        .[D1].Sort Key1:=[D2], Order1:=xlAscending, Header:=xlYes
    End With

    Set Ws = Nothing: Set monDico = Nothing: Set Plage = Nothing

End Sub

Bonjour,

Merci Jean Eric pour ce code.

Je pense l'avoir compris dans l’ensemble mais je ne comprends pas très bien les 4 lignes qui utilisent mondico à savoir:

Set monDico = CreateObject("Scripting.Dictionary")
[...]
If c <> "" Then monDico(c.Value) = ""
[...]
.[H2].Resize(monDico.Count, 1) = Application.Transpose(monDico.keys)
[...]

est ce que je pourrais avoir une petite aide?^^

Cordialement

Rechercher des sujets similaires à "macro classement horaire"