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 :

nombre trop important de lignes et de colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut nombre trop important de lignes et de colonnes
    Bonjour Forum ,
    Je veux importer et traiter via Excel et VBA une table crée par un logicel . Mais le probleme qui se pose est que la table en lignes et en colonnes est largement superieure au nombre de lignes et de colonne sous Excel limité à 65536.
    Je voudrai alors traiter cette table sous VBA donc déclarer une table mais jai peur d'être limité également sous VBA sur la taille du tableau.
    Donc je fait appel aux Genies de ce magnifique Foum pour une solution
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tout dépend de ce que tu veux faire de tes données. Tu peux les répartir sur plusieurs feuilles. Tu peux - peut-être - casser ta tirelire (ou celle de ton patron) et passer à Excel 2010 en gros, c'est 1 million de lignes et 16 000 colonnes et beaucoup plus avec l'add-in PowerPivot. Tu peux aussi stocker tes données sur Access ou un autre SGBD.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    Merci Daniel, mais si je stock mes données sous access comment faire pour traiter ces données avec le programme de VBA que je compte faire. car je maitrise plus VBA . Mais je pense que je peux declarer un tableau et faire lire a Exeel mon fichier.txt . Mais un probleme se pose est ce que je serai pas egalement limité sous VBA sur la taille des tableaux qu'on peut declarer

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tout dépend de ce que tu comptes faire des données. Pour un tableau croisé dynamiques, tu peux utiliser les facilités d'accès aux données externes. Tu peux également utiliser ADO pour accéder aux données Access.

  5. #5
    Membre averti
    Homme Profil pro
    Automaticien
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Par défaut
    Bonjour,

    Plutôt que de stocker cette table de plusieurs milliers de lignes que l'utilisateur ne prendra surement pas la peine de lire, il est à mon avis préférable de stocker toutes ces informations dans une variable de type tableau (array) que l'on pourra ensuite traiter, pour être affiché ou encore réexporté...

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    plusieurs milliers de lignes que l'utilisateur ne prendra surement pas la peine de lire
    C'était bien la peine que Proust écrive la Recherche du temps perdu, alors
    Plus sérieusement, un tableau réside en mémoire vive et ne survit pas à la fermeture du classeur auquel il est attaché. Il doit donc correspondre à des données résidant sur support physique. Rappelons que la mémoire gérée par Office 2010 32 bits est 2 Go.

  7. #7
    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 erlerwade Voir le message
    Bonjour Forum ,
    Je veux importer et traiter via Excel et VBA une table crée par un logicel . Mais le probleme qui se pose est que la table en lignes et en colonnes est largement superieure au nombre de lignes et de colonne sous Excel limité à 65536.
    Bonjour,

    en précisant la version avec le menu déroulant à gauche du titre, les réponses seront forcément plus pertinentes, depuis 2007 on a 1 048 576 lignes de base et plusieurs millions (limite = Ram) sous 2010 avec PowerPivot, le contexte est forcément différent


    De toutes façons, vu ton contexte, ce sont les limites basses de la Ram, des versions de l'OS et d'Office qui seront les contraintes, comme dans dans tous système chaîné, c'est le maillon le plus faible qui limitera le tout.

    Donc comme dit précédemment, l'investissement en configurations peut-être amorti très très vite, faire un traitement sur plus d'un million de références en quelques secondes ou moins est un gain de productivité très net et peut se révéler un avantage concurrentiel non négligeable pour une boîte.

    cordialement,

    Didier

  8. #8
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    Je vous remercie déjà de l’intérêt que vous avez manifesté et les différentes pistes que vous m'avez proposées . Et si j'utilise Filesystemobject je maîtrise pas Bien mais sa peut être intéressant d'aprés mes lectures. je veu faire des opérations usuelles addition soustraction ou division entre les nombres des colonnes.

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tu peux le faire dans Access si tu fais les opérations ligne par ligne.

  10. #10
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Juste une question

    Je veux importer et traiter via Excel et VBA une table crée par un logicel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    faire lire a Exeel mon fichier.txt
    La table créée est bien un fichier texte?
    Quel est le séparateur?

    Que recherche tu dans ce fichier
    tous les champs? (les colonnes)
    tous les enregistrement? (les lignes)

    Ou seulement un partie avec un regroupement par exemple
    Car dans ce cas tu peux requêter dans le fichier et ne rapatrier dans Excel seulement ce dont tu as besoin.
    il suffit de bien connaître à quoi correspond tes colonnes

    Bon courage

    Bonne journée

  11. #11
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    Oui Jean-Pierre le Fichier est en format texte et le séparateur une virgule.
    Je veux faire les traitement suivants:
    Supprimer une ligne et la remplacer par une autre
    creer de nouvelles colonnes déduites par soustractions de deux colonnes
    faire un tri car le fichier texte de base n'est pas trier
    Merci les genies

  12. #12
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Supprimer une ligne et la remplacer par une autre
    Comment identifies-tu la ou les lignes ?
    Et autre d’où vient-elle ?

    creer de nouvelles colonnes déduites par soustractions de deux colonnes
    Connais-tu la position de ces deux colonnes ?
    Combien de colonnes le fichier procède il exactement?

    faire un tri car le fichier texte de base n'est pas trier
    Connais-tu les colonnes à trier ou est-ce toutes ?

    Ton fichier ensuite quand fais-tu ?

    On peut requêter et ou lire un fichier txt c'est pas trop compliqué en soit, mais il faut ce poser des questions, car cela peut prendre du temps à faire et à vérifier.

    Bon courage

  13. #13
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    Oui j'ai toutes ces informations:
    je dois suprimer et remplacet toute les lignes de numéro 0 par une nouvelle ligne que j'ai deja fait
    Et je connais exactement la positions des 2colonnes qu'il faut soustraire.
    Mais comme je suis nouveau avec les fichiers texte avec VBA je c pas trops si les commandes habituelle vont changer.Donc je demande conseils et orientations

  14. #14
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    A mon avis, c'est le tri qui va poser problème. Est-ce que tu devras faire cette manip de façon répétitive ?

  15. #15
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Peux tu donner le nombre exact de colonne de ton fichier

    A+

    Bon courage

  16. #16
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    En gros si jai mon fichier en format texte initial je dois faire un macro qui fait le traiment sur les colonnes (soustration supression de la premiere colonne)
    et ensuite je fait le tri.Oui dans ce sens sa doit etre répétitif.Mais si je parviens déja a faire les traitement sur les colonnes c'est déja parfait. Déja est ce que le traitement sur les colonnes du fichier texte est possible sous VBA?

  17. #17
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    je fait juste la colonne G -la colonne M
    comment je puis-je m'y prendre ?
    si j'ai pa étais clair je refait lebleau et jessayerai d'etre plus clair
    crdt

    Oui Daniel c'étais une erreur de ma part je l'ai rectifié ,la colonne B c'est bien la deuxieme colonne
    cdt,

  18. #18
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    creer de nouvelles colonnes déduites par soustractions de deux colonnes
    Peux-tu détailler s'il te plait ?

  19. #19
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    re:

    Ci dessous un bout de code qui pourrait faire le travail (peu prendre du temps)

    Tu créer un dossier dans le quel tu mets les deux fichiers txt
    la base
    et le fichier comprenant les lignes à remplacer

    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
    Option Explicit
    ' Avec référence microsoft DAO 3.6 Object Library
                                Dim Donneestxt                      As DAO.Database
     
                                Dim Appli                           As Object
                                Dim Creation                        As Object
                                Dim Enregistrement                  As String
                                Dim Chemin                          As String
                                Dim NomFichier                      As String
                                Dim TexteRequete                    As String
                                Dim Requete                         As Recordset
    Sub test()
     
        Chemin = "C:\......\" ' a adapter
        NomFichier = "LenomDuFichier.txt" ' a adapter
     
        Set Donneestxt = DAO.OpenDatabase(Chemin, False, False, "Text;Database=" & Chemin)
     
        Set Appli = CreateObject("Scripting.FileSystemObject")
     
    'Création du schema.ini pour déclaration du séparateur et des entêtes colonne
        Set Creation = Appli.CreateTextFile(Chemin & "schema.ini", True)
        Creation.Write "[" & NomFichier & "]" & vbCrLf
        Creation.Write "Format=Delimited(;)" & vbCrLf
        Creation.Write "ColNameHeader = True"
        Creation.Write ""
        Creation.Write "[TempA]" & vbCrLf
        Creation.Write "Format=Delimited(;)" & vbCrLf
        Creation.Write "ColNameHeader = True"
        Creation.Close
        Set Creation = Nothing
     
    'Création du fichier Temporaire
        Set Creation = Appli.CreateTextFile(Chemin & "TempA.txt", True)
        Creation.Write "P;B;M;g;X" & vbCrLf
     
        TexteRequete = "SELECT P, B, M, g " & _
                            "FROM [" & NomFichier & "]"
        Set Requete = Donneestxt.OpenRecordset(TexteRequete, DAO.dbOpenSnapshot)
        Do While Not (Requete.EOF)
            If Requete.Fields(0).Value > 0 Then ' on ne prendre pas les lignes commencant par 0
                Enregistrement = Requete.Fields(0).Value
                Enregistrement = Enregistrement & ";" & Requete.Fields(1).Value
                Enregistrement = Enregistrement & ";" & Requete.Fields(2).Value
                Enregistrement = Enregistrement & ";" & Requete.Fields(3).Value
                Enregistrement = Enregistrement & ";" & CLng(Requete.Fields(3).Value) - CLng(Requete.Fields(2).Value) 'Création de la différence Des colonne g et M(a adapter)
                Creation.Write Enregistrement & vbCrLf
            End If
            Requete.MoveNext
        Loop
    Requete.Close
        Open Chemin & "FichierligneAutre.txt" For Input As #1 ' on lit le fichier des nouvelles lignes (Nom du fichier a adapter)
        Do While Not EOF(1)
            Input #1, Enregistrement
            Creation.Write Enregistrement & vbCrLf  ' On les écris dans le fichier TempA
        Loop
        Close #1
     
        Set Creation = Appli.CreateTextFile(Chemin & NomFichier, True) ' On créer le fichier définitif
    'On requête dans le fichier TempA pour effectuer le tri
        TexteRequete = "SELECT P, B, M, g, X " & _
                            "FROM [TempA.txt] ORDER BY P, B, M, g, X"
        Set Requete = Donneestxt.OpenRecordset(TexteRequete, DAO.dbOpenSnapshot)
        Do While Not (Requete.EOF)
            Enregistrement = Requete.Fields(0).Value
            Enregistrement = Enregistrement & ";" & Requete.Fields(1).Value
            Enregistrement = Enregistrement & ";" & Requete.Fields(2).Value
            Enregistrement = Enregistrement & ";" & Requete.Fields(3).Value
            Creation.Write Enregistrement & vbCrLf
            Requete.MoveNext
        Loop
     
        Creation.Close
        Set Creation = Nothing
        Requete.Close
        Set Requete = Nothing
     
        Kill Chemin & "TempA.txt"
    Msgbox "Terminé"
    End Sub
    Je n'ai pas tester mais cela devrait fonctionner
    tu n'as plus qu'adapter

    Peut prendre plusieurs minutes si ta base à énormement de lignes
    Garde une sauvegarde du fichier d'origine

    Bon courage

    j'ai remplacer GROUP par ORDER bien sur et rajouter un Requete.Close

  20. #20
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    Merci beaucoup jean-Pierre trop fort et tres Gentil je vais tester ton code en l'adaptant . Daniel je refais la table et j'explique plus clairement .

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

Discussions similaires

  1. Fonction Index(Equiv et nombre trop importants de fonction
    Par sanderlucius dans le forum Excel
    Réponses: 4
    Dernier message: 07/06/2013, 11h32
  2. Réponses: 2
    Dernier message: 19/04/2007, 11h23
  3. Réponses: 12
    Dernier message: 09/01/2007, 14h28
  4. Réponses: 1
    Dernier message: 05/01/2007, 15h33
  5. Nombre de lignes et de colonnes.
    Par VisualBoinet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/11/2006, 00h04

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