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 :

Range Mémoire insuffisante


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
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut Range Mémoire insuffisante
    Bonjour,

    J'essaye de travailler à l'aide de tableau pour rendre mon code plus rapide mais j'ai un soucis au niveau de la création du tableau.

    Je souhaiterai qu'un tableau de type variant contienne l'ensemble d'une feuille de classeur, or j'ai le message d'erreur "Mémoire Insuffisante".

    Est ce qu'une feuille de classeur peut être stocké dans un variant?

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim v1 As Variant
        chemin = calc_S.Worksheets("feuil1").Cells(10, 2)
        Set calc_D = Workbooks.Open(Filename:=chemin, ReadOnly:=True, Format:=4)
        Dim tbase As Range
        Set tbase = calc_D.Worksheets(1).Range("A2:AL" & Cells(Rows.Count, 1).End(xlUp).Row))
        v1 = tbase

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Est ce qu'une feuille de classeur peut être stocké dans un variant?
    Oui, mais uniquement avec un PC en avance sur notre ère.
    En Excel 64 bit par exemple, un Variant prend 192 bit en mémoire.
    En négligeant la très petite quantité de donnée attribué pour les dimensions du tableau.
    Ça donnerai (environ) 384 Gio/feuille dans le cas d'une feuille au format récent (1024576 lignes et 16384 colonnes) si je ne me trompe pas (et un peu moins en 32 bit):
    384 Gio = ((192) * 2 ^ (20 + 14)) / (8 * 1024 ^ 3)


    P.S.: J'ai oublié la limite des 2 Go/instances Excel sur les versions 32 bit, donc ce n'est pas possible sur les fichiers Classeur Excel 2007 et supérieur, et pour les versions 2003 et inférieur, sauf erreur, cela doit (ou devrai) être possible par contre.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Tu peux stocker une feuille de calcul dans un variant mais si elle possède un trop grand nombre de données et selon les ressources disponibles le compilateur peux ne pas arriver à la stocker entièrement.

    Hervé.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut
    Merci de vos réponse!

    Je souhaitais stocker une feuille de 39229 lignes et 38 colones.

    Dommage d'atteindre les limites

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Octobre 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Logistique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 104
    Par défaut
    Une solution peut être de ne stocker qu'une sélection de ta feuille. ça risque d'être lourd, mais ça peut marcher.

    une sorte de Range("A1:AL39229")

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par maxoup Voir le message
    Merci de vos réponse!

    Je souhaitais stocker une feuille de 39229 lignes et 38 colones.

    Dommage d'atteindre les limites
    C'est pas l'ensemble une feuille complète dans ce cas.
    Là c'est possible par contre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Test()
        Dim Tb
        Tb = ThisWorkbook.Worksheets(1).Range("A1:AZ50000").Value
    End Sub
    Ce code simple devrai marcher en principe par exemple.

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

Discussions similaires

  1. [CR][VB.NET] Message : mémoire insuffisante
    Par arno2000 dans le forum SDK
    Réponses: 1
    Dernier message: 22/12/2005, 14h52
  2. Mémoire insuffisante
    Par cjo dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/11/2005, 13h14
  3. message d'erreur "Mémoire insuffisante"
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2005, 15h41
  4. Mémoire insuffisante
    Par lenouvo dans le forum MFC
    Réponses: 6
    Dernier message: 31/08/2005, 10h14
  5. Mémoire insuffisante sous Dos
    Par Bubonik software dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 20/09/2003, 11h35

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