Si multiples en VBA
Bonjour à tous,
Je dois réaliser un fichier réalisant un planning pour des chauffeurs routier. Ce dernier comprend plusieurs onglets :
- Planning Opérations : On retrouve plusieurs transport sur la gauche ( 16 au total ).
Chaque case correspond à une information ( N° Dossier, départ, arrivée, nom du chauffeur, n° plaque ,...).
Lorsque ces cases sont remplies, j'aimerais que des cases d'un autre onglet se remplissent :
J'ai réussi à faire fonctionner le fichier grâce à un "SI imbriqué". Je dis au fichier que si le nom du chauffeur du deuxième onglet correspond à un des noms du chauffeur du premier onglet, alors il faut recopier les cases.
Le programme tourne, mais l'enregistrement et le lancement du fichier est lent, je me demande s'il ne serait pas mieux de faire tourner ce petit programme grâce à une VBA, histoire de soulager la mémoire.
Pensez-vous que cela est possible ?
Je vous met la copie d'une formule pour que vous vous rendiez compte du nombre de conditions nécessaires :
=+SI(OU($A$2='Planning Opérations'!B$14;$A$2='Planning Opérations'!C$14;$A$2='Planning Opérations'!D$14);'Planning Opérations'!B11&" "&'Planning Opérations'!C11&" "&'Planning Opérations'!D11;SI(OU($A$2='Planning Opérations'!B$19;$A$2='Planning Opérations'!C$19;$A$2='Planning Opérations'!D$19);'Planning Opérations'!B16&" "&'Planning Opérations'!C16&" "&'Planning Opérations'!D16;SI(OU($A$2='Planning Opérations'!B$24;$A$2='Planning Opérations'!C$24;$A$2='Planning Opérations'!D$24);'Planning Opérations'!B21&" "&'Planning Opérations'!C21&" "&'Planning Opérations'!D21;SI(OU($A$2='Planning Opérations'!B$29;$A$2='Planning Opérations'!C$29;$A$2='Planning Opérations'!D$29);'Planning Opérations'!B26&" "&'Planning Opérations'!C26&" "&'Planning Opérations'!D26;SI(OU($A$2='Planning Opérations'!B$35;$A$2='Planning Opérations'!C$35;$A$2='Planning Opérations'!D$35);'Planning Opérations'!B32&" "&'Planning Opérations'!C32&" "&'Planning Opérations'!D32;SI(OU($A$2='Planning Opérations'!B$40;$A$2='Planning Opérations'!C$40;$A$2='Planning Opérations'!D$40);'Planning Opérations'!B37&" "&'Planning Opérations'!C37&" "&'Planning Opérations'!D37;SI(OU($A$2='Planning Opérations'!B$45;$A$2='Planning Opérations'!C$45;$A$2='Planning Opérations'!D$45);'Planning Opérations'!B42&" "&'Planning Opérations'!C42&" "&'Planning Opérations'!D42;SI(OU($A$2='Planning Opérations'!B$50;$A$2='Planning Opérations'!C$50;$A$2='Planning Opérations'!D$50);'Planning Opérations'!B47&" "&'Planning Opérations'!C47&" "&'Planning Opérations'!D47;SI(OU($A$2='Planning Opérations'!B$56;$A$2='Planning Opérations'!C$56;$A$2='Planning Opérations'!D$56);'Planning Opérations'!B53&" "&'Planning Opérations'!C53&" "&'Planning Opérations'!D53;SI(OU($A$2='Planning Opérations'!B$61;$A$2='Planning Opérations'!C$61;$A$2='Planning Opérations'!D$61);'Planning Opérations'!B58&" "&'Planning Opérations'!C58&" "&'Planning Opérations'!D58;SI(OU($A$2='Planning Opérations'!B$66;$A$2='Planning Opérations'!C$66;$A$2='Planning Opérations'!D$66);'Planning Opérations'!B63&" "&'Planning Opérations'!C63&" "&'Planning Opérations'!D63;SI(OU($A$2='Planning Opérations'!B$71;$A$2='Planning Opérations'!C$71;$A$2='Planning Opérations'!D$71);'Planning Opérations'!B68&" "&'Planning Opérations'!C68&" "&'Planning Opérations'!D68;SI(OU($A$2='Planning Opérations'!B$77;$A$2='Planning Opérations'!C$77;$A$2='Planning Opérations'!D$77);'Planning Opérations'!B74&" "&'Planning Opérations'!C74&" "&'Planning Opérations'!D74;SI(OU($A$2='Planning Opérations'!B$82;$A$2='Planning Opérations'!C$82;$A$2='Planning Opérations'!D$82);'Planning Opérations'!B79&" "&'Planning Opérations'!C79&" "&'Planning Opérations'!D79;SI(OU($A$2='Planning Opérations'!B$87;$A$2='Planning Opérations'!C$87;$A$2='Planning Opérations'!D$87);'Planning Opérations'!B84&" "&'Planning Opérations'!C84&" "&'Planning Opérations'!D84;SI(OU($A$2='Planning Opérations'!B$92;$A$2='Planning Opérations'!C$92;$A$2='Planning Opérations'!D$92);'Planning Opérations'!B89&" "&'Planning Opérations'!C89&" "&'Planning Opérations'!D89;SI(OU($A$2='Planning Opérations'!B$99);'Planning Opérations'!B95&" "&'Planning Opérations'!C95&" "&'Planning Opérations'!D95;SI(OU($A$2='Planning Opérations'!B$104);'Planning Opérations'!B100&" "&'Planning Opérations'!C100&" "&'Planning Opérations'!D100;SI(OU($A$2='Planning Opérations'!B$109);'Planning Opérations'!B105&" "&'Planning Opérations'!C105&" "&'Planning Opérations'!D105;SI(OU($A$2='Planning Opérations'!B$114);'Planning Opérations'!B110&" "&'Planning Opérations'!C110&" "&'Planning Opérations'!D110;SI(OU($A$2='Planning Opérations'!B$120);'Planning Opérations'!B116&" "&'Planning Opérations'!C116&" "&'Planning Opérations'!D116;SI(OU($A$2='Planning Opérations'!B$125);'Planning Opérations'!B121&" "&'Planning Opérations'!C121&" "&'Planning Opérations'!D121;SI(OU($A$2='Planning Opérations'!B$133);'Planning Opérations'!B126&" "&'Planning Opérations'!C126&" "&'Planning Opérations'!D126;SI(OU($A$2='Planning Opérations'!B$141);'Planning Opérations'!B134&" "&'Planning Opérations'!C134&" "&'Planning Opérations'!D134;SI(OU($A$2='Planning Opérations'!B$150);'Planning Opérations'!B143&" "&'Planning Opérations'!C143&" "&'Planning Opérations'!D143;SI(OU($A$2='Planning Opérations'!B$158);'Planning Opérations'!B151&" "&'Planning Opérations'!C151&" "&'Planning Opérations'!D151;""))))))))))))))))))))))))))
Imaginez que cette formule est tiré sur plus de 30.000 cases ... d'ou la lenteur du programme.
D'avance merci
Thielemans Corentin
Bonjour Corentin et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment
- Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).
Bonne participation
Cordialement
Bonjour,
Voici un fichier aidant à la compréhension de mon problème :
Dans l'onglet "Opérations", on retrouve le template utilisé. La personne qui encode les données, les encode de cette manière pour chaque transport ( 2 dans ce cas-ci ). Chaque transport est susceptible d'accueillir 3 chauffeurs ( A,B,C pour le transport 1 et D,E,F pour le transport 2).
Dans le second onglet , "Planning chauffeur", on retrouve les même informations mais trié par chauffeur.
Mon Excel vient automatiquement mettre les données d'une feuille à l'autre grâce à une fonction SI imbriqué. Je lui dit que si 'Chauffeur A' sur l'onglet planning chauffeur est égal à 'Chauffeur A ou B ou C' alors il recopie la cellule n° dossier. En tirant la formule cela fonctionne.
Le problème est que vu le nombre de formule ( 1 formule par case, 15 case par jour/ par chauffeur multiplié par 16 chaffeurs et 365 jours ), l'excel est très lent à l'enregistrement et à la sauvegarde. Une macro pourrait surement alléger le fichier, mais je ne sais pas comment m'y prendre.
Pourriez-vous m'aiguiller ?
Merci d'avance