"Mémoire Insuffisante" sur 1 macro simple

tedtheOrs
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010
- 5 sept. 2008 à 14:04
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
- 6 sept. 2008 à 20:55
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

bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
5 sept. 2008 à 15:21
Salut,

la ligne spécifiée par le debuggeur est celle en gras.  ?!?!?
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
5 sept. 2008 à 15:23
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
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
5 sept. 2008 à 16:23
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
0
tedtheOrs
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

5 sept. 2008 à 16:52
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é!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
5 sept. 2008 à 17:13
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
0
tedtheOrs
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

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

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

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

5 sept. 2008 à 18:19
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 )
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
5 sept. 2008 à 19:44
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)
0
tedtheOrs
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

5 sept. 2008 à 20:14
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)
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
5 sept. 2008 à 20:15
pour info le nombre maxi de caractere dans une cellule est de 32000 depuis XL2000
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
6 sept. 2008 à 16:54
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
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
6 sept. 2008 à 19:29
Salut MPi ! Welcom back !
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
6 sept. 2008 à 20:55
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
0