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 Excel} Changement de format des dates lors de la suppression de blanc


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 3
    Points
    3
    Par défaut {VBA Excel} Changement de format des dates lors de la suppression de blanc
    Bonjour,

    Je souhaite de l’aide pour le problème suivant sous excel.
    J’ai dans une feuille cinq colonnes importées d’une copie sur un site web.
    La colonne A contient des dates sous la forme jj/mm/aaaa
    Les colonnes B à E continent des chiffres sous la forme 123,45
    Dans la configuration de Windows XP, le format de la date est jj/MM/aaaa et j’utilise Excel 2002 sp3.

    Chaque valeur est précédée et suivie d’un espace insécable (Char(160) dans ascii) que je matérialise ici sous la forme d’une *.
    Exemple : *01/07/2007*, *15/08/2006* ou *452,89*

    Mon problème est le suivant : lors de l’exécution du code vba pour remplacer cet espace insécable, certaines dates sont transformées en format anglo-saxon : 01/07/2007 (1er juillet 2007) devient 07/01/2007 (7 janvier 2007) alors que le 15/08/2006 reste le 15/08/2006.

    Avant le passage du code la colonne A a pour format Standard, le changement de ce format en jj/mm/aaaa ne résout pas le problème.

    Pour les colonnes B à E la restitution est correcte.

    Voici le code que j’utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("a1").Select     
    ActiveSheet.UsedRange.Select
    For Each Cellule In ActiveSheet.UsedRange
           Cellule. Replace Chr(160), ""
    Next

    Merci pour votre aide

  2. #2
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonjour pbfby

    essaye cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("a1").Select 
    ActiveSheet.UsedRange.Select
    For Each Cellule In ActiveSheet.UsedRange
    Cellule = cdate(mid(cellule.value,2,10))
    Next
    bonne journée

  3. #3
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 783
    Points : 3 036
    Points
    3 036
    Par défaut
    alors que le 15/08/2006 reste le 15/08/2006.
    Excel a pourtant essayé de convertir mais le 15ème mois de l'année n'est pas encore connu et donc, il laisse tel que


    Je te propose ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("a1").Select     
    ActiveSheet.UsedRange.Select
    For Each Cellule In ActiveSheet.UsedRange
           Cellule. Replace Chr(160), "'"
    Next
    càd de remplacer l'espace par un guillement (single quote).

    Christophe

  4. #4
    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 543
    Points
    15 543
    Par défaut
    Bonjour pbfby, bienvenue sur le forum.
    Pense aux balises code pour faciliter la lecture
    Tu peux essayer ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("a1").Select     
    ActiveSheet.UsedRange.Select
    For Each Cellule In ActiveSheet.UsedRange
           Cellule. Replace Chr(160), ""
           Cellule.value = Format(cdbl(Cellule), "dd/mm/yyyy")
    Next
    Pas testé mais si ce n'est pas ok, alors teste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("a1").Select     
    ActiveSheet.UsedRange.Select
    For Each Cellule In ActiveSheet.UsedRange
           Cellule. Replace Chr(160), ""
           Cellule.value = Format(cdbl(cdate(Cellule)), "dd/mm/yyyy")
    Next
    Pas testé non plus. Si pas ok, je regarderai de plus près
    A+

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =DATEVALUE(mid(macellule.value,2,10))

  6. #6
    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 543
    Points
    15 543
    Par défaut
    Je reprends mon code pour l'appliquer sur la première colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("a1").Select     
    ActiveSheet.UsedRange.Select
    For Each Cellule In ActiveSheet.UsedRange
           Cellule. Replace Chr(160), ""
           if Cellule.column = 1 then Cellule.value = Format(cdbl(cdate(Cellule)), "dd/mm/yyyy")
    Next
    Tu dis
    A+

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Résolu
    La solution préconisée par ouskel'n'or dans son dernier message résout mon problème.

    Merci à tous pour votre aide.

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

Discussions similaires

  1. [VBA-E]Pb de format de date d'EXCEL
    Par tangjuncn dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2007, 12h34
  2. Réponses: 4
    Dernier message: 15/03/2007, 07h02
  3. [VBA-EXCEL] format de date lors d'écriture dans une cellule
    Par ustilago dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2007, 17h44
  4. Format de date lors export vers Excel
    Par Celia1303 dans le forum Access
    Réponses: 7
    Dernier message: 19/12/2006, 07h23
  5. [VBA] Pb de format des dates dans un état
    Par linda15975 dans le forum IHM
    Réponses: 45
    Dernier message: 21/06/2005, 14h49

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