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

VB.NET Discussion :

Créer un tableau contenant mes lignes répondant à une condition_pb de mémoire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Ingénieur forestier
    Inscrit en
    Mai 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur forestier
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2019
    Messages : 10
    Par défaut Créer un tableau contenant mes lignes répondant à une condition_pb de mémoire
    Bonjour à tous,

    je cherche à stocker des lignes de plusieurs feuilles de mon classeur répondant à une condition dans un tableau pour ensuite coller ce tableau dans un nouveau classeur.

    Morceau de ma procédure qui créé le tableau :
    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
     
        'Création d'un tableau contenant mes lignes
        Dim TabE(), LE&, TabS(), LS&, C&, i&
        ReDim TabS(1 To 50000, 1 To 10)
        For i = LBound(Noms_feuilles) To UBound(Noms_feuilles)
            TabE = Sheets(Noms_feuilles(i)).UsedRange.Value
            If UBound(TabS, 2) < UBound(TabE, 2) Then ReDim Preserve TabS(1 To UBound(TabS, 1), 1 To UBound(TabE, 2))  <----- Ligne posant pb 
                For LE = 1 To UBound(TabE, 1)
                    If TabE(LE, Col) = 1 Then
                        LS = LS + 1
                            For C = 1 To UBound(TabE, 2)
                            TabS(LS, C) = TabE(LE, C)
                            Next C
                    End If
                Next LE
        Next i
    J'ai une erreur "mémoire insuffisante" sur la ligne.

    Cette procédure fonctionnait très bine en utilisant le fait que mes données sont stockées dans mes feuilles sous forme de tableau comme ceci :

    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
     
        'Création d'un tableau contenant mes lignes
        Dim TabE(), LE&, TabS(), LS&, C&, i&
        ReDim TabS(1 To 50000, 1 To 10)
        For i = LBound(Noms_feuilles) To UBound(Noms_feuilles)
            TabE = Sheets(Noms_feuilles(i)).ListObjects(1).DataBodyRange.Value <---- ligne que j'ai changé avec UsedRange, pourtant pas celle qui pose problème ! 
            If UBound(TabS, 2) < UBound(TabE, 2) Then ReDim Preserve TabS(1 To UBound(TabS, 1), 1 To UBound(TabE, 2))
                For LE = 1 To UBound(TabE, 1)
                    If TabE(LE, Col) = 1 Then
                        LS = LS + 1
                            For C = 1 To UBound(TabE, 2)
                            TabS(LS, C) = TabE(LE, C)
                            Next C
                    End If
                Next LE
        Next i
    Cependant je cherche à enlever ces tableaux car ils me posent d'autres problèmes. Je me suis dit que le code ci-dessus (premier code) devait me donner l'équivalent sans tableau mais cela ne fonctionne pas ...

    Auriez-vous une solution ?

    Merci par avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim TabS(1 To 50000, 1 To 10)
    50000 c'est plus grand qu'integer!

    LE&, TabS(), LS&, C&, i& le & veut dire integer

    Nomme clairement tes typages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LE&, TabS(), LS as long=0, C as long=0, i as long=0
    Intéresses toi aux filtre élaboré

    J'ai jamais essayé mais j'imagine qu'on peut manipuler Excel en LineQ!

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour Robert

    Citation Envoyé par dysorthographie Voir le message
    J'ai jamais essayé mais j'imagine qu'on peut manipuler Excel en LineQ!
    Moi non plus, mais il y a cela. Et peut-être d'autres

    Et, il y a aussi LinqToCSV à quelque part.

  4. #4
    Membre habitué
    Femme Profil pro
    Ingénieur forestier
    Inscrit en
    Mai 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur forestier
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2019
    Messages : 10
    Par défaut
    Bonjour,

    ça marche ! J'ai dimensionné comme indiqué et changé 50 000 en 5 000

    Par contre c'est plus long que lorsque je me servais de la mise en forme tableau : c'était immédiat, là il faut attendre un peu. Étrange non ?

    Aucune idée de ce qu'est LinqToCSV ou LineQ !

    Et les instruction Dim ne fonctionnent pas comme indiqué chez moi : je suis obligée de dimensionner puis d'indiquer la valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       Dim TabE()
        Dim LE As Integer
        Dim TabS()
        Dim LS As Long
        LS = 0
        Dim C As Long
        C = 0
        Dim i As Long
        i = 0

    Allez hop je me débarrasse de ces fichues mises en forme tableau

    Merci bonne journée !

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

Discussions similaires

  1. Tableau contenant les noms d'une structure.
    Par LiaGalanodel dans le forum Langage
    Réponses: 23
    Dernier message: 10/11/2010, 14h24
  2. [MySQL] Créer un enregistrement pour chaque ligne d'une zone de texte
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/09/2009, 20h14
  3. [phpToPDF][Tableau] Aller à la ligne dans une cellule
    Par zeusdu95 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/08/2009, 15h50
  4. Réponses: 2
    Dernier message: 21/03/2008, 15h41
  5. Dernière ligne répondant à une condition
    Par GD91 dans le forum Excel
    Réponses: 1
    Dernier message: 03/03/2008, 14h38

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