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

VBA Access Discussion :

Repérer des dates au format jj.MM.A pour les mettre en JJ/MM/A en VBA


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut Repérer des dates au format jj.MM.A pour les mettre en JJ/MM/A en VBA
    Bonjour,

    J''intègre des données dans une table au format texte. J'ai besoin ensuite de repérer les données au format jj.MM.AAAA pour les transformer en JJ/MM/AAAA.

    C'est un programme qui permet d'intégrer des tables dont les champs par leur nombre et leur nom diffèrent.
    Je ne peux donc pas faire une sélection sur le nom du champ.
    Je dois créér une recherche sur le format jj.MM.AAAA car je ne peux pas non plus me permettre de modifier tous les points par des / car il ya aussi des chiffres dans d'autres colonnes.


    C'est quelquechose que je n'ai encore jamais fait alors je susi preneur de toute idée!

    Merki!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pourquoi intégres-tu tes données au format texte, pourquoi ne mets tu pas ton champ au format date ?

    Starec

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    J'intègre l'ensemble des données au format: 1 parce que l'on me l'a demandé et 2 parce que quand j'intègre mes données depuis mon fichier texte je crée un masque d'import temporaire qui délimite les champs sur la première ligne via un séparateur puis qui donne des règles import identiques à tous (texte, longueur 255....) à ce stade il me serait impossible de faire la dif en un champ texte et un champs date.

    Donc maintenant je dois pouvoir faire une recherche dans la base sur un format de données.
    Peut on faire un test pour savoir si une données est un chiffre, une lettre ou une ponctuation?

    Merci de l'aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Pour faire des recherches de types de données, tu as plusieurs fonctions

    IsNumeric
    IsDate

    Je te renvoie sur pour plus d'infos.

    Starec

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub essai()
     
        Dim dat, check
     
     
        dat = "30.12.2003"
        check = IsNumeric(Left((dat), 2))
        MsgBox (check)
        MsgBox ((Left((dat), 3)) = ".")
    End Sub
    La 1ere reponse est vrai et la 2eme est fausse.
    Alors que je mets le même point.

    Sais tu pourquoi?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    j'ai trouve pourquoi et c'est gros comme une maison!

    Je testais Trois caratères!

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Alors j'arrive à identifier mes champs jj.MM.AAAA
    maintenant il faut que je reussisse à metter à jour la valeur!
    Bie sur ca plante! Voici mon code
    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
     
    Dim h As TableDef
            Dim TABLEDATE As DAO.Recordset
            Dim Db3 As DAO.Database
            Set Db3 = CurrentDb()
            Set TABLEDATE = Db3.OpenRecordset(Tablecible)
            Set h = Db3.TableDefs(Tablecible)
            n = h.Fields.Count
     
            TABLEDATE.MoveFirst
            While Not TABLEDATE.EOF
                For i = 0 To n - 1
                dat = TABLEDATE.Fields(i)
                Debug.Print dat
                TEST1 = IsNumeric(Left(dat, 2))
                TEST2 = (Right((Left((dat), 3)), 1) = ".")
                TEST3 = IsNumeric(Right((Left((dat), 5)), 2))
                TEST4 = (Right((Left((dat), 6)), 1) = ".")
                TEST5 = IsNumeric(Right(dat, 4))
                If TEST1 = True And TEST2 = True And TEST3 = True And TEST4 = True And TEST5 = True Then
                    dat = Replace((dat), ".", "/")
                    TABLEDATE.Fields(i) = dat
                 End If
     
                Next i
            Wend
    Ca plante au moment du LEDATE.Fields(i) = dat. Me faudrait il un update.Si oui faut il forcement une requete SQl ? et mon champs ici s'appelle TABLEDATE.Fields(i).

    Chaud cacao chaud chaud chaiu cacao!

  8. #8
    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
    l'assistant import comporte le choix d'un délimiteur de date

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par guiguisb Voir le message
    J'intègre l'ensemble des données au format texte: 1 parce que l'on me l'a demandé et 2 parce que quand j'intègre mes données depuis mon fichier texte je crée un masque d'import temporaire qui délimite les champs sur la première ligne via un séparateur puis qui donne des règles import identiques à tous (texte, longueur 255....) à ce stade il me serait impossible de faire la dif en un champ texte et un champs date.

    Donc maintenant je dois pouvoir faire une recherche dans la base sur un format de données.
    Peut on faire un test pour savoir si une données est un chiffre, une lettre ou une ponctuation?

    Merci de l'aide.
    Donc non le masque d'import n'est pas une solution pour moi! Mas merci qd meme!
    Une prite solutuin pour mettre à jour la valeur dans la table!C'ets le dernier point que j'ai à traiter!

  10. #10
    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
    CDate(Replace(x, ".", "/"))

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Moi j'ai ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL1 = "UPDATE Tablecible SET TABLEDATE.Fields(i) = dat" 
    DoCmd.RunSQL SQL1
    CA foire. Je pense que je foire au niveau de la déclaration de la table!
    le nom de la table est une variable contenure dans Tablecible. dat est la variable qui contient la nouvelle vleur à mettre dans la table et TABLEDATE est le recorset qui ouvre la table Tablecible!

    Je n'ai rien en dur! ca doit etre la c.......dans le pate! NON

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Personne n'a une solution!
    Je seche grave là!

    Il faut imaginer que le code fait tout et que rien n'est en dur! ni table, ni champs!

    Merci du coup de main pour rédiger le SQL update.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/10/2008, 09h36
  2. Comment trier des dates au format 22/11/2008?
    Par jolzeviking dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/06/2008, 16h06
  3. [VBA-E] Gestion des dates selon format de départ
    Par Gamal le Celte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/02/2007, 14h41
  4. [Oracle] traitement des dates au format string
    Par shaftJackson dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2007, 18h25
  5. [Date] Comparer des dates au format mySQL "date
    Par Marc_P dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/10/2004, 15h15

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