IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Repérer dépassements d'amplitude horaire (13h) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Par défaut Repérer dépassements d'amplitude horaire (13h)
    Bonjour à tous !
    Dans le fichier joint, je cherche à pouvoir mettre en évidence (surbrillance orange) les N° de plannings dont l'amplitude horaire est supérieur à 13h

    Quelques précisions sur ce fichier :

    Ce fichier comporte un "échantillon".
    Cet échantillon comporte, sur chacune de ses lignes, des numéros de course, qui ont toutes une heure de départ et une heure d'arrivée.
    Sur chacune de ces courses, les "N°" de plannings présents sur cette course sont définis (colonnes K à BH).

    Le fichier est peut-être plus explicite...

    Merci par avance à tous ceux qui se pencherons sur ce problème...

    P.S.: Cette demande a été également postée sur d'autres forums, sans succès pour l'instant
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Pour la valeur "9", la valeur correspondant à l'heure de départ est en P10, mail il y a une valeur "9" en T11 qui correspond à une heure d'arrivée à 18:15. Pourquoi prendre la valeur en Z12 ?

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    L'écart maxi entre les valeurs "9" est 13:05 (7:15 et 20:20).
    Essaie la macro suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub test()
        Dim DerLigne As Long, Plage As Range, C As Range, C2 As Range
        DerLigne = Cells(Rows.Count, 1).End(xlUp).Row
        Set Plage = Range("K2:BH" & DerLigne)
        For Each C In Plage
            If C.Value <> "" Then
                Set C2 = Range(Cells(C.Row + 1, "K"), Cells(DerLigne, "BH")).Find(C.Value, , , xlWhole, xlByRows, xlPrevious)
                If Not C2 Is Nothing Then
                    If C.Address = C2.Address Then Exit Sub
                    If CDate(Cells(C2.Row, "J").Value - Cells(C.Row, "H").Value) > CDate("13:30") Then
                        C.Interior.ColorIndex = 46
                        C2.Interior.ColorIndex = 46
                    End If
                End If
            End If
        Next C
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Par défaut
    Bonsoir Daniel.C, et merci beaucoup,
    C'est tout à fait ma demande, cependant il reste un soucis:

    Ta macro ne prend pas en compte la date visiblement (il est vrai que mon fichier exemple n'en comportait qu'une seule).
    L'idée de base étant de rechercher les amplitudes sur une journée (sur chacune des journée en fait), et ce fichier peut effectivement comporter plusieurs dates (la plupart du temps en fait).
    Malheureusement, mes faibles connaissances ne me permettent pas d'adapter ton code à ma demande, si tu avais la gentillesse de m'aider encore, tu m'enlèverais une belle épine...
    En tous cas, merci déjà pour ce code et l'intérêt porté à ma demande...

    Cordialement,

    Gandorf

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Essaie comme ceci, à condition que les dates soient triées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub test()
        Dim DerLigne As Long, Plage As Range, C As Range, C2 As Range, Tabl() As String
        Dim Ctr As Integer, Dat As String, Filtre As Range
        DerLigne = Cells(Rows.Count, 1).End(xlUp).Row
        Sheets("échantillon daté").AutoFilterMode = False
        ReDim Tabl(Ctr)
        Ctr = -1
        Set Plage = Range("B2:B" & DerLigne)
        For Each C In Plage
            If Not IsNumeric(Application.Match(Format(C.Value, "mm/dd/yyyy"), Tabl, 0)) Then
                Ctr = Ctr + 1
                ReDim Preserve Tabl(Ctr)
                Tabl(Ctr) = Format(C.Value, "mm/dd/yyyy")
            End If
        Next C
        For Each Item In Tabl
            Sheets("échantillon daté").AutoFilterMode = False
            Set Filtre = Range("B1:BH" & DerLigne)
            Filtre.AutoFilter 1, ">=" & Item, xlAnd, "<=" & Item
     
            Set Plage = Filtre.Offset(1, 9).Resize(Filtre.Rows.Count - 1, Filtre.Columns.Count - 9). _
                SpecialCells(xlCellTypeVisible)
            Var = Plage.Address
            For Each C In Plage
                If C.Value <> "" Then
                    Set C2 = Range(Cells(C.Row + 1, "K"), Cells(DerLigne, "BH")).Find(C.Value, , , xlWhole, xlByRows, xlPrevious)
                    If Not C2 Is Nothing Then
                        If C.Address = C2.Address Then Exit Sub
                        If CDate(Cells(C2.Row, "J").Value - Cells(C.Row, "H").Value) > CDate("13:30") Then
                            C.Interior.ColorIndex = 46
                            C2.Interior.ColorIndex = 46
                        End If
                    End If
                End If
            Next C
        Next Item
        Sheets("échantillon daté").AutoFilterMode = False
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Par défaut
    Merci beaucoup Daniel C.

    Malheureusement, et je ne l'ai pas précisé effectivement, le fichier ne peut pas (ne doit pas) être trié...
    La seule solution que je voie serait de le trier juste pour l'exécution de cette macro, puis de le remettre dans l'ordre initial, mais c'est un peu alambiqué et lourd je pense ...

    En tout cas, merci pour le temps passé sur mon problème...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Macro calcul amplitude horaire
    Par prisca2903 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2014, 16h52
  2. Dev C++ et mode VGA (13h)
    Par bootix dans le forum Dev-C++
    Réponses: 11
    Dernier message: 09/12/2007, 14h52
  3. Réponses: 5
    Dernier message: 28/10/2004, 15h22
  4. Comment repérer la vitesse du processeur?
    Par Paradam dans le forum Assembleur
    Réponses: 14
    Dernier message: 28/06/2003, 10h43
  5. Mode 13h et palette
    Par Biglo dans le forum Assembleur
    Réponses: 10
    Dernier message: 31/05/2003, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo