Améliorer un code
Bonjour,
J'ai une macro qui fonctionne bien mais qui est lente à s'exécuter dans le fichier original. Le fichier original est légèrement lent de part son volume mais ça reste ok, seule la macro dans le fichier joint met 3 à 4 secondes pour s'exécuter. J'ai testé sur 2 autres pc et c'est la même chose.
Du coup, je me demandais s'il serait possible d'alléger le code peut être. Je me suis pas mal fait aidé par chatgpt mais j'ai rapidement compris qu'il dépannait uniquement.
Pour faire bref, j'ai plusieurs enclos de moutons. Chaque enclos a 2 béliers pour environ 10 brebis sur une certaine période. J'ai donc la date de placement puis la date de séparation (celle-ci est rempli lorsque les moutons changent d'enclos). Chaque individu est muni d'une puce et d'une ID (récupéré par recherchev sur une autre feuille). Si l'accouplement est observé, il est noté, sinon on saura lors de la mise bas dans quel enclos elle était et qui était le père.
Les colonnes M et N me permettent de contrôler que je n'ai pas fait d'erreur au niveau de la saisie. Elles vérifient donc que la date de séparation d'un individu a bien saisie avant de saisir la date de placement de ce même individu dans un autre enclos sur au moins une journée de différence.
Si je n'ai pas été assez clair n'hésitez pas,
Merci d'avance pour votre aide
Bonjour,
1ère remarque : votre tableau est un tableau structuré nommé "Tableau3", mais dans votre code, ça n'apparaît pas, si vous avez demandé à ChatGpt de vous fournir le code, il fallait lui préciser que vous travailliez sur un tableau structuré.
2ème remarque: sur cette ligne:
ws.Range("F6:F" & 6 + Me.Brebis.Value - 1).FormulaLocal = "=RECHERCHEV(F" & i & ";Cheptel!$B$5:$R$1048576;2;0)"
Quelle est la valeur de i ? Je suppose qu'il fait partie d'une boucle Fot next i , mais pas elle n'existe pas. donc i=0
La feuille "Cheptel " n'est pas visible, mais il serait bon dans déterminer la longueur réelle plutôt que de lui affecter le nombre de lignes max de 1048576, avec i =0 et le nombre de lignes max, la recherche peut voir son temps d'exécution augmenter. En corrigeant ces 2 points, cela devrait améliorer ce temps.
Cdlt
Bonjour,
Effectivement j'ai tableau structuré nommé "Tableau3" mais je ne dois pas inclure la ligne 5 puisque c'est une ligne de mise en forme et qui me permet de reprendre les formules de recherchev dans les colonnes adéquates. Peut être que je devrais redimensionner le tableau à partir de la ligne 6.
Pour la formule, comment devrais-je l'intégrer ici : ws.Range("B6:B" & 6 + Me.Brebis.Value - 1).Value = CDate(Me.DatePlacement.Value) ?
Concernant la 2ème remarque, effectivement il n'y pas de boucle mais c'était l'idée, je la remplacerai donc par :
ws.Range("F6:F" & 6 + Me.Brebis.Value - 1).FormulaLocal = "=RECHERCHEV(G6;Cheptel!$B$5:$R$1048576;2;0)" Qu'en pensez-vous ?
J'ai joint un nouveau fichier avec deux autres feuilles qui pourraient potentiellement vous aider à mieux comprendre. Il se pourrait que les macros dans la feuille cheptel ne fonctionne pas à 100% puisqu'il s'agit simplement d'une copie de la feuille.
re,
n'est-ce pas plus facile/pratique d'avoir 3 tableaux structurés
* tableau avec chaque bête individuel (male/female) + enclo + data placement + date séparation
* tableau avec les accouplements observés
* tableau avec les dates "mis bas" avec récalculation de l'accouplement + affirmation du père
Oui, j'ai fini par comprendre le principe et résoudre le problème.
Merci pour vos éclaircissements !