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 :

probleme de memoire insuffisante [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut probleme de memoire insuffisante
    bonjour a tous

    j'ai un petit soucis avec un message d'erreur que je ne comprends pas

    j'ai un code HTML que je veut decouper
    il peut contenir jusqu'à 200000 caractères et peut être plus
    j'essaie donc de le couper et de mettre chaque morceau dans une cellules
    sachant qu'une cellule peut contenir plus de 32000 caractères je suis loin de compte puisque je coupe tout les 200 caractères
    mais voila au bout d'un moment la macro déclenche l'erreur "mémoire insuffisante " et je ne comprends pas pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    T="balablablablabla......."
    Sheets.Add After:=Sheets(Sheets.Count)
     
        Sheets(Sheets.Count).Name = imgname
        For L = 1 To Len(t) Step 200
        a = IIf(L > 1, a + 1, 0): it = it + 1
        Fin = IIf(Len(t) - L + a >= 200, L + a + 200, Len(t))
        'Debug.Print "debut = " & L + a & " fin = " & fin
        Sheets(imgname).Range("A" & it) = Mid(t, L + a, Fin)
     Next
    quelqu'un a une idée la dessus ????,
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Salut Patrick,

    ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(imgname).Range("A" & it) = Mid(t, L + a, Fin)
    faudrait pas remplacer Fin par 200 ? Puisque c'est l'argument qui spécifie la longueur de la chaine
    du coup à chaque tour de boucle, la longueur de la chaine insérée dans la cellule augmente de 200

    le problème de mémoire pourrait prévenir de là ?
    Et du coup, ta variable fin n'est pas utile.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    merci du retour joe
    je vais examiner cela
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub toto()
    T = "balablablablabzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzla......."
        With Sheets.Add
            .Name = "toto"
            For L = 1 To Len(T) Step 200
                it = it + 1
                .Range("A" & it) = Mid(T, L, 200)
            Next
        End With
    End Sub

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    merci joe tu m'a mis sur la voix
    je sais pas pourquoi je me suis mis en tète que le 3 argument dans mid devait être le debut + les 200 des fois j'te jure

    après si !! la variable fin est indispensable pour le dernier tour le dernier morceaux ne fait jamais 200 caractères ou alors je vais surveiller ma compagne
    du coup ca donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sheets.Add After:=Sheets(Sheets.Count)
     
        Sheets(Sheets.Count).Name = imgname
        For l = 1 To Len(t) Step 200
        a = IIf(l > 1, a + 1, 0): it = it + 1
        fin = IIf(Len(t) - l + a >= 200, 200, Len(t) - (l + a))
        'Debug.Print "debut = " & L + a & " fin = " & fin
        Sheets(imgname).Range("A" & it) = Mid(t, l + a, fin)
     Next
        'Debug.Print Len(t)
    et la c'est bon j'ai tout

    Merci joe
    c'est l'age je crois
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    je suis pas sûr que fin soit bien utile dans le contexte que tu décris

    si la longueur de la sous-chaine est supérieure à la longueur de chaine totale, alors Mid renvoie les caractères restants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Chainon()
    t = "ChaineImpaire"
     
    For i = 1 To Len(t) Step 2
        j = j + 1
        Range("A" & j) = Mid(t, i, 2)
    Next i
    Debug.Print Len(Range("A" & j))
    End Sub
    donc si au dernier tour de boucle il ne te reste que 199 caractères, tu les auras (et t'aura pas le caractère précédant ou un espace à la fin, ou n'importe quoi d'autre)

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    oui je viens de tester
    en plus il y a une chose que je pige pas dans mid

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t="joe et Patrick discute sur le forum"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox mid(t,1,14) ' donne "joe et Patrick"
    pour le reste je devrais donc faire
    mais toi dans ta boucle tu n'indente pas le +1 et pourtant ca fonctionne

    je pige pas la!!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Probleme VB6 et erreur 7 memoire insuffisante
    Par dubidon dans le forum Windows
    Réponses: 3
    Dernier message: 31/05/2006, 11h04
  2. memoire insuffisante
    Par Coulomb dans le forum Sécurité
    Réponses: 5
    Dernier message: 02/11/2005, 13h36
  3. pbleme memoire insuffisante
    Par charlie2709 dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/05/2004, 08h33
  4. [langage] Problème de mémoire
    Par And_the_problem_is dans le forum Langage
    Réponses: 6
    Dernier message: 22/07/2003, 16h17
  5. [swing] probleme de memoire
    Par leBigouden dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/05/2003, 14h19

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