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 :

Gestion de tableau en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable Suppot Informatique en milieu industriel
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable Suppot Informatique en milieu industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut Gestion de tableau en VBA
    Bonjour à tous,
    J'ai des fichiers textes qui sont gros avec des données provenant de machines de production.
    Les fichiers peuvent avoir plus de 80 000 lignes (certains font plus de 30Mb). Une ligne possède 12 champs (séparés par des caractères |).
    J'arrive à lire les fichiers et récupérer chaque ligne, mettre chaque champ de la ligne dans un tableau (utilisation des fonctions de Microsoft Scripting Runtime pour lire et des split pour mettre dans un tableau).
    Je dois rajouter chaque tableau de ligne lue dans un tableau pour l'ensemble du fichier, en parcourant les lignes du tableau du fichier et en comparant les 5 premières colonnes afin de voir si ces données ne sont pas déjà dans le tableau.
    Pour l'instant ma macro traite 80 000 lignes en 3 minutes (cela correspond à 1 jour) j'aimerai optimiser mon traitement mais je ne sais pas comment.
    Quelqu'un peut-il m'aider ?
    Merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut lilian65 et le forum
    Bienvenue
    Pour l'instant ma macro traite 80 000 lignes en 3 minutes (cela correspond à 1 jour) j'aimerai optimiser mon traitement mais je ne sais pas comment.
    Quelqu'un peut-il m'aider ?
    En optimisant ton code, peut-être ?
    Tu demandes une amélioration de performances, mais tu ne donnes même pas ton code! Comme on ne connait rien de ton problème, hormis ton poste et que la tempête a rendu brumeuse les boules de cristal, ça va être difficile.
    Donnes ton code!!!
    A+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable Suppot Informatique en milieu industriel
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable Suppot Informatique en milieu industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Désolé voici le 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
    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
    Sub TraiteLigne(NomLigneProd As String, TypeTraitement As String, LigneLue As Variant, ByRef VarTab() As Variant)
     
    Dim Tab1 As Variant
    Dim ChampDate As String
    Dim ChampMachine As String
    Dim ChampLot As String
    Dim ChampProg As String
    Dim ChampConfig As String
    Dim ChampFeeder As String
    Dim ChampRefCps As String
    Dim ChampFormeCps As String
     
    'format de la ligne lue
    'Date   |Nom Machine|Lot    |Programme|Config |Id Flan|Feeder |Ref Cps|Forme Cps|Nbre pris|Nbre Rejet Ident|Nbre Rejet Vacuum|
    'Tab1(0)|Tab1(1)    |Tab1(2)|Tab1(3)  |Tab1(4)|Tab1(5)|Tab1(6)|Tab1(7)|Tab1(8)  |Tab1(9)  |    Tab1(10)    |  Tab1(11)       |
    IndexTableauData = 0
    Select Case TypeTraitement
        Case "Journalier"
            Tab1 = Split(LigneLue, "|")
            If VarTab(IndexTableauData, 0) <> "" Then
                'trouver la ligne correspondant à la ligne de production
                While VarTab(IndexTableauData, 0) <> NomLigneProd
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampDate = Left(Tab1(0), 10)
                While VarTab(IndexTableauData, 1) <> ChampDate And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampMachine = Tab1(1)
                While VarTab(IndexTableauData, 2) <> ChampMachine And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampLot = Tab1(2)
                While VarTab(IndexTableauData, 3) <> ChampLot And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampProg = Tab1(3)
                While VarTab(IndexTableauData, 4) <> ChampProg And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampConfig = Tab1(4)
                While VarTab(IndexTableauData, 5) <> ChampConfig And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampFeeder = Tab1(6)
                While VarTab(IndexTableauData, 6) <> ChampFeeder And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampRefCps = Tab1(7)
                While VarTab(IndexTableauData, 7) <> ChampRefCps And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
                'trouver la ligne correspondant à la machine
                ChampFormeCps = Tab1(8)
                While VarTab(IndexTableauData, 8) <> ChampFormeCps And VarTab(IndexTableauData, 0) <> ""
                    IndexTableauData = IndexTableauData + 1
                Wend
            End If
            For i = 0 To UBound(Tab1)
            Select Case i
                Case 0
                    VarTab(IndexTableauData, i) = NomLigneProd
                Case 1
                     VarTab(IndexTableauData, i) = Left(Tab1(0), 10)
                Case 2 To 5
                    VarTab(IndexTableauData, i) = Tab1(i - 1)
                Case 6 To 8
                    VarTab(IndexTableauData, i) = Tab1(i)
                Case 9 To 11 'mise a jour du chemp Nbre cps pris
                    VarTab(IndexTableauData, i) = VarTab(IndexTableauData, i) + Tab1(i)
            End Select
            Next i
     
        Case "Hebdo"
     
        Case "Mensuel"
     
    End Select
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Responsable Suppot Informatique en milieu industriel
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable Suppot Informatique en milieu industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut Utilisation d'une table de hachage
    Bonjour à tous,

    Pour résoudre mon problème j'ai utilisé un shell utilisant une table de hachage (mon fichier avec mes 80 000 lignes est sur un serveur Linux, les fichiers sont disponibles sous XP grâce à un montage samba).

    Existe-t-il sous VBA Excel un moyen d'utiliser une table de hachage ?

Discussions similaires

  1. [WINDEV11] Gestion de tableau de structure
    Par shensi dans le forum WinDev
    Réponses: 3
    Dernier message: 18/06/2007, 16h45
  2. Gestion de fichier en VBA. (bis)
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2007, 11h24
  3. Gestion de fichier en VBA.
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2007, 20h08
  4. [VBA-E] Comment créer un tableau sous vba excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2007, 09h52
  5. [Tableau][Base]Création d'une classe de gestion de tableau
    Par mariogarcia dans le forum Collection et Stream
    Réponses: 40
    Dernier message: 05/11/2005, 01h19

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