begin process at 2010 02 10 10:46:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

VBA

 > 

Problème de gestion mémoire et utilisation ressources ...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de gestion mémoire et utilisation ressources ...

vendredi 19 août 2005 à 14:55:02 | Problème de gestion mémoire et utilisation ressources ...

Sp00ky

Bonjour,

J'ai un problème de gestion de la mémoire et d'utilisation des ressources que je n'arrive pas à résoudre ...

J'ai un Classeur Excel 2003 sur lequel j'aimerais effectuer une macro sur une ligne à chaque modification d'une cellule de cette ligne.

Ainsi, dans le code de Feuil1, je mets :

Private Sub Worksheet_Change(ByVal Target As Range)
For Each Cellule In Target
If Cellule.Column <> Alertes_Col Then
l = Cellule.Row
If l <> old Then
Call Module5.Verif
old = l
End If
End If
Next
End Sub


Mon Module5.Verif contient une macro qui vérifie des choses dans la cellule.
Lorsque je l'appelle depuis un bouton placé sur ma feuille (et non pas automatiquement a chaque modif), cette macro marche parfaitement et c'est super rapide (c'est fait pour etre a chaque modification de cellule, donc c'est instantané le resultat)

Seulement dès qu'elle se lance d'elle meme quand je fais une modif dans une cellule, ca me mets une erreur 28 : Espace Pile Insuffisant. De plus, ca mets un certain temps avant d'afficher cette erreur, ca réfléchit anormalement.

J'ai essayé plusieurs méthodes :

1. Call Module5.Verif
=> cf plus haut

2. Executer à l'intérieur de Feuil1
=> Beaucoup trop lent, et si j'utilise des fonctions : Espace Pile Insuffisant

3. Verif(l) où l est la ligne
=> Beaucoup trop lent, et Espace Pile Insuffisant

4. Le meilleur : Verif.Show où Verif est un UserForm qui execute la macro au chargement.
==> Parfait, cependant le UserForm se charge, et ne se ferme pas de lui même ...
Si je le fais se fermer par Verif.Hide, comme j'ai mis le code dans UserForm_Initialize, il ne le refait pas lors du prochain Verif.Show ...

Enfin bref, comment la faire executer de facon "normale" sans qu'elle rame, comme si je cliquais simplement sur le bouton (qui lui marche parfaitement) ... ?

merci !


$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !

vendredi 19 août 2005 à 15:34:51 | Re : Problème de gestion mémoire et utilisation ressources ...

BasicInstinct

Membre Club
'lut

j'ai eu le mm pb depile y'a pa si longtemps dans un tout autre contexte :

J'appellais ma fonction A qui me chargeait un combobox (et dc m'executait cbo_change)

dans CboChange j'appelais ma fonction B qui avait une sous-fonction qui appelais ma fonction A (me rechageant mon cbobox) etc.....


je pense que ton pb vient de la

tu modifies une cellule, ce qui execute worksheet_change qui modifie une cellule....


Perso, j'ai resolue le pb en gerant un boolean global qui sortait de cbochange si il avait pas l'executer...




BasicInstinct
vendredi 19 août 2005 à 15:53:49 | Re : Problème de gestion mémoire et utilisation ressources ...

aieeeuuuuu

je pense que ta fonction tourne en boucle :

tu lance une fonction sur un evenement on_change d'une cellule A, mais cette fonction doit (enfin c'est ce que je pense) modifier la cellule A. donc quand la fonction modifie cette cellule, elle genere a nouveau l'evenement on_change, qui rappelle la fonction... qui remodifie la celleule A, ce qui rappelle la fonction... et c'est sans fin.

est-ce que tu pourrais nous donner le code de la fonction appelée.

sinon la solution pour eviter ca est de declarer une variable globale que tu place a True lorsque la fonction est en train de s'executer, et au debut de la fonction tu verifie si la variable est a True, tu sors directement de la fonction

public bIsFonctiunRunning as boolean

public function maFonction() as ...
   if bIsFonctiunRunning then exit function
   bIsFonctiunRunning  = true
   
   ...
   ...
   bIsFonctiunRunning = false
end function
vendredi 19 août 2005 à 16:01:27 | Re : Problème de gestion mémoire et utilisation ressources ...

Sp00ky

Effectivement, ca devait venir de là, merci à vous deux ;)

En fait j'ai réussi a m'en sortir car je ne changeais qu'une colonne en particulier quand j'appellais la macro.
D'ailleurs j'avais résolu ce pb avec :
If Cellule.Column <> Alertes_Col Then
(cf premier post)

Donc il ne tournait aps en boucle puisque les modifs que faisaient la macro étaient dans Alertes_Col ....

En tous cas maintenant, ca marche !
Avec Verif.Show vbModeLess
et Verif.Hide .... va savoir pkoi ...


$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !



Cette discussion est classée dans : problème, macro, gestion, cellule, verif


Répondre à ce message

Sujets en rapport avec ce message

IF "Cellule" THEN ... (MACRO) [ par Vladsmice ] Slt,J'ai un problème avec Excel quand je veux faire mon If dans une macro.Je veux que si il n'y a rien dans la cellule E6, qu'il colle les données cop gestion des erreurs [ par sransac ] bonjourdans une macro, je teste le contenu d'une cellule par     If ActiveCell.Value = "VAL" Then ...cependant, il arrive de temps à autre que la cell gestion du #N/A [ par sransac ] bonjourJ'avais posé la question dans la rubrique débutant, mais on m'a dit que c'était dnas cette rubrique que je devais la poser.La voici donc !dans Problème macro excel [ par DarkTiteuf ] Salut à tous, voila j'ai une macro excel à amélioré et je suis débutant sur le sujet.Je m'en sors plutôt pas mal mais je bloque sur cette ligne, la pa macro utilisant un nom de fichier différent [ par fixou81 ] bonjour,voila mon problème :j'ai fait un petit truc qui récupère le nom et prénom (grace à 2 textbox) et créé un fichier qui s'appelle "nomprénom". En VBE + Mettre fin à une macro [ par jeancdus69 ] Bonjours à tous,J'expose mon problème:Je fais tourner une macro excel après une demande utilisateur par appui sur un bouton, cette macro progresse et Extraire un caractere dans une macro Excel : substring ? [ par jecario ] Bonjour a tous,A partir d'une macro sous Excel 2003, je cherche a extraire un caractere d'une cellule.J'aimerais donc savoir s'il existe deja une fonc Macro Excel - repeter une fonction sur plusieurs cellules [ par jecario ] Bonjour,Mon objectif est de repeter une fonction sur plusieurs cellules.Par exemple, ecrire " =HEX2BIN(---;8)" sur 10 cellules, les coordonnees de la Problème avec mozilla et vba [ par tiph_101 ] Bonjour,J'ai créé une macro en vba sous excel qui envoie automatiquement un mail à partir de la messagerie mozilla.Dans cette macro, le sujet du messa Cellule active [ par mimi_939 ] Bonjour,j'ai un petit problème que je n'arrive pas à résoudre.Voilà, j'ai une macro qui utilise la cellule active et qui fait son traitement en foncti


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales