"Mémoire Insuffisante" sur 1 macro simple

Signaler
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour

J'utilise la macro suivante pour "nettoyer" le contenu de mes cellules (qui contiennent plus de 255 caractères pour info, moins de 50 cellules à traiter):

Sub Macro1()
Sheets("N3").Select
Dim lastline_N3 As Long
lastline_N3 = Range("E9").End(xlDown).Row
Range("E4:E" & lastline_N3).Select
    For Each Cellule In Range("E4:E" & lastline_N3)
       old_text_N3 = Cellule.Value
       new_text_N3 = Replace(old_text_N3, Chr(13), Chr(10))
       Cellule.Value = new_text_N3
    Next
End Sub

J'obtiens lors de l'exécution de la macro un message mémoire insuffisante, si je clique sur débogage, la ligne spécifiée par le debuggeur est celle en gras.
Y aurait il un moyen de palier à ce problème ?

Je travaille sous Excel 2003 SP1 (pc du boulot)

D'avance merci.

@+

ted

16 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

la ligne spécifiée par le debuggeur est celle en gras.  ?!?!?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,
> [auteur/BIGFISHLEVRAI/510670.aspx bigfish_le vrai]: <gras>Cellule.Value = new_text_N3</gras> (ca a pas marcher)

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

Salut, Julien merci pour l'info
Ted, je ne vois pas trop d'ou vient le probleme mais tu peux toujours essayer ce qui suit :
Attention les points devant les reange sont obligatoire

Sub Macro1()
    Dim lastline_N3 As Long, Cellule as Range
    Dim old_text_N3 As String, new_text_N3 As String
    With Sheets("N3")
        lastline_N3 = . Range("E9").End(xlDown).Row
        <strike>Range("E4:E" & lastline_N3).Select</strike>
        For Each Cellule In .Range("E4:E" & lastline_N3)
           old_text_N3 = Cellule.Value
           new_text_N3 = Replace(old_text_N3, Chr(13), Chr(10))
           Cellule.Value = new_text_N3
        Next
    End With
End Sub
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

Merci beaucoup, malheureusement ca ne fonctionne pas...
J'ai aussi essayé de "réduire" le code:

Sub Macro1()
ForEach Cellule In Range("E4:E" & Range("E9").End(xlDown).Row)
Cellule.Value = Replace(Cellule.Value, Chr(13), Chr(10))
Next
EndSub

Mais ca n'est pas mieux...

[EDIT] désolé pour la balise qui n'est pas passé!
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
non non ! ta methode est pas bonne la ! reprend ce que je t'ai donné et donne moi le message d'erreur et le code d'erreur

tu peux aussi mettre une Msgbox pour voir ce qui ce passe :

Sub Macro1()
    Dim lastline_N3 As Long, Cellule as Range
    Dim old_text_N3 As String, new_text_N3 As String
    With Sheets("N3")
        lastline_N3 = . Range("E9").End(xlDown).Row
        MsgBox lastline_N3<strike></strike>
        For Each Cellule In .Range("E4:E" & lastline_N3)
           old_text_N3 = Cellule.Value
           new_text_N3 = Replace(old_text_N3, Chr(13), Chr(10))
           Cellule.Value = new_text_N3
        Next
    End With
End Sub

regarde si la valeur que te renvoit la msgbox est coherante
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

J'avais déjà testé cela mais la valeur est tout à fait cohérente (et faible : 53 )
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

Par contre la cellule contient environ 1400 caractères....
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Oui mais c'est quoi le message d'erreur ? sans cette info j'arrete !
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

Et bien le message d'erreur est tjs le même "Mémoire insuffisante"
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

J'ai aussi essayé de mettre ta proposition dans un module isolé mais ca ne fonctionne pas mieux:!
(cf http://support.microsoft.com/kb/461123/fr)

Merci encore (même si j'en arrive à croire que ce probleme est intrinseque à Excel )
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
25
Bonsoir,

Juste une question qui pourra paraître idiote, mais ...

A l'occasion de quel évènement appelles-tu cette macro ?
(j'espère que tu ne fais pas tourner "en rond" à l'occasion d'un évènement change quelque part, par exemple)
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

Bonsoir

La macro n'est appelée que via l'executeur de macro...Elle n'est pas déclenché sur un evenement spécifique...C'est une macro "simple" (si je puis dire :s)
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
pour info le nombre maxi de caractere dans une cellule est de 32000 depuis XL2000
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Quelle valeur te retourne lastline_N3 ?

N'oublie pas de déclarer toutes tes variables comme, par exemple, old_text_N3 et new_text_N3
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut MPi ! Welcom back !
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Salut à toi BigFish
J'arrive d'une bonne pêche, justement...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI