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 :

[VBA-E]Tronquer une DATE


Sujet :

Macros et VBA Excel

  1. #21
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    Il ne faut pas que je fasse une modification de format, mais que j'enleve en DUR l'heure. Car aprés je doit faire un tableau croisé dynamique classé par date, sans tenir compte des heures

    Dim DerniereLigne As Double
    Dim extrac_dates As String
    'recupere la dernere ligne occupé dans la colonne A
    '(jusqu'à ce qu'une ligne soit vide)
    DerniereLigne = ActiveSheet.Range("M2").CurrentRegion.End(xlDown).Row

    'pour chacune de ces lignes on ne garde que les 10 premeirs caracteres

    For i = 1 To DerniereLigne
    extrac_dates = Cells(i, 1)
    Cells(i, 1) = Left(extrac_dates, 10)
    Next
    Mais aucune modification dans ma colonne M
    j'ai toujours: 12/05/2006 07:28:03

  2. #22
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Utilise la fonction "Format" que t'a donné Bbil en utilisant l'aide tu devrais pouvoir trouver ton bonheur normalement

  3. #23
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    On ma donner un code source sur ce topic. Je précise que je debute.
    Si je commence a partir a droite et a gauche, sa ne rime plus a rien.

    La fonction FORMAT ne fera que modifier l'apparence. Mais si on clic sur la cellule concerné, on s'apperçois qu'en dur il y a toujours l'heure.
    Il faut donc tronquer

    J'ai un code de base. Reste plus qu'a le modifier légérement je pense non ?

  4. #24
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Pitoux
    On ma donner un code source sur ce topic. Je précise que je debute.
    Si je commence a partir a droite et a gauche, sa ne rime plus a rien.

    La fonction FORMAT ne fera que modifier l'apparence. Mais si on clic sur la cellule concerné, on s'apperçois qu'en dur il y a toujours l'heure.
    Il faut donc tronquer

    J'ai un code de base. Reste plus qu'a le modifier légérement je pense non ?
    ben la ligne de code que j'ai posté plus haut c'est pour modifier ton "code de base", avec la fonction Format.. ? tu la essayé ?

  5. #25
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    OK 1000 excuses :p

    Donc au final sa donne

    Dim DerniereLigne As Double
    Dim extrac_dates As Date
    'recupere la dernere ligne occupé dans la colonne A
    '(jusqu'à ce qu'une ligne soit vide)
    DerniereLigne = ActiveSheet.Range("M2").CurrentRegion.End(xlDown).Row

    'pour chacune de ces lignes on ne garde que les 10 premeirs caracteres

    For i = 1 To DerniereLigne
    extrac_dates = Cells(i, 1)
    Cells(i, 1) = Format(extrac_dates, "dd/mm/yyyy")
    Next
    Il rebloque sur "extrac_dates = Cells(i, 1)"
    Valeur de extrac_dates = 00:00:00

    On est bien d'accord que seul la colonne M est concerné par cette procédure ?
    Elle ne séléectionne pas tout mon tableau ?

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par bbil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Cells(i, 1) = Format(extrac_dates,"dd/mm/yyyy")
    ca revien à ce que j'ai mi là non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "dd/mm/yyyy"
    enfin peu importe

    ps : bravo jviens de voir que t'es passé modérateur bbil

  7. #27
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Pitoux
    On est bien d'accord que seul la colonne M est concerné par cette procédure ?
    Elle ne séléectionne pas tout mon tableau ?
    non la vu qu'il n'y as rien devant Cells.. tu parcours la ligne i de la colonne 1 de la feuille Active => d'ou la colonne A , remplace le 1 par 13 (M)

  8. #28
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Elstak
    ca revien à ce que j'ai mi là non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "dd/mm/yyyy"
    enfin peu importe

    ps : bravo jviens de voir que t'es passé modérateur bbil
    non !!..

    ton code modifie le fomat d'affichage de la cellule sans en changer la valeur..!
    le mien , modifie la valeur de la cellule en y affectant le résultat de la fonction format..

  9. #29
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    ouep c'est vrai ta raison bbil

    sinon pour info pitoux, pour utiliser cells, t'a :

    Cells (NumeroDeLaLigne,NumeroDeLaColonne) donc comme l'a dit bbil M correspond à 13,


  10. #30
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    OK bon alors la version donne (pour la colonne M)

    Dim DerniereLigne As Double
    Dim extrac_dates As Date
    'recupere la dernere ligne occupé dans la colonne A
    '(jusqu'à ce qu'une ligne soit vide)
    DerniereLigne = ActiveSheet.Range("M2").CurrentRegion.End(xlDown).Row

    'pour chacune de ces lignes on ne garde que les 10 premeirs caracteres

    For i = 2 To DerniereLigne
    extrac_dates = Cells(i, 13)
    Cells(i, 13) = Format(extrac_dates, "dd/mm/yyyy")
    Next
    Cette fois mes champs on été modifié
    05/05/2006 00:00:00
    Toute mes heures sont passé a 00:00:00

    Moi je ne voudrais plus d'heure. soit 05/05/2006

  11. #31
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    bizarre ca je pense

    normalement le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 13) = Format(extrac_dates, "dd/mm/yyyy")
    devrait n'afficher que la date sans l'heure

    Ajoute toujours ca avant le "Next" perso jvois pas d'autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(i, 1) = Left(Cells(i, 1), 10)
    au risque de me faire taper par bbil
    left et fait pour traiter des chaîne de caractéres .. pas des dates ! (voir aide en ligne..)
    mais chez moi ca fonctionne

  12. #32
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    Plus personne pour m'aider ?
    Si besoin je peux envoyer mon Fichier XLS par email

    Par avance merci
    Car j'ai beau chercher et je ne trouve pas

  13. #33
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    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 hu()
        Dim extrac_date As Date
        Dim DerniereLigne As Double
        'recupere la dernere ligne occupé dans la colonne A
        '(jusqu'à ce qu'une ligne soit vide)
        DerniereLigne = Worksheets(1).Range("C1").CurrentRegion.End(xlDown).Row
     
        'pour chacune de ces lignes on ne garde que les 10 premeirs caracteres
        For i = 1 To DerniereLigne
            extrac_date = Cells(i, 3)
            Cells(i, 3).Select
            Selection.NumberFormat = "d/m/yyyy"
        Next
     
    End Sub
    pour moi ca c'est bon (oublie pas de bien changer pour les colonne... moi jai pris C)

    tout se apsse bien chez moi sauf que les "nouvelles" date sont affichées à gauche de la cellule alors que normalement elle sont à droite mais dès lors qu'on en selectionne 1 (en entre dans la cellule pour la modifier) et, meme sans rien modifier, qu'on clique sur une autre cellule, la date se remet à droite.

    Ca je comprend pas pourquoi mais on a bien jsute la date sans l'heure

  14. #34
    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
    Mais si, y'a toujours quelqu'un... La preuve, 31 posts pour un pb de format de date...
    Deux solutions
    La première est de tenter de mettre ta colonne au format voulu.
    Si ça ne marche pas, la solution d'Elstak devrait fonctionner mais tu dois préciser que c'est une date (pas un string) et l'appliquer pour chaque cellule de ta colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = PremièreLigne to dernièreLigne
         Cells(i, 13) = Format(cdate(extrac_dates), "dd/mm/yyyy")
    Next
    Tu dis

  15. #35
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    OK, merci

    BOn je viens de tester :

    Sub hu()
    Dim extrac_date As Date
    Dim DerniereLigne As Double
    'recupere la dernere ligne occupé dans la colonne A
    '(jusqu'à ce qu'une ligne soit vide)
    DerniereLigne = Worksheets(1).Range("C1").CurrentRegion.End(xlDown).Row

    'pour chacune de ces lignes on ne garde que les 10 premeirs caracteres
    For i = 1 To DerniereLigne
    extrac_date = Cells(i, 3)
    Cells(i, 3).Select
    Selection.NumberFormat = "d/m/yyyy"
    Next
    Alors oui sa change bien mon format a D/M/YYYY (09/05/2006)

    par contre quand je clic sur une cellule date, pour voir en detail le contenus de ma celule je vois toujours
    09/05/2006 08:51:27

    Et justement je veux supprimer cette heure. Car apres je doit faire un tableau croisé dynamique, sans que ces heures soit prise en compte

  16. #36
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Alors oui sa change bien mon format a D/M/YYYY (09/05/2006)
    c'est louche si t'a ca, normalement tu devrait avoir (9/5/2006).
    Si tu veux (09/05/2006) alors met DD/MM/YYYY.

    par contre quand je clic sur une cellule date, pour voir en detail le contenus de ma celule je vois toujours
    09/05/2006 08:51:27
    bizarre chez moi jai juste la date l'heure a completement ete virée


    sinon essaie la solution d'ouskel.

  17. #37
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    je peux t'envoyer par email mon fichier XLS ?
    Si oui donne le mail en Message Privé

  18. #38
    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
    Non, on va traiter ce sujet sur le forum car ça peut aider quelqu'un d'autre à l'avenir.
    J'ai une idée... Je recherche ce que j'ai fait et je reviens

    A tout'

  19. #39
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 5
    Points
    5
    Par défaut
    OK alors je tente de mieux m'expliquer.
    Je fait une extraction d'une base SQL (liste d'appel telephonique) sur une feuille XLS

    Dans la colonne M de mon fichier excel se trouve la date et heure

    12/05/2006 14:44
    12/05/2006 14:45
    12/05/2006 14:50
    12/05/2006 14:51
    12/05/2006 14:54
    12/05/2006 14:54

    Quand je clic dans une de ces celulles, je vois le detail (A coté de FX)
    et cela donne

    12/05/2006 14:44:15
    12/05/2006 14:45:45
    12/05/2006 14:50:21
    12/05/2006 14:51:34
    12/05/2006 14:54:14
    12/05/2006 14:54:23

    Ayant besoin de faire un tableau croisé dynmarique par jour, il faut que je fasse disparaitre les heures.

    Hors les Macro actuelle ne font que changer l'affichage dans ma feuille Excel
    c'est a dire que cela donne

    12/05/2006
    12/05/2006
    12/05/2006
    12/05/2006
    12/05/2006
    12/05/2006

    Mais quand je clic sur une de ces cellules je me retrouve avec

    12/05/2006 14:44:15
    12/05/2006 14:45:45
    12/05/2006 14:50:21
    12/05/2006 14:51:34
    12/05/2006 14:54:14
    12/05/2006 14:54:23

    Mais il faut impérativement supprimer définitivement ce champ des heures

    Voila j'espére avoir correctement expliqué

  20. #40
    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
    Avant tout, es-tu sûr d'avoir mis exactement le code que je t'ai donné ou as-tu modifié quelque chose ? Le cas échéant, donne plus de code.
    Mais je me permets de me douter d'une modif malencontreuse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(i, 13) = Format(cdate(extrac_dates), "dd")+"/" + Format(cdate(extrac_dates), "mm")+ "/" + Format(cdate(extrac_dates), "yyyy")
    Tu essaies ça mais le code précédent devrait fonctionner si tu ne traites pas le contenu de la cellule mais bien la variable extrac_dates

    Tu dis

Discussions similaires

  1. [VBA-excel] Affecter une date à la première cellule pleine
    Par DVano dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 10/11/2006, 12h06
  2. [VBA]Filtre sur une date
    Par illight dans le forum SDK
    Réponses: 2
    Dernier message: 09/11/2006, 09h45
  3. [VBA-E] choisir une date dans un calendrier
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/03/2006, 09h05
  4. Comment tronquer une date (supprimer les heures)
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 27/01/2006, 15h58
  5. [VBA Excel] convertir une date francaise au format anglais
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 16h52

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