Bonjour à tous,
Je me débrouille un petit peu en VBA, du moins je cherche par moi-même et c'est pourquoi parfois j'ai un code qui est fonctionnel mais pas optimal...
Je vais tenter de vous expliquer rapidement mon souci.
Je dois gérer des arrêts techniques dans mon travail, et nous avons donc des BT (bons de travail) qui se génèrent périodiquement dans une GMAO (Gestion de maintenance assistée par ordinateur), une base de données en gros.
Nous pouvons extraire les données sous format Excel afin de travailler avec comme on le souhaite, ce que je fais pour planifier les différents BT, ajouter infos, etc.
Lors d'un changement d'état, c'est-à-dire passage de "A réaliser" à "En cours" par exemple, il fallait fouiller dans la GMAO pour trouver où en était le BT.
A savoir qu'il y a environ 2000 BT/an, donc c'est relativement em...........
J'ai donc pensé générer tous les jours une extraction de la GMAO, et créer un VBA qui va me mettre à jour les états.
Cela se passe comme ça : Import de la nouvelle extraction ajoutée à la suite de la dernière, et ensuite, 2 boucles imbriquées qui viennent prendre la première ligne de l'ancien tableau, pour la comparer à la première ligne du nouveau tableau, puis à la deuxième, etc... Jusqu'à trouver une correspondance : Si le code trouve deux lignes identiques (par rapport au numéro de BT), il supprime l'ancienne, donc il me garde celle avec le nouvel état, donc à jour. S'il ne trouve pas de deuxième ligne, il laisse, s'il ne trouve qu'une nouvelle ligne, il l'ajoute, c'est un nouveau BT qui a été ajouté en GMAO.
Le souci que j'ai, c'est qu'à l'import je me trouve avec donc 2x 2000 BT (En ce moment même 4x car je reviens sur 2018), donc le programme met une eternité à avancer.
Je suis quasi sur que ma méthode n'est pas la meilleure, car il va rechercher TOUTES les lignes, pour avoir 99% de non trouvé -> Inutile, mais je ne suis pas un pro et sur quelques lignes ça fonctionne bien.
Auriez-vous une idée de comment procéder pour accelérer ça ? Partir d'un RECHERCHEV par exemple ?
Je pourrais juste utiliser la nouvelle extraction me direz-vous, mais le problème est que je planifie avec ce fichier, donc je marque par exemple une date dans les colonnes suivantes, et avec mon programme il va récupérer les infos, et les remettre aux bons endroits sur la nouvelle ligne à chaque fois...
Merci d'avance de votre aide.
Partager