XL 2010 Macro génération PDF à la suite

safranien

XLDnaute Occasionnel
Bonjour à tous,

je dispose d'un fichier de travail assez lourd qui doit être utilisé en mode de calcul manuel. Le principe est : choix d'un site via un menu déroulant, clic sur un bouton "Lancer les calculs" qui exécute une macro combinant des formules dans la macro et des actualisation de formules de calculs présentes dans des cellules de plusieurs feuilles. Un bouton PDF permet de générer un PDF de la feuille (plusieurs en fait). Lorsque le PDF est généré, ce dernier s'ouvre. Je passe au site suivant via le menu déroulant etc

J'aimerais réussir à automatiser la génération des PDF, un après l'autre, de tous les sites présents dans le menu déroulant. Dans mon fichier de travail, la macro "Lancer les calculs" est assez longue à s'exécuter (environ 30 secondes) contrairement au fichier exemple joint. Dans ledit fichier, j'ai essayé de reproduire simplement le principe de fonctionnement.
J'aimerais donc qu'une macro inscrive le premier nom de site de la liste déroulante (colonne O de l'onglet BDD) en H2 de l'onglet BDD, exécuter la macro "Lancer les calculs", exécuter une autre macro de mise en PDF mais sans ouverture de ce dernier une fois créé, inscrire le nom de site suivant en H2 etc etc Et lorsqu'on arrive au bout de la liste, effacer le contenu de H2, lancer une dernière fois la macro "Lancer les calculs" et afficher une boite de dialogue pour dire que tous les PDF sont générés.
Etant donné que ma macro Lancer les Calculs de mon fichier de travail met du temps à s'exécuter, faut il insérer un temps de pause entre Lancer les Caluls et la mise en PDF ?

Question bonus : j'oblige les utilisateur à fermer tous leurs excel avant d'ouvrir ce fichier assez lourd et que ce dernier ne bascule pas en calcul automatique à son ouverture. Existe-t-il un moyen, lors de l'ouverture de mon fichier, de vérifier si d'autres fichiers excel sont ouverts et si oui, qu'un message s'affiche en disant "Merci de fermer vos autres fichiers avant d'ouvrir celui-ci" ? Ou alors forcer l'ouverture en mode de calcul manuel même si d'autres fichiers en calcul automatique sont ouverts ?

En espérant que vous pourrez m'aider.

Merci
 

Pièces jointes

  • Safranien - macro liste un par un.xlsm
    28.7 KB · Affichages: 31
Solution
Bonjour @safranien, @Staple1600, le forum

1)Je ne comprends toujours pas pourquoi ta sub "Calculs" est sorti de la sub "Tout", de plus écrite comme ça ?
Pour moi ça ne sert à rien de vouloir la séparer.

2)Si j'ai bien compris ton problème tu veux que tout s’arrête des que la colonne O est vide de valeur.
Tu remplaces ces lignes de codes.
VB:
'Derlig = Worksheets("BDD").Range("O" & Rows.Count).End(xlUp).Row
Derlig = Worksheets("BDD").Range("O:O").Find("*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Ce qui donne au final :
VB:
Sub Tout_Phil69970_Staple1600()

Dim Derlig&
Derlig = Worksheets("BDD").Range("O:O").Find("*", LookIn:=xlValues, SearchOrder:=xlByRows...

safranien

XLDnaute Occasionnel
Non non relis bien. Stapple me demande si son code fonctionne, j'ai donc retourné mon fichier avec ton code code qui contient la Sub Calculs et le code de Stapple avec ses calculs pour remplacer ma sub Calculs mais je n'ai jamais demandé à remplacer la Sub Calculs. Ca reste un fichier exemple et ma Sub Calculs n'est pas représentative de ma vraie Sub Calculs de mon fichier de travail (80 lignes !). Le but initial était bien de savoir comment incrémenter une après l'autre les valeurs de la colonne O vers la cellule A1 (initialement la cellule H2, mais ça c'est vrai je l'ai modifié dans mon dernier envoi de fichier pour être encore plus proche de ce que je fais avec mon fichier de travail, à savoir incrémenter la valeur texte directement dans la cellule contenant le menu déroulant).

Et le Application.CutCopyMode je voulais dire que je l'avais testé dans mon fichier de travail, pas dans le fichier test partagé ici. Je ne l'ai peut être pas bien spécifié. Mais il est vrai qu'il apparaissait dans ton premier code.

Pour ce qui est du calcul manuel, bah en fait je veux que la lumière soit toujours éteinte 😄
Je cherche à ce que mon fichier de travail soit toujours en mode de calcul manuel. Dès l'ouverture, et ce même si l'utilisateur a déjà un excel d'ouvert en calcul auto, et à la fermeture. Mon fichier de travail possède énormément de calculs que je ne veux déclencher qu'au travers de ma Sub Calculs. Donc si le fichier passe tout seul en auto à l'ouverture à cause d'autre excels déjà ouvert, le fichier va se mettre à vouloir tout calculer et mettre "deux heures" à s'ouvrir, ce que je ne veux pas.

Voilà, j'espère avoir été plus clair. Ce n'est pas toujours évident de bien retranscrire par écrit.

En tout cas, merci encore pour votre aide.
 

Phil69970

XLDnaute Barbatruc
Re

Le code pour désactivé/activé le calcul manuel
VB:
Sub Tout()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

'Le reste du code
'Blablabla

'Et à la fin on remet tout en place
Application.Calculation = xlCalculationAutomatic
End Sub

Autrement de la lecture ....

@Phil69970
 

safranien

XLDnaute Occasionnel
Merci

Dernière question avant de clôturer : sais tu si sur le forum il y a des master chief du vba à leur compte que je pourrais solliciter pour une prestation de correction / optimisation de mon fichier ? En fonction de l'importance du boulot et du devis, je pourrais avoir recours à eux. Tu peux me répondre en MP si tu préfères.
 

Phil69970

XLDnaute Barbatruc
Re

A la base c'est un forum de volontaire qui font cela pour leur plaisir et sur leur temps libre pour le fun, l’intérêt de la question, ou tout simplement par envie de partager leur connaissance.

Il est possible que des personnes puissent faire des prestations mais ce n'est pas la vocation de ce forum.
Libre à toi de contacter les pointures du forum qui pourront t'aiguiller sur une piste ou une autre.
Peut être même le webmaster du site pourra te répondre de manière plus précise que moi connaissant les piliers de ce forum.
C'est même un peu beaucoup son job.... ;)

@Phil69970
 

Discussions similaires

Réponses
12
Affichages
230

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67