Procédure VBA trop grosse
Fermé
Dédé Pression
-
Modifié par Dédé Pression le 15/03/2011 à 11:59
Dédé Pression - 21 mars 2011 à 11:35
Dédé Pression - 21 mars 2011 à 11:35
A voir également:
- Procédure VBA trop grosse
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba dernière colonne non vide ✓ - Forum VB / VBA
- Erreur 1004 vba ✓ - Forum VB / VBA
- Récupérer valeur cellule vba ✓ - Forum VB / VBA
12 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
15 mars 2011 à 12:06
15 mars 2011 à 12:06
Bonjour,
Tel que tu poses le problème, je ne vois pas comment on peut t'aider...
Au besoin, mettre le classeur (sans ta macro) sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/
et coller le lien proposé dans le message de réponse
et SURTOUT, sois complet et clair en expliquant ce que tu veux faire...
Tel que tu poses le problème, je ne vois pas comment on peut t'aider...
Au besoin, mettre le classeur (sans ta macro) sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/
et coller le lien proposé dans le message de réponse
et SURTOUT, sois complet et clair en expliquant ce que tu veux faire...
Désolé si je ne suis pas clair, je vais essayer de reformuler mes questions.
J'ai fais une macro avec l'enregistreur mais lorsque j'essaye de l'utiliser, Visual Basic me dit que la procédure est trop lourde et qu'il ne peut l'exécuter.
Est-ce que quelqun connaitrait donc par hasard une solution pour me permettre de lancer ma macro, malgré la taille? (par exemple en supprimant des lignes qui ne servent surement à rien)
Merci d'avance!!
J'ai fais une macro avec l'enregistreur mais lorsque j'essaye de l'utiliser, Visual Basic me dit que la procédure est trop lourde et qu'il ne peut l'exécuter.
Est-ce que quelqun connaitrait donc par hasard une solution pour me permettre de lancer ma macro, malgré la taille? (par exemple en supprimant des lignes qui ne servent surement à rien)
Merci d'avance!!
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
15 mars 2011 à 13:45
15 mars 2011 à 13:45
As tu lu ce que je t'avais écrit ?
désolé,
Abandon du suivi :-((
désolé,
Abandon du suivi :-((
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 748
Modifié par pijaku le 15/03/2011 à 13:45
Modifié par pijaku le 15/03/2011 à 13:45
salut,
2 choix :
1- écouter michel_m et : Au besoin, mettre le classeur (sans ta macro) sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/
et coller le lien proposé dans le message de réponse
2- copier/coller le code ici...
2 choix :
1- écouter michel_m et : Au besoin, mettre le classeur (sans ta macro) sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/
et coller le lien proposé dans le message de réponse
2- copier/coller le code ici...
Krystan
Messages postés
36
Date d'inscription
mercredi 16 février 2011
Statut
Membre
Dernière intervention
17 mars 2011
10
15 mars 2011 à 15:27
15 mars 2011 à 15:27
Pour reprendre les commentaires de michel_m et pijaku, donne nous un exemple de ton fichier Excel et dis nous quel mise en forme tu veux faire.
Car la meilleur façon de résoudre ton problème c'est de refaire le code VBA sans utiliser l'enregistreur de macro.
Donc si nous savons ce que tu souhaites faire de ton fichier nous pourrions t'aider à créer ce code qui prendra beaucoup moins de place.
Car la meilleur façon de résoudre ton problème c'est de refaire le code VBA sans utiliser l'enregistreur de macro.
Donc si nous savons ce que tu souhaites faire de ton fichier nous pourrions t'aider à créer ce code qui prendra beaucoup moins de place.
Pour ceux que ce problème intéresse, je suis arrivé à supprimer
Toutes les lignes commencant par "active.window".
Les lignes concernant le "zoom" (qui se reconnaissent assez bien car il y a marqué zoom dedans).
Les lignes correspondant au traçage où il y a marqué "none" (sauf si c'est de l'effacage).
tout les "scroll.column" ainsi que les lignes marquées "smallscroll down" ou quelque chose comme ça.
Si quelqun en connait d'autres qui sont inutiles, hésitez pas!
Merci beaucoups!
Toutes les lignes commencant par "active.window".
Les lignes concernant le "zoom" (qui se reconnaissent assez bien car il y a marqué zoom dedans).
Les lignes correspondant au traçage où il y a marqué "none" (sauf si c'est de l'effacage).
tout les "scroll.column" ainsi que les lignes marquées "smallscroll down" ou quelque chose comme ça.
Si quelqun en connait d'autres qui sont inutiles, hésitez pas!
Merci beaucoups!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mic13710
Messages postés
1088
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2021
354
17 mars 2011 à 18:04
17 mars 2011 à 18:04
Les très nombreux select selection par exemple, les déplacements des curseurs inutiles et tant d'autres bricoles qui remplissent et alourdissent les codes, plus des méthodes qui sont très loin de l'optimisation.
Bref, l'enregistreur ça aide (un peu), mais pour un travail sérieux, il faut mettre les mains dans le cambouis.
C'est un peu comme prendre une Twingo pour aller faire les 24h du mans.
Et sans fichier, on ne peut guère vous aider.
Bon courage,
Michel
Bref, l'enregistreur ça aide (un peu), mais pour un travail sérieux, il faut mettre les mains dans le cambouis.
C'est un peu comme prendre une Twingo pour aller faire les 24h du mans.
Et sans fichier, on ne peut guère vous aider.
Bon courage,
Michel
Le problème c'est que je n'ai aucune idée du langage et donc je serais incapable de le faire sans l'enregistreur et je n'ai pas vraiment le temps de m'y mettre.
C'est pas optimal mais c'est quand même surement plus rapide!
Voila, c'est juste que chacun fais avec ce qu'il sait!
Merci
C'est pas optimal mais c'est quand même surement plus rapide!
Voila, c'est juste que chacun fais avec ce qu'il sait!
Merci
mic13710
Messages postés
1088
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2021
354
18 mars 2011 à 09:39
18 mars 2011 à 09:39
C'est bien ce qu'on a compris et c'est pour ça que vous êtes là.
Malheureusement, si vous ne transmettez pas votre fichier comme nous vous l'avons suggéré, nous ne pouvons pas vous aider.
Au final, on ne sait pas si votre code fonctionne ou pas depuis que vous l'avez allégé.
S'il fonctionne et que ça vous convient, marquez le sujet comme résolu, sinon, libre à vous de laisser le sujet ouvert mais je doute qu'il y ait quelqu'un pour poursuivre la discussion sans un support quelconque (fichier ou code).
Michel
Malheureusement, si vous ne transmettez pas votre fichier comme nous vous l'avons suggéré, nous ne pouvons pas vous aider.
Au final, on ne sait pas si votre code fonctionne ou pas depuis que vous l'avez allégé.
S'il fonctionne et que ça vous convient, marquez le sujet comme résolu, sinon, libre à vous de laisser le sujet ouvert mais je doute qu'il y ait quelqu'un pour poursuivre la discussion sans un support quelconque (fichier ou code).
Michel
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 748
18 mars 2011 à 09:53
18 mars 2011 à 09:53
Bonjour,
C'est effectivement pour cela que, dès le début, nous avions demandé, au moins, à avoir accès au code. S'il a été fait avec l'enregistreur, il n'y a rien de confidentiel ni de révolutionnaire dans ce code... Donc un simple copié/collé de ce code aurait permis la résolution de ce problème depuis... 3 jours!
Cordialement,
Franck P
C'est effectivement pour cela que, dès le début, nous avions demandé, au moins, à avoir accès au code. S'il a été fait avec l'enregistreur, il n'y a rien de confidentiel ni de révolutionnaire dans ce code... Donc un simple copié/collé de ce code aurait permis la résolution de ce problème depuis... 3 jours!
Cordialement,
Franck P
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 mars 2011 à 09:33
18 mars 2011 à 09:33
Bonjour tous,
Le plus simple serait que tu poste ton classeur AVEC le code, ont pourrait voir pour l'optimiser.
A.
Le plus simple serait que tu poste ton classeur AVEC le code, ont pourrait voir pour l'optimiser.
A.
Bon, désolé de pas avoir posté avant.
Du coup voici le lien vers mon fichier de base :
http://www.cijoint.fr/cjlink.php?file=cj201103/cijPBHxwvU.xls
Voici le lien vers le résultat souhaité (qui marche pour le moment) :
http://www.cijoint.fr/cjlink.php?file=cj201103/cijsAJh6Fy.xlsm
et voici le code :
http://www.cijoint.fr/cjlink.php?file=cj201103/cijsO6kzum.docx
ATTENTION : je ne demande pas de le faire car le document de départ pourrait évoluer et je ne pourrais alors pas modifier...
Je voudrais savoir si des lignes sont supprimables dans le code afin de pouvoir faire quelques modifications ou rajouts si besoin.
Merci!
Du coup voici le lien vers mon fichier de base :
http://www.cijoint.fr/cjlink.php?file=cj201103/cijPBHxwvU.xls
Voici le lien vers le résultat souhaité (qui marche pour le moment) :
http://www.cijoint.fr/cjlink.php?file=cj201103/cijsAJh6Fy.xlsm
et voici le code :
http://www.cijoint.fr/cjlink.php?file=cj201103/cijsO6kzum.docx
ATTENTION : je ne demande pas de le faire car le document de départ pourrait évoluer et je ne pourrais alors pas modifier...
Je voudrais savoir si des lignes sont supprimables dans le code afin de pouvoir faire quelques modifications ou rajouts si besoin.
Merci!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 748
18 mars 2011 à 10:38
18 mars 2011 à 10:38
Bonjour,
Super, on avance. Bon je ne peux pas t'aider car je ne dispose pas d'office 2007. Donc, à moins que tu n'enregistres tes documents (surtout le docx word) sous version 97-2003, je vais laisser le soin aux autres helper de corriger ton code.
Super, on avance. Bon je ne peux pas t'aider car je ne dispose pas d'office 2007. Donc, à moins que tu n'enregistres tes documents (surtout le docx word) sous version 97-2003, je vais laisser le soin aux autres helper de corriger ton code.
Pour ceux qui n'arrive pas à ouvrir le docx, voici un autre lien :
http://www.cijoint.fr/cjlink.php?file=cj201103/cijRqM1ZJ1.doc
http://www.cijoint.fr/cjlink.php?file=cj201103/cijRqM1ZJ1.doc
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 mars 2011 à 11:46
18 mars 2011 à 11:46
Première constatation.. pourquoi faire toutes ces mises en formes par macro alors que ce sera toujours la même présentation ??? Une fois le tableau réaliser sauver le classeur et elle sera toujours disponible.
Pourquoi faire tout ces copier/coller, des formules feraient bien mieux l'affaire puisque comme je viens de le dire ce sera toujours la même disposition.
A+
Pourquoi faire tout ces copier/coller, des formules feraient bien mieux l'affaire puisque comme je viens de le dire ce sera toujours la même disposition.
A+
mic13710
Messages postés
1088
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2021
354
Modifié par mic13710 le 18/03/2011 à 12:20
Modifié par mic13710 le 18/03/2011 à 12:20
De plus il y a de nombreuses sélections inutiles qui n'aboutissent sur rien, des tonnes d'opérations répétées.
Déjà de la simplification facile : les select selection.
Début de votre code :
Qui peut s'écrire :
Ou encore dans le genre chargé :
Peut-être remplacé par :
C'est déjà beaucoup plus court !
Ceci étant, il y a beaucoup trop de lignes (2138) à corriger pour que nous puissions vous régler le problème.
Et je suis d'accord avec lermite concernant la forme de base.
Et autre suggestion : si la feuille de donnée est toujours disposée de la même manière, pourquoi ne pas faire votre tableau sur une deuxième feuille ? Il vous suffirait alors de mettre à jour les données de la deuxième feuille avec des liens vers les données de la première. C'est plus simple à mettre en oeuvre et surtout plus rapide en exécution.
Michel
Déjà de la simplification facile : les select selection.
Début de votre code :
Columns("A:A").Select Selection.Cut Columns("C:C").Select Selection.Insert Shift:=xlToRight Range("B1").Select Selection.Cut Destination:=Range("H1")
Qui peut s'écrire :
Columns("A:A").Cut Columns("C:C").Insert Shift:=xlToRight Range("B1").Cut Destination:=Range("H1")
Ou encore dans le genre chargé :
Range("B19,B23,B25:B26").Select Range("B25").Activate Range("B19,B23,B25:B26,B44,B48,B51").Select Range("B51").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60").Select Range("B57").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73").Select Range("B73").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113").Select Range("B113").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149").Select Range("B149").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153").Select Range("B153").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176").Select Range("B176").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176,B190,B192").Select Range("B192").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176,B190,B192,B211,B213").Select Range("B213").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176,B190,B192,B211,B213,B219").Select Range("B219").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176,B190,B192,B211,B213,B219,B231,B236").Select Range("B236").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176,B190,B192,B211,B213,B219,B231,B236,B247").Select Range("B247").Activate Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176,B190,B192,B211,B213,B219,B231,B236,B247,B256").Select Range("B256").Activate Selection.ClearContents
Peut-être remplacé par :
Range("B19,B23,B25:B26,B44,B48,B51,B55,B57:B60,B73,B113,B148,B149,B153,B176,B190,B192,B211,B213,B219,B231,B236,B247,B256").ClearContents
C'est déjà beaucoup plus court !
Ceci étant, il y a beaucoup trop de lignes (2138) à corriger pour que nous puissions vous régler le problème.
Et je suis d'accord avec lermite concernant la forme de base.
Et autre suggestion : si la feuille de donnée est toujours disposée de la même manière, pourquoi ne pas faire votre tableau sur une deuxième feuille ? Il vous suffirait alors de mettre à jour les données de la deuxième feuille avec des liens vers les données de la première. C'est plus simple à mettre en oeuvre et surtout plus rapide en exécution.
Michel