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 :

Date mal restituée après passage dans une variable tableau [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    France
    Inscrit en
    Juillet 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : France
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 74
    Par défaut Date mal restituée après passage dans une variable tableau
    Bonjour,

    J'ai réalisé une macro afin de traiter les données d'une feuille excel.

    Je rencontre un soucis lors de la restitution des dates de la page initiale. Les mois et les jours sont inversés pour certaines dates... Je n'arrive pas à les restituer de façon correcte.

    Si quelqu'un a une idée, je suis preneur pck je sèche un peu...

    Je joins un jeu de donnée. Le code est le suivant :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Private Sub traitement()
        Dim Tableau() As String
     
        Dim Lig As Long
        Dim i As Integer
        Dim j As Integer
        Dim numero
        Dim nom
     
     
        Lig = 2 'première ligne à vérifier
        Do While Not IsEmpty(Range("A" & Lig))
            Lig = Lig + 1
     
        Loop
        ReDim Tableau(Lig, 6)
     
     
        For i = 1 To Lig
            If Range("A" & i) = "No. Poste :" Then
                numero = Cells(i, "B")
                nom = Cells(i - 1, "B")
     
            End If
            If IsDate(Range("A" & i)) Then
               For j = 1 To 4
                    Tableau(i, j) = Cells(i, j)
                Next j
     
            End If
            Tableau(i, 5) = numero
            Tableau(i, 6) = nom
        Next i
     
        Sheets.Add
        ActiveSheet.Name = "feuilleTransformee"
        Sheets("feuilleTransformee").Cells(1, 1) = "date"
        Sheets("feuilleTransformee").Cells(1, 2) = "recepteur"
        Sheets("feuilleTransformee").Cells(1, 4) = "temps"
        Sheets("feuilleTransformee").Cells(1, 5) = "entrant"
        Sheets("feuilleTransformee").Cells(1, 6) = "nom entrant"
        For i = 1 To Lig
     
                For j = 2 To 6
                   Sheets("feuilleTransformee").Cells(i + 1, j) = Tableau(i, j)
                   Sheets("feuilleTransformee").Cells(i + 1, "A") = Format(Tableau(i, 1), "dd/mm/yyyy hh:mm")
                Next j
        Next i
        Range("a1:a" & Lig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    MsgBox ("finish")
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Essaye de remplacer Tableau(i, j) = Cells(i, j) par Tableau(i, j) = Cells(i, j).Text.

  3. #3
    Membre confirmé
    Homme Profil pro
    France
    Inscrit en
    Juillet 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : France
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 74
    Par défaut
    Bonjour,

    Merci pour la réponse !

    Le résultat reste le même...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour à tous,

    pour palier ce problème j'avais trouvé la solution de passer par la valeur numérique de la date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Tableau(i, j) = CDbl(Cells(i, j))
    mais ça oblige de revoir la boucle d'initialisation du tableau.

    A+

  5. #5
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonjour,

    Le tableau serait déclaré avec des éléments de type Variant, il n'y aurait pas de conversion implicite.
    Je n'ai pas testé mais le String n'est pas terrible.

  6. #6
    Membre confirmé
    Homme Profil pro
    France
    Inscrit en
    Juillet 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : France
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 74
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses.

    J'ai finalement pu m'en sortir en déclarant le tableau en Variant et en convertissant en CDate(tableau( i, j)) lors de la mise en cellule.

    Cordialement,

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

Discussions similaires

  1. Gestion de dates et nombre de jours dans un tableau
    Par Décibel dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 29/11/2016, 21h31
  2. [POO] afficher un message d'erreur après passage dans une BD
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2008, 16h04
  3. Réponses: 2
    Dernier message: 26/12/2006, 12h49

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