Problème de mémoire

Résolu/Fermé
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013 - 2 avril 2013 à 10:21
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013 - 2 avril 2013 à 11:33
Bonjour,

Alors voilà mon petit problème, j'ai écrit une macro qui plante pour cause de mémoire insuffisante (c'est ce que dit le message d'erreur).
Voici la macro

Dim ii As Long

For ii = Application.WorksheetFunction.CountA(Range("A:A")) To 5 Step -1

    If Cells(ii, 1) <> Cells(ii - 1, 1) Then

        Cells(ii, 1).EntireRow.Select
        Selection.Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Cells(ii, 1) = ";"

    End If
Next ii



Le problème est dû à la taille du fichier, il y a dans celui que je teste 70 000 lignes. (et j'aimerais bien que ça marche pour 100 000 lignes environ.
Du coup j'me suis dit qu'une solution possible c'était de faire la même marco plusieurs fois à la suite:
-la première va de la 100 000 à 80 000 ligne
- la seconde de 80 000 à 60 000 ligne
etc

Mais ça à l'air de rien changer (peut-être qu'il faut que je fasse des intervalles encore plus petit mais j'aime pas voir mon code grossir de la sorte.)

Voilà, si quelqu'un a une idée je suis preneur.

Marci, bonne journée.
A voir également:

2 réponses

scinarf Messages postés 1119 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
2 avril 2013 à 10:40
vérifier que la variable ii ne soit jamais négative ... avec:

if (ii <0) then ii = 0

Logiquement un PC d'aujourd'hui est plus que capable de travailler sur 100 000 lignes sans aucune difficulté
0
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013
2 avril 2013 à 11:33
ah!

Merci mais en fait j'ai changé de code,
vu que je sais exactement où je dois insérer mes ";" j'ai mis ce code là:

Dim ii As Long

For ii = Application.WorksheetFunction.CountA(Range("A:A")).Offset(1, 0) To 5 Step -nbj * 24


Cells(ii, 1).Select
Selection.Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next ii



(possible qu'il y ait une erreur de frappe, j'ai pas encore testé)

aller, merci, salut!
0