memoire insuffisante pendant l'execution d'une macro RESOLU

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

miremy

XLDnaute Nouveau
Bonjour à tous 😱
voilà, j'ai un souci
j'ai une macro qui boucle sur plusieurs onglets .
tous les 8 à 10 onglets environ , j'ai un message "mémoire insuffisante". Là je fait debogage j'enregitre, puis executer et çà repart pour 10 onglet avant de recommencer.
Voici ma question: y a t'il moyen de faire un enregistrement toutes les 10 feuilles pendant la boucle ? Car si j'enregistre à chaque passage cela rallonge le temps d'execution.Certains classeurs pesent 30 Mo.et contiennent plus de 200 onglets
Si quelqu'un a une solution je suis preneur.
Merci
Miremy
 
Dernière édition:
Re : memoire insuffisante pendant l'execution d'une macro

Bonjour
Je suis sur Excel 2000
Je t'envoie un fichier ou j'ai recopie les macros
La macro est en colonne A
Je L'ai decomposee sur les autres colonnes

En fait c'est la macro "Sub SupMaj()" au niveau " P = tablo " qui pose problème.
 

Pièces jointes

Dernière édition:
Re : memoire insuffisante pendant l'execution d'une macro

Bonsoir miremy,


Set P = Range("C1😀" & Cells(Rows.Count, "C").Row) '* As tu vérifié le nombre de données, chargées en mémoire. (Rows.Count)=65536

tablo = P 'matrice, plus rapide

P = tablo '*****ICI LE PLANTAGE********La mémoire peut être pleine si 65536
For I = 1 To UBound(tablo)' Pendant l'exécution, placer un point arrêt et vérifier, en pas à pas, la valeur de UBound.


A+

René
 
Re : memoire insuffisante pendant l'execution d'une macro

Bonjour,

Essayes cette instruction:

Set P = Range("C1 : D " & Cells.Find("*", , , , , xlPrevious).Row)
au lieu de
Set P = Range("C1 : D " & Cells(Rows.Count, "C").Row)

Avec ce changement, le tableau "P" ne prendra que les écritures et non les cases vides dans les cellules de C1 à D65536.

Testes et dis moi!

A+

René
 
Dernière édition:
Re : memoire insuffisante pendant l'execution d'une macro

bonjour
Il vaut mieux que je te joigne un fichier que j'ai reduit.
Quand le message "mémoire insuffisante " apparait fais:
_ debogage
_enregistre le fichier
_execution continuer

comme çà la macro se termine ;Mais quand on a des classeurs de 2 ou 300 feuilles c'est fastidieux.

Il me faudrait trouver un moyen d'enregistrer le classeur périodiquement avant l'apparition du message

ci-joint:
 

Pièces jointes

Re : memoire insuffisante pendant l'execution d'une macro

Bonjours, Salut st007


@st007
Tu as raison, c'est pour cela que j'ai proposé:

Set P = Range("C1 : D " & Cells.Find("*", , , , , xlPrevious).Row), qui prend le numéro de la la dernière ligne ecrite dans une feuille.

Avec ta formule, cela est caïman😉 la même chose !
Sur le nouveau programme posté, j'ai rajouté au début et à la fin:
Application.ScreenUpdating=..... afin d'accélérer la vitesse.

A+

René
 

Pièces jointes

Re : memoire insuffisante pendant l'execution d'une macro

En mettant :
Set P = Range("C1😀" & Cells(Rows.Count, "C").End(xlUp).Row)
Au lieu de :
Set P = Range("C1😀" & Cells(Rows.Count, "C").Row)
Cela fonctionne impeccable
Merci à vous pour vous etre penches sur mon probleme.
Miremy
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour