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

Excel Discussion :

Macro sélection de ligne + ligne précédente


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut Macro sélection de ligne + ligne précédente
    Bonjour à tous,
    Je suis manager d'équipe et tous les mois je dois faire des tri sur tableaux excel afin de ne sélectionner que certaines données. J'ai 22 listings par mois à traiter... Action super répétitive et rébarbative. Je suis certain qu'il y a moyen d'automatiser la procédure via une macro mais j'ai essayé des dizaines de fois et passer des heures à chercher... sans résulat.
    C'est la raison pour laquelle je me tourne vers vous... experts
    Je travaille donc sur des fichiers qui reprenne en gros des dates, des heures, des intervalles de temps et des adresses. J'ai besoin d'une macro qui
    1. m'affiche par jour la première adresse en me mettant en vert l'heure si celle-ci est inférieure à 0:08:08, en orange si elle est supérieure
    2. m'affiche par jour la dernière adresse en me mettant en vert l'heure si celle-ci est supérieure à 0:15:52, en orange si elle est inférieure
    3. les laps de temps supérieurs à 0:45:00 (lignes en jaune) et la ligne les précédents de manière à pourvoir juger des temps de déplacement entre les adresses...
    Les lignes non utilisées doivent être masquées et non supprimées car j'ai parfois besoin de les consulter...
    Je fais fais cela manuellement tous les mois sur 22 fichiers depuis des années et si qq pouvais m'automatiser cela, je serais plus que ravi!
    PS: je vous joins le fichier brut et le fichier mis en forme manuellement pour exemple...
    D'avance, merci.
    Mosquito09-77
    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,

    Afin de ne pas partir de rien, peux-tu poster la macro que tu as écrite ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    Bonjour,
    Ben justement, je n'ai pas de macro... Je fais tout manuellement en filtrant...

  4. #4
    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
    Parce que, apparemment, ta feuille résultat ne correspond pas à ce que tu demandes, ou j'ai mal compris. Par exemple, pourquoi les cellules A6 ou A9 sont elles jaunes alors qu'il n'y a pas de temps à l'intérieur ?

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    Je les ai supprimé pour plus de clarté car ne m'intéresse que ceux de plus de 45'...
    Le temps en F7 par ex. correspond au déplacement entre E7 et E6... En F10, la différence entre E10 et E9...etc...
    Merci

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    La ligne 6 et 9 doivent cependant rester visibles car j'ai besoin de l'adresse en H6 et H9 pour déterminer si le tps de plus de 45' correspond au déplacement entre ces 2 adresses...

  7. #7
    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
    Teste cette macro :

    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
    Sub Traitement()
        Dim C As Range, Plage As Range
        For Each C In Range([E2], Cells(Rows.Count, 1).End(xlUp).Offset(, 4))
            Var = C.Address
            If C.Offset(, -1) <> C.Offset(-1, -1) Then
                If C < #8:08:00 AM# Then
                    C.Interior.ColorIndex = 43
                Else
                    C.Interior.ColorIndex = 44
                End If
            ElseIf C.Offset(, -1) <> C.Offset(1, -1) Then
                If C < #12:15:52 AM# Then
                    C.Interior.ColorIndex = 43
                Else
                    C.Interior.ColorIndex = 44
                End If
            End If
            'If C.Row = 4 Then Stop
            If C.Offset(, 1) > #12:45:00 AM# Then
                C.Offset(-1).Resize(2).EntireRow.Interior.ColorIndex = 36
            End If
            If C.Interior.ColorIndex = xlNone Then C.EntireRow.Hidden = True
        Next C
    End Sub

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    Bonjour Daniel...
    Merci bcp d'avoir planché sur mon cas... et désolé de ne répondre qu'aujourd'hui... Le we a été très chargé.
    J'ai essayé la macro que vous m'avez envoyé mais le seul effet qu'elle a est de colorer toutes les cellules en jaune...
    Mais peut-être est-ce moi qui ne m'y prend pas bien! Je ne suis pas du tout un expert en VBA.
    J'ai juste inséré un module un collé le code dans la fenêtre...
    Pouvez-vous me dire ce qui ne va pas?!?

  9. #9
    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
    Regarde le classeur contenant la macro après exécution de celle-ci.
    Fichiers attachés Fichiers attachés

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    REBonjour Daniel,
    Un tout grand merci encore pour ce travail... Déjà exceptionnel!
    J'ai enfin réussi à faire fonctionner la macro... Toutefois, 2 trucs ne fonctionnent pas chez moi et ils ont une importance capitale...
    Quand j'exécute la macro sur un de mes fichiers... Tout se fait correctement, sauf
    1. le traitement sur les lignes précédents les LAPS > 00:45:00.
    Ex. J'ai obtenu...
    lg 701 > 09/12/2013* 8:00:00 Auf Dem Kamp 9500 Ambleve*
    lg 708 > 09/12/2013* 11:51:00 1:09:00 Herresbach 9500 Meyrode*
    lg 711 > 09/12/2013* 13:31:00 0:58:00 Zur Domane 9500 Butgenbach*
    lg 720 > 09/12/2013* 15:59:00 0:10:00 Sourbrodter Str 9500 Butg.

    Il m'affiche bien les laps > 00:45:00 mais pas les lignes précédentes. Dans l'exemple, il me manque les lignes 707 et 710 en jaune...
    2. Le deuxième problème est qu'il m'affiche toutes les heures de fin de journée en orange. J'aurais souhaité orange si avant 15:52 et vert si après 15:52.
    Merci d'avance,
    Mosquito09-77

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    Re bonjour Daniel,
    Je suis parvenu à corriger le second problème (heure de fin). J'ai juste corrigé l'heure en VBA...
    Par contre le problème des lignes précédent les LAPS > 0:45:00 ?!?
    Merci encore pour votre aide.

  12. #12
    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
    J'ai rectifié les couleurs, pour les fins de journée.

    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
    Sub Traitement()
        Dim C As Range, Plage As Range
        Application.ScreenUpdating = False
        For Each C In Range([E2], Cells(Rows.Count, 1).End(xlUp).Offset(, 4))
            Var = C.Address
            If C.Offset(, -1) <> C.Offset(-1, -1) Then
                If C < #8:08:00 AM# Then
                    C.Interior.ColorIndex = 43
                Else
                    C.Interior.ColorIndex = 44
                End If
            ElseIf C.Offset(, -1) <> C.Offset(1, -1) Then
                If C < #12:15:52 AM# Then
                    C.Interior.ColorIndex = 44
                Else
                    C.Interior.ColorIndex = 43
                End If
            End If
            'If C.Row = 4 Then Stop
            If C.Offset(, 1) > #12:45:00 AM# Then
                C.Offset(-1).Resize(2).EntireRow.Interior.ColorIndex = 36
            End If
            If C.Interior.ColorIndex = xlNone Then C.EntireRow.Hidden = True
        Next C
        Application.ScreenUpdating = True
    End Sub
    1. le traitement sur les lignes précédents les LAPS > 00:45:00.
    Ex. J'ai obtenu...
    lg 701 > 09/12/2013* 8:00:00 Auf Dem Kamp 9500 Ambleve*
    lg 708 > 09/12/2013* 11:51:00 1:09:00 Herresbach 9500 Meyrode*
    lg 711 > 09/12/2013* 13:31:00 0:58:00 Zur Domane 9500 Butgenbach*
    lg 720 > 09/12/2013* 15:59:00 0:10:00 Sourbrodter Str 9500 Butg.
    Ca ne correspond pas à ton fichier de test ? Donne un exemple que je puisse tester.

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    Encore moi...
    J'ai compris je pense...
    Il me met bien la ligne précédente en jaune OK mais il la "masque" avec les autres!!!
    Pouvez-vous modifier le code avec ces données svp??
    D'avance un tout grand merci.

  14. #14
    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
    J'ai compris je pense...
    Tu as de la chance, pas moi. Donne-moi un exemple, s'il te plait.

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    Voici le fichier après avoir fait tourné la macro...
    Il masque les lignes jaunes précédent les LAPS > 00:45:00 (mais pas à tous les coups)... Ici, ex. la 1056 a fonctionné?!?
    Fichiers attachés Fichiers attachés

  16. #16
    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
    Corrigé :

    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
    Sub Traitement()
        Dim C As Range, Plage As Range
        Application.ScreenUpdating = False
        For Each C In Range([E2], Cells(Rows.Count, 1).End(xlUp).Offset(, 4))
            Var = C.Address
            If C.Offset(, -1) <> C.Offset(-1, -1) Then
                If C < #8:08:00 AM# Then
                    C.Interior.ColorIndex = 43
                Else
                    C.Interior.ColorIndex = 44
                End If
            ElseIf C.Offset(, -1) <> C.Offset(1, -1) Then
                If C < #12:15:52 AM# Then
                    C.Interior.ColorIndex = 44
                Else
                    C.Interior.ColorIndex = 43
                End If
            End If
            'If C.Row = 410 Then Stop
            If C.Offset(, 1) > #12:45:00 AM# Then
                C.Offset(-1).Resize(2).EntireRow.Interior.ColorIndex = 36
                C.Offset(-1).EntireRow.Hidden = False
            End If
            If C.Interior.ColorIndex = xlNone Then C.EntireRow.Hidden = True
        Next C
        Application.ScreenUpdating = True
    End Sub

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Par défaut
    Ca marche!!!
    Super... Merci!
    Vous êtes génial!
    MERCI, MERCI, MERCI mille fois!

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

Discussions similaires

  1. [XL-2007] Macro sélection n lignes ouverture nouveau fichier coller
    Par Kestion100 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/03/2013, 19h26
  2. Macro sélection aléatoire de lignes
    Par Pascalou2008 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/03/2008, 23h54
  3. sélection d'une ligne DBGrid par clic
    Par duffman dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/05/2004, 13h45
  4. sélection colonnes et lignes d'une dbgrid
    Par propa dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/05/2004, 10h32
  5. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 00h57

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