[Déplacé VB6 --> VBA] Problème macro, formules ou ordi ?

scoobytor Messages postés 3 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 3 septembre 2009 - 3 sept. 2009 à 01:49
scoobytor Messages postés 3 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 3 septembre 2009 - 3 sept. 2009 à 11:37
Bonjour,

Je ne sais plus quoi faire.

J'ai créé un fichier Excel pour gérer les patients du cabinet d'une amie Ostéo.

Pour faire le suivi, j'ai créé une userfom avec une multipage à 6 onglets et différentes macros pour créer, rechercher, modifier ou supprimer les patients.

Il y a également le suivi de ses honoraires et un tableau statistiques utilisant surtout la fonction NB.SI.ENS().

Toutes les macros fonctionnent (essai en mode pas à pas détaillé, à part ou depuis la userform), hors lorsque j'utilise la userform, le fichier plante, jamais sur la même macro et à des moments différents.

Pour info j'utlise Excel 2007, son pc à 3 Go de ram, le classeur contient 14 onglets, dont 1 base de 6000 lignes sur 152 colonnes, 1 base de 10000 lignes sur 84 colonnes et 1 base de 10000 lignes sur 59 colonnes et le fichier fait 2453 ko (et environ 150 heures de boulot).

Est-on limité au nombre de calculs, de macros ou d'opérations à partir d'une userform, ou sans refermer celle-ci.

Merci d'avance pour votre réponse ou suggestion.

P.S: Je peux vous envoyer une copie du fichier si besoin.

J'ai déjà essayer de résoudre en supprimant les macros une à une , en les réécrivants une à une, de supprimer les onglets du classeur un à un.

Lorsqu'il plante, je fais CTRL+ALT+SUPPR et fin de tâches, il remarche à nouveau et plante.

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2009 à 09:41
Salut
Voir quelques manips dans <ce lien>
Quand "ça plante", il se passe quoi ? Message d'erreur ?
Que fait le programme au moment du plantage ? des macros sont en cours ou bien simplmenent en cours d'affichage ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2009 à 09:42
PS : Pense à mettre des DoEvents dans les boucles de tes macros pour laisser "respirer" le PC
0
scoobytor Messages postés 3 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 10:17
Merci Jack pour c'est info.

Je vais essayer en désactivant le calcul automatique.

Lorsqu'il plante, il est entrain d'éxecuter une macro (même un simple copier-coller) et le process augmente sans retomber (passe de 4-8% à 46-72%).

Il n'y a aucun message d'erreur, et tout se fige aucune manip possible pour Excel, le reste de l'ordi est utilisable.

Dans mes macros, il n'y a aucune boucles, essentiellement du copier-coller de valeur et du trier de A-Z.

Qu'est-ce que les DoEvents ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2009 à 10:45
DoEvents redonne la main au système.
Si tu fais une boucle (ça m'étonne que tu n'en fasses pas), genre For-Next ou Do-Loop, le programme prend toutes les ressources qui lui sont nécessaire pour travailler. Pendant ce temps, qui peut être long si la boucle compte de gros chiffres comme tes 10000 lignes x 150 colonnes, même le clavier peut ne plus répondre : le système n'a pas le temps de gérer ses périfiériques.
En utilisant un DoEvents de temps en temps, cela permet de "sortir" du programme pour laisser travailler le système ou les autres programmes en cours.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

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

Posez votre question
scoobytor Messages postés 3 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 11:37
Pour gérer les patients je me sers d'une ligne saisie associé à la userform, une ligne recherche (par la formule recherchev()) et une ligne modification.

Ensuite c'est dans la 1ère colonne que se fait le test par une formule SI de savoir si la ligne correspond au patient.

Ensuite je viens coller les valeurs de la ligne 1, 2 ou 3 sur la ligne du patient.

Donc je n'ai pas de boucle dans mes macros.

Je suis en train d'essayer l'option retrait du calcul automatique.
0
Rejoignez-nous