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 :

Tri date avec format spécial


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Tri date avec format spécial
    Bonjour à tous.
    Me voila confronté à un problème que je n'arrive pas à solutionner seul.
    Un outil m'exporte un fichier excel qui répertorie une liste d'appels reçus par un call center. Une des colonnes du fichier excel est la date et l'heure à laquelle l'appel a été reçu.
    J'aimerais faire un tri de cette colonne avec une macro :
    - insérer une ligne vide tous les 1/4 d'heure pour plus de lisibilité (ou mettre un code couleur, peu importe)
    - et surtout afficher le nombre d'appels reçus par 1/4 d'heure dans une userform.
    Mon gros souci est que la colonne "date et heure" est de ce format "08/01/2008 07:57:42". Je ne vois donc pas comment pouvoir trier seulement l'heure (sachant que j'analyse tous les appels d'une seule et meme journée, je me fiche de la date)

    J'espère avoir été clair et que vous pourrez me donner un sérieux coup de main car sur le coup je suis bien coincé.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour et bienvenue sur le Forum Office de DVP.

    Tu trouveras dans cet article de Maxence Hubiche Les Fonctions Date/Heure au chapitre III - B des fonctions d'extractions pour récupérer ce que tu veux de ta chaine.

    Starec

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup à toi je vais jeter un coup d'oeil et éventuellement poser quelques question au cas où.
    Bonne nuit, ou peut etre bonne journée vu l'heure.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je vois bien le paragraphe qui peut m'aider, avec les fonctions hour/minute/second mais je ne vois en aucun cas comment l'appliquer sachant qu'en plus j'ai "jour/Mois/année" qui me gêne dans ma cellule. Désolé, mais je début en VBA.

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    Google est ton ami, il faut lui demander aussi pas mal hein ca rime ... :p
    Je pense que ceci devrait te venir en aide.
    A++
    Qwaz

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    T'imagines bien qu'avant d'atterir ici j'ai fouillé pas mal de temps un peu partout..
    Merci pour le lien.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    une façon simple pour ce que tu veux..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a$ = Now
    t = Split(a$, " ")
    Heure = t(1)
    A+
    Edit:
    Et je suppose, puisque tu travail avec les quarts d'heure tu a besoin des minutes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    t = split(Heure,":")
    't(0)=les heures
    't(1)=les minutes
    't(2)=les secondes
    Edit2:
    et encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a$ = Now
    t = Split(Replace(a$, " ", ":"), ":")
    't(1)=les heures
    't(2)=les minutes
    't(3)=les secondes

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je suis désolé mais je débute vraiment.
    A quoi correspond la valeur "a$" ?

    Dans ma colonne E du tableur j'ai par exemple : "08/01/2008 08:18"
    Je veux dans une userform pouvoir indiquer parfois la date "08/01/2008" ou parfois uniquement l'heure "08:18", entre autre pour pouvoir trier par 1/4 d'heure.

    Si je reprends ton code,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a$ = Now
    t = Split(Replace(a$, " ", ":"), ":")
    't(1)=les heures
    't(2)=les minutes
    't(3)=les secondes
    Cela signifie que je remplace a$, " ", ":" par ":" ?

    Merci de m'aider je suis paumé.

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par jojom
    Mon gros souci est que la colonne "date et heure" est de ce format "08/01/2008 07:57:42". Je ne vois donc pas comment pouvoir trier seulement l'heure (sachant que j'analyse tous les appels d'une seule et meme journée, je me fiche de la date)
    Tu ne te fiches sans doute pas de la date, sinon tu auras les heures de tous les jours.
    Ce que je te propose est de convertir ta limite inférieure (l'heure de début de ton analyse) en N° de série, de convertir ta colonne en format "Standard", ta limite supérieure (heure de fin) en N° de série, ainsi, entre début et fin pris dans ta base de données, tu auras la fourchettes que tu souhaite avoir
    Pour avoir le N° de série d'une date, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NoSérie = cdbl(LadateEtLheureDeDébut)
    ou, si VBA ne reconnais pas une heure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NoSérie = cdbl(Cdate(LadateEtLheureDeDébut))
    Idem pour la fin de ta fourchette
    Tu testes et tu prends l'un ou l'autre code (celui qui fonctionne...)
    Une fois que ta colonne est formatée elle aussi, tu peux faire une recherche sur ton No De série dans la colonne avec Find, avec le paramètre Lookat:=XlPart.
    Quand tu as terminé, tu remets ta colonne au format Date et Heure
    Bon courage

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Je 'décortique'...
    a$ est une ancienne façon de déclarer une variable en string
    cela équivaut à
    Dim a as string 'désolé certaines habitudes sont difficile à oubliés.
    a la place de Now, tu met la valeur de ta cellule
    a$=cells(X,5) par exemple
    ensuite replace va transformer "08/01/2008 08:18" en "08/01/2008:08:18"
    ensuite split va séparer tout ce qu'il y a entre les ":" dans le tableau t
    d'où

    't(0)=La date
    't(1)=les heures
    't(2)=les minutes
    Je crois que tu à toutes les données nécessaires.
    A+

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Que de "chipotages"...

    Je ne vois franchement pas en quoi la présence des dates pose problème puisqu'il est possible d'extraire les minutes d'une date entière.

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Pour démontrer ce que j'avance, voici un code complet.
    J'espère que tu sauras l'adapter à tes besoins.
    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
    Sub test()
      Dim rRange As Range
      Dim rCell As Range
      Dim wks1 As Worksheet
      Set wks1 = ThisWorkbook.Sheets("Feuil1")
      Set rRange = Range(wks1.Cells(1, 1), wks1.Cells(wks1.Cells.SpecialCells(xlLastCell).Row, 1))
      For Each rCell In rRange
        If Not LeQuart(rCell.Value) = LeQuart(rCell.Offset(1, 0)) Then
          rCell.EntireRow.Borders(xlEdgeBottom).Weight = xlMedium
        End If
      Next rCell
    End Sub
     
    Function LeQuart(dTemps As Date) As Integer
      LeQuart = ((DatePart("h", dTemps) * 60) + DatePart("n", dTemps)) \ 15
    End Function
    Ce qui donne:
    Images attachées Images attachées  

Discussions similaires

  1. fonction date avec format forcé
    Par dave.bonnin dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/06/2013, 08h17
  2. Tri Date avec Multisort
    Par Super_carotte dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2012, 15h52
  3. Date au format spécial
    Par _Yohan_ dans le forum Excel
    Réponses: 8
    Dernier message: 11/11/2009, 14h20
  4. récupérer des dates avec format
    Par lilly74 dans le forum Macro
    Réponses: 3
    Dernier message: 19/10/2009, 09h08
  5. recherche sur plage date avec format different
    Par maysa dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/02/2008, 09h38

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