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 tableau et date


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
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Par défaut Problème tableau et date
    Bonjour forum,

    j'alimente un tableau à partir d'une liste d'une feuille excel, et ensuite je retranscris les données de mon tableau sur une autre feuille excel. Le transfert se fait bien excepté les dates.
    La macros inverse les mois et les jours, exemple dans ma liste de données originale, les dates sont 06/09/11, lorsque je transpose mon tableau il indique 09/06/11, mais il inverse les mois et jour seulement quand c'est possible, exemple 28/08/11, après mon transpose il garde la même valeur.

    Je ne comprend pas pourquoi il inverse les jours et les mois, j'ai testé avec le mode pas à pas, lorsque j'alimente mon tableau les données sont entrées correctement, 06/09/11, c'est seulement lors du transposage que ça ne fonctionne plus.

    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
     
    Sub tab()
    Dim i, j, x, last, statut As Integer
    Dim tabSche() As Variant
    Dim tabScheDate() As Date
     
    Application.ScreenUpdating = False
    With Sheets("Data")
    .Select
     
    'test si il y a des valeur
    If .Range("Q3").Value = "" Then
        Application.ScreenUpdating = True
        Exit Sub
    End If
     
    last = .Range("Q65536").End(xlUp).Row
    x = 0
        For i = 3 To last
            If i = 3 Or Cells(i, 17) <> Cells(i - 1, 17) Then
                x = x + 1
                ReDim Preserve tabSche(1 To 11, 1 To x)
                For j = 1 To 9
                    tabSche(j, x) = Cells(i, 16 + j)
                Next j
                ReDim Preserve tabScheDate(1 To 2, 1 To x)
                For j = 1 To 2
                    tabScheDate(j, x) = Format(Cells(i, 25 + j), "dd/mm/yy")
                Next j
            End If
        Next i
    End With
     
    With Sheets("TCD")
    .Select
     
    Range(Cells(5, 29), Cells(UBound(tabSche, 2) + 4, 37)) = Application.WorksheetFunction.Transpose(tabSche)
    Range(Cells(5, 38), Cells(UBound(tabScheDate, 2) + 4, 39)) = Application.WorksheetFunction.Transpose(tabScheDate)
    end sub
    Merci d'avance pour votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je modifierais la ligne 28
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabScheDate(j, x) = Format(Cells(i, 25 + j), "dd/mm/yy")
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabScheDate(j, x) = CDate(Cells(i, 25 + j))
    Je n'ai pas testé jusqu'à la dernière ligne car n'ayant pas les mêmes données que toi, je n'ai pas pu faire le Transpose.
    A éviter aussi les Select.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Par défaut
    Ça ne fonctionne pas...

    Le tableau s'aliment bien, c'est vraiment lorsque je transpose mon tableau que les valeurs changent.

    Il y aurait-il un moyen d'indiquer lors du transposage que les valeur sont des date?

    Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si les données sont correctes, c'est le bon formatage que tu dois appliquer à la cellule et pas à la variable de ton tableau lorsque tu écris dans la cellule.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Par défaut
    Ok ça fonctionne, j'ai passé par les No de série.

    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
    Sub Liste_schedule()
    Dim i, j, x, last, statut As Integer
    Dim tabSche() As Variant
    Dim tabScheDate() As Long
     
    Application.ScreenUpdating = False
    With Worksheets("Data")
     
        'test si il y a des valeur
        If .Range("Q3").Value = "" Then
            Application.ScreenUpdating = True
            Exit Sub
        End If
     
        last = .Range("Q65536").End(xlUp).Row
        x = 0
            For i = 3 To last
                If i = 3 Or .Cells(i, 17) <> .Cells(i - 1, 17) Then
                    x = x + 1
                    ReDim Preserve tabSche(1 To 10, 1 To x)
                    For j = 1 To 9
                        tabSche(j, x) = .Cells(i, 16 + j)
                    Next j
                    ReDim Preserve tabScheDate(1 To 2, 1 To x)
                    For j = 1 To 2
                        tabScheDate(j, x) = CLng(.Cells(i, 24 + j))
                    Next j
                End If
            Next i
    End With
    Merci de votre aide!!

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par Beaudelicius Voir le message
    La macros inverse les mois et les jours, exemple dans ma liste de données originale, les dates sont 06/09/11, lorsque je transpose mon tableau il indique 09/06/11, mais il inverse les mois et jour seulement quand c'est possible, exemple 28/08/11, après mon transpose il garde la même valeur.

    Je ne comprend pas pourquoi il inverse les jours et les mois...
    Bonjour,

    vois ceci

    http://didier-gonard.developpez.com/...et-vba/#LIII-B

    Tu peux essayer de passer par les N°s de série pour les manip (cf le tuto / N°s série) eux ne bougent pas, ensuite c'est une question de formatage...

    cordialement,

    Didier

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

Discussions similaires

  1. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  2. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30
  3. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  4. [CR8] Problème tableau sur plusieurs pages???
    Par christophe28 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/11/2004, 15h46
  5. Interbase - dbExpress -> problème avec les dates
    Par marghett dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 03h55

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