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 :

Problème de format : les dates.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut Problème de format : les dates.
    Bonjour,

    J'ai un problème de format sur ce programme.
    Je me débrouille en vba mais la manipulation des dates, j'ai beau lire des tuto et tout ce qu'il faut mais je coince.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Function IdentificationDate()
     
        Dim j   As Integer
        Dim jour As Integer
        Dim mois As Integer
        Dim année As Integer
        Dim date_symbole As Date
        Dim date_taper As Date
        Dim date_reel As Date
     
     
        j = 4
     
        While Sheets("Programme").Cells(j, 2) <> ""
     
            date_taper = Sheets("Programme").Cells(j, 2)
     
            If Left(Sheets("Programme").Cells(j, 11), 1) = "&" Then
                jour = Mid(Sheets("Programme").Cells(j, 11), 2, 2)
                mois = Mid(Sheets("Programme").Cells(j, 11), 4, 2)
                annee = Mid(Sheets("Programme").Cells(j, 11), 6, 2)
                date_reel = jour & mois & annee
     
            ElseIf Left(Sheets("Programme").Cells(j, 11), 1) = "%" Then
                jour = Mid(Sheets("Programme").Cells(j, 11), 2, 2)
                mois = Mid(Sheets("Programme").Cells(j, 11), 4, 2)
                annee = Mid(Sheets("Programme").Cells(j, 11), 6, 2)
                date_reel = jour & mois & annee
     
            Else
                    date_reel = date_taper
            End If
     
            Sheets("Programme").Cells(j, 16) = date_reel
            j = j + 1
        Wend
     
     
     
    End Function
    Enfaite soit il y a un symbole dans un commentaire et je prends les 6 chiffres qui suit le symbole ce qui correspond à une date. Exemple : &061014 (pour 6 octobre 2014).

    Si aucun symbole je prends la date qui est dans la deuxième colonne écrit de cette manière : 06.03.2014.

    Ce que je veux c'est avoir une date uniformisée dans ma colonne 16.

    Je pense qu'il n'y a rien de compliquer mais pour moi c'est un arrache cheveux looool

    Merci à celui qui m'enlevera cette épine du pied... rrrrrr

    Cordialement

    Vincent

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut
    Bonjour,

    N'y a t-il pas incompatibilité entre la déclaration de tes variables (integer) et un traitement chaine de caractères (string) ?

    Que te restitue présentement ton code, quelle erreur te renvoie t-il ?

    Cordialement,

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Franchement, je ne sais pas. Je ne comprends pas bien les dates. Je n'ai jamais vu de vrai exemple, et chaque exemple avec les dates me paraissent toutes particulières.

    Il me renvoie problème de format.

    Voici un fichier pour que tu comprenne mieux. Rien de bien méchant dans la forme. lol. Mon script n'est pas dedans. J'ai juste fais un classeur exemple.

    Franchement je remercie celui qui me trouve la solution.


    Cordialement Vincent
    Fichiers attachés Fichiers attachés

  4. #4
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour
    Au vu de l'exemple donner et a ce que j'en ai compris
    c'est a dire que si la valeur de la colonne 2 ne commence pas par &, on prend la valeur de la colonne 1

    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
    Sub IdentificationDate()
        Dim r As Integer
        Dim a$
        r = 1
         While Sheets("feuil1").Cells(r, 2) <> ""
             If Cells(r, 2) Like "&*" Then
            a = Replace(Cells(r, 2), "&", "")
            Else
            a = Replace(Cells(r, 1), ".", "")
            End If
             Sheets("feuil1").Cells(r, 3) = CDate(Left(a, 2) & "/" & Mid(a, 3, 2) & "/" & "20" & Right(a, 2))
            r = r + 1
        Wend
     
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur STC, systèmes de supervision
    Inscrit en
    Juin 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur STC, systèmes de supervision
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 58
    Par défaut
    Bonjour,

    Ton code semble correct, bien que dans un cas tu as 8 chiffres et des points (06.03.2014) et dans l'autre tu as 6 chiffres et pas de séparateur (060314)...
    Sinon, as-tu formaté tes cellules de la colonne 16 comme étant des dates? (sélection des cellules > click droit > format des cellules > dates)
    Je me rappelle avoir fait un fichier où je manipulais des dates et il était très délicat, d'où cette idée..

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut calcul de date
    Bonsoir,

    Une proposition à bien étudier, ligne par ligne, presque mot par mot.
    Car rien n'est moins profitable que le copier/coller
    Puis revenir si nécessaire pour toute question.

    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
    28
    29
    30
    31
    32
    33
    34
    Option Explicit
     
    Public Sub calcul_date()
     
    Dim derlign As Long
    Dim i As Long
    Dim valeur As Long
    Dim jour As Long, mois As Long, an As Long
    Dim Tblo As Variant
     
    With Worksheets(1)
        'recherche de la dernière ligne informée
        derlign = .Cells(.Rows.Count, 1).End(xlUp).Row
        'balayage
        For i = 1 To derlign
            If Left(.Cells(i, 2), 1) = "&" Then
                'valeur numérique des 6 derniers caractères de la colonne B
                valeur = Right(.Cells(i, 2), 6) + 0
                'calcul des éléments de la date
                jour = Int(valeur / 10000)
                an = valeur - 100 * Int(valeur / 100)
                mois = (valeur - jour * 10000 + an) / 100
            Else
                'segmentation de la valeur par délimitation sur le caractère "."
                Tblo = Split(.Cells(i, 1), ".")
                jour = Tblo(0)
                mois = Tblo(1)
                an = Tblo(2)
            End If
            'Clacul de la date en fonction des éléments
            .Cells(i, 3).Value = Format(DateSerial(2000 + an, mois, jour), "dd/mm/yy")
        Next i
    End With
    End Sub

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/04/2013, 09h31
  2. Problème de format de date
    Par pilou0013 dans le forum Access
    Réponses: 2
    Dernier message: 11/06/2006, 22h56
  3. [VB.net] problème de format de date
    Par cladsam dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/10/2005, 18h27
  4. [SQL][DateTime] Formater les dates en SQL
    Par Husqvarna dans le forum C++Builder
    Réponses: 3
    Dernier message: 09/11/2004, 21h36
  5. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19

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