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 :

Création tableau dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2016
    Messages : 3
    Par défaut Création tableau dynamique
    Bonjour à tous,

    Je me permets de poster sur ce forum car mes (très légères) connaissances en VBA ne me permettent pas de trouver réponse à ma question.

    Je cherche actuellement à convertir des données contenues dans un fichier en format .txt en tableau (dont je connais le nombre de colonne mais pas le nombre de ligne). Ensuite, je veux effectuer un traitement des données collectées (conversion d'un format date en seconde). Pour finir, je colle le résultats dans une feuille nommée "Verif" de mon classeur, histoire de vérifier le résultat obtenu.

    Mon problème est en fait que j'ai écrit ce bout de code pour y parvenir :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    Dim tab_impulsion()
    Dim Fichier_data_txt
    Dim nmbr_ligne, last_line As Long
    Dim nom_resultat As String
     
    Sub Test3()
     
        nom_resultat = ActiveWorkbook.Name
     
    '--------------------------------------------------------------------------------------------------------------------------------------------
    ' Copier/Coller les données du fichier .txt (compteurs) dans une nouvelle feuille Excel à partir de la cellule "A1" de la feuille "Feuil1"
    '--------------------------------------------------------------------------------------------------------------------------------------------
     
        If MsgBox("Continuer ?", vbYesNo, "Demande de confirmation") = vbYes Then
     
        ' Sélection du fichier data en format .txt
     
        MsgBox ("Veuillez sélectionner le fichier contenant les données de consommation d'eau et d'électricité.")
     
        Fichier_data_txt = Application.GetOpenFilename("Text Files (*.txt), *.txt")
     
            If Fichier_data_txt <> False Then
     
                ' Créer une nouvelle feuille dans le classeur actif
     
                ActiveWorkbook.Worksheets.Add
     
                ' Créer une requête sur le fichier texte et insérer les champs dans la feuille "Feuil1" en partant de "A1"
     
                ActiveSheet.QueryTables.Add("TEXT;" & Fichier_data_txt, [A1]).Refresh
     
            Else
     
                MsgBox "La procédure a été annulée car aucun fichier n’a été sélectionné."
     
            End If
     
        End If
     
    '--------------------------------------------------------------------------------------------------------------------------------------------
    ' Récupérer les données compteurs dans un tableau et fermer la nouvelle feuille Excel créée
    '--------------------------------------------------------------------------------------------------------------------------------------------
     
        ' Détermination du nombre de ligne dans le fichier de base de données
     
        nmbr_ligne = Range("A1").End(xlDown).Row - 1
     
        last_line = nmbr_ligne - 1
     
        ReDim tab_impulsion(last_line, 7)
     
        ' Création du tableau
     
        For i = 0 To last_line 
     
            tab_impulsion(i, 0) = Range("A" & i + 2)
            tab_impulsion(i, 1) = Range("B" & i + 2)
            tab_impulsion(i, 2) = Range("C" & i + 2)
            'tab_impulsion(i, 3) = Range("D" & i + 2)
            'tab_impulsion(i, 4) = Range("E" & i + 2)
            tab_impulsion(i, 5) = Range("F" & i + 2)
            tab_impulsion(i, 6) = Range("G" & i + 2)
            tab_impulsion(i, 7) = Range("H" & i + 2)
     
        Next i
     
        ' Suppression de la nouvelle feuille (sans message)
     
        Application.DisplayAlerts = False
     
        ActiveSheet.Delete
     
        Application.DisplayAlerts = True
     
    '--------------------------------------------------------------------------------------------------------------------------------------------
    ' Traitement des données
    '--------------------------------------------------------------------------------------------------------------------------------------------
     
        ' Conversion du format date en temps secondes
     
        For i = 0 To last_line
     
            tab_impulsion(i, 1) = Int((tab_impulsion(i, 0) * 24 * 3600) / 15) * 15
     
        Next i
     
        ' Collage des valeurs du tableau dans le fichier data (à partir de la cellule A1 de la feuille "Verif"
     
        Worksheets("Verif").Select
     
        Workbooks(nom_resultat).Worksheets("Verif").Range("A1", Cells(last_line, 8)) = tab_impulsion
     
        MsgBox ("Terminé")
     
    End Sub
    Ce code fonctionne, mais on m'a demandé de ne pas déclaré le tableau colonne par colonne, mais plutôt dans son ensemble pour que cela soit plus rapide (les fichiers .txt finaux seront très volumineux). J'ai donc essayé avec le code 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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    Dim tab_impulsion()
    Dim Fichier_data_txt
    Dim nmbr_ligne, last_line As Long
    Dim nom_resultat As String
     
    Sub Test3()
     
        nom_resultat = ActiveWorkbook.Name
     
    '--------------------------------------------------------------------------------------------------------------------------------------------
    ' Copier/Coller les données du fichier .txt (compteurs) dans une nouvelle feuille Excel à partir de la cellule "A1" de la feuille "Feuil1"
    '--------------------------------------------------------------------------------------------------------------------------------------------
     
        If MsgBox("Continuer ?", vbYesNo, "Demande de confirmation") = vbYes Then
     
        ' Sélection du fichier data en format .txt
     
        MsgBox ("Veuillez sélectionner le fichier contenant les données de consommation d'eau et d'électricité.")
     
        Fichier_data_txt = Application.GetOpenFilename("Text Files (*.txt), *.txt")
     
            If Fichier_data_txt <> False Then
     
                ' Créer une nouvelle feuille dans le classeur actif
     
                ActiveWorkbook.Worksheets.Add
     
                ' Créer une requête sur le fichier texte et insérer les champs dans la feuille "Feuil1" en partant de "A1"
     
                ActiveSheet.QueryTables.Add("TEXT;" & Fichier_data_txt, [A1]).Refresh
     
            Else
     
                MsgBox "La procédure a été annulée car aucun fichier n’a été sélectionné."
     
            End If
     
        End If
     
    '--------------------------------------------------------------------------------------------------------------------------------------------
    ' Récupérer les données compteurs dans un tableau et fermer la nouvelle feuille Excel créée
    '--------------------------------------------------------------------------------------------------------------------------------------------
     
        ' Détermination du nombre de ligne dans le fichier de base de données
     
        nmbr_ligne = Range("A1").End(xlDown).Row - 1
     
        last_line = nmbr_ligne - 1
     
        ReDim tab_impulsion(last_line, 7)
     
        ' Création du tableau
     
        tab_impulsion = Range(Cells(2, 1), Cells(last_line, 8))
     
        ' Suppression de la nouvelle feuille (sans message)
     
        Application.DisplayAlerts = False
     
        ActiveSheet.Delete
     
        Application.DisplayAlerts = True
     
    '--------------------------------------------------------------------------------------------------------------------------------------------
    ' Traitement des données
    '--------------------------------------------------------------------------------------------------------------------------------------------
     
        ' Conversion du format date en temps secondes
     
        For i = 0 To last_line
     
            tab_impulsion(i, 1) = Int((tab_impulsion(i, 0) * 24 * 3600) / 15) * 15
     
        Next i
     
        ' Collage des valeurs du tableau dans le fichier data (à partir de la cellule A1 de la feuille "Verif"
     
        Worksheets("Verif").Select
     
        Workbooks(nom_resultat).Worksheets("Verif").Range("A1", Cells(last_line, 8)) = tab_impulsion
     
        MsgBox ("Terminé")
     
    End Sub
    Malheureusement ce morceau de code ne marche pas, et je n'arrive pas à comprendre pourquoi, ni comment déclarer le tableau correctement.

    Merci d'avance à ceux qui prendront le temps de se pencher sur mon petit problème !

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2016
    Messages : 3
    Par défaut
    Personne n'a d'idée ?

Discussions similaires

  1. [XL-2007] Création tableau dynamique
    Par damienlelol dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/07/2014, 11h46
  2. [DOM] Création tableau dynamiquement DOM
    Par knebhi dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/06/2009, 12h38
  3. Création tableau dynamique avec php
    Par yasinfo dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2008, 14h28
  4. Création Tableau dynamique simple
    Par iori11 dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2008, 21h11

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