Dupliquer une feuille contenant un Worksheet_Calculate

Bonjour,

Je dois construire un outil de préconisation en engrais pour chaque culture (blé/orge/colza).
Pour cela j'ai créé une feuille type "Précos".Sur cette fiche "Précos", j'ai un Sub Private Worksheet Calculate qui est intégré afin que des calculs se lance automatiquement.
La feuille "Assolement" récapitule le nombre de parcelle/culture.

A partir de la feuille Assolement, je lance une marcro (bouton "Préconisation") qui va dupliquer la feuille "Précos" et la renommer du nom de la parcelle, autant de fois que j'ai de parcelles. La fonction worksheet_calculate est donc dupliquer sur chaque nouvelle feuille.

Sauf que, en commençant mes précos sur les parcelles, j'ai des liens entre elles ou ça ne prend pas la bonne feuille et ça me créé des bugs que je n'arrive pas à résoudre.
Le fichier excel est en pièce jointe.

Pouvez-vous m'aidez?

Bonjour,

J'ai regardé un peu ton fichier > ça manque un peu de données (bidon) afin de faire fonctionner les macros pour comprendre d'où vient le souci ...

A+

ric

Bonjour,

Quels types de données bidon. J'avais regardé avant de le mettre pour voir si on pouvais l'utiliser tel quel. Mais si besoin d'informations je peux en rajouter si il le faut.

Bonjour,

Je ne comprends pas trop le traitement ...

Feuille "Assolement" > l'on entre les Parcelles, culture, variété, précédent et surface > puis, l'on clique le bouton "Préconisatifon" > jusque là tout va bien...

Les nouvelles feuilles sont créées > dans les feuilles créés> l'on saisit les produits en colonne C et le dosage en colonne E selon le programme (cellule N2) ...

Quand la saisi est terminé pour les nouvelles feuilles > l'on clique le bouton "MAJ Quantités autres onglet" > c'est là que tu dis qu'il y a des confusions ...

Effectivement, je suis confus > ce que j'aimerais comprendre > que doit faire ce traitement ? > si j'ai compris un peu ...

- De la feuille "Assolement" > il parcourt la liste des Parcelles nouvellement créées > sur chacune des feuilles correspondantes > ????? > c'est là je m'y perds ...

Tu serais bien aimable de me décrire le traitement désiré > j'en ai compris un bout > mais pas tout ...

Je crois qu'il sera aisé de coder différemment afin d'évite les confusions et lors des aller-retour (activate) > le traitement serait plus rapide ...

Merci de ton attention ...

ric

Bonsoir,

Voici le traitement:

- Je renseigne la parcelle, la culture, la surface etc dans la feuille "Assolement" (Ici le nom des parcelles est BT, COLZA, ORGE)

- Je clique sur "Préconisation" pour lancer ma macro, qui va me permettre de créer une feuille pour chaque parcelle, en copiant la feuille "Precos" et en renommant la feuille du nom de la parcelles (donc trois feuilles apparaissent dans cet ordre "BT","COLZA","ORGE").

- Ensuite dans chacune des feuilles créées, je vais renseigner un engrais en colonne C et une dose en colonne D. A chaque fois que je vais renseigner un engrais et une dose, une macro est lancée automatiquement pour calculer les quantités totales d'engrais que cela représentent (en copiant la feuille "Precos", j'ai aussi copié la macro qui était dessus en Private Sub Worksheet_Calculate)

- Le bouton "MAJ Quantités autres onglet", lui, sert à reprendre les données des autres feuilles, et ainsi voir simple un récap, pour toutes les parcelles, des quantités d'engrais commandées. Mais (normalement) n'a pas de lien avec le problème que je rencontre.

Mon soucis, c'est quand je lance la création des feuilles, et que je commence à saisir le premier engrais dans la feuille "BT", il me plante. J'ai l'impression que la macro Private Sub Worksheet_Calulate utilisée est celle de la feuille "COLZA" mais par celle du "BT". Et la je ne comprends pas pourquoi.

Est ce que j'ai mieux expliqué le traitement?

Agrimaman

Bonjour,

J'ai fini pas comprendre le traitement > j'ai dû faire du pas-à-pas (touche F8 sur le code) au moins 20 fois si ce n'est plus ...

Le contenu de la macro "MAJ Quantités autres onglets" (Private Sub CommandButton1_Click()) est maintenant rendu dans le Module1 ...

Il ne reste que l'appel dans la feuille BT, COLZA et autres ...

Il n'y a plus de changement de feuille > le traitement est plus rapide > au point que l'on a l'impression qu'il n'a traité qu'une seule feuille ...

J'ai aussi corrigé quelques erreurs ...

Si ce changement te convient > je vais modifier tes autres macros pour tenter de les améliorer un tantinet > et du même élan > avoir une seule macro pour un type de traitement pour toutes les feuilles ...

Longue vie aux coopératives

ric

Le fichier a été modifié ...

Bonjour

C'est bon ça marche mais c'était quoi le soucis, pour que je comprenne.

Agrimaman

Bonjour,

Un des soucis est sur cette ligne > les cells ne sont pas référenciés > sans références, ils prennent la feuille active ...

Set PlageValeur = Sheets(Nom_Onglet).Range(Cells(5, ColCulture), Cells(LigneEngrais, ColCulture))

Pour les référencier ...

Set PlageValeur = Sheets(Nom_Onglet).Range(Sheets(Nom_Onglet).Cells(5, ColCulture), Sheets(Nom_Onglet).Cells(LigneEngrais, ColCulture))

Mais je préfère >

Remarque les . devant .Range et .Cells

With Sheets(Nom_Onglet)
Set PlageValeur = .Range(.Cells(5, ColCulture), Cells(LigneEngrais, ColCulture))
end with

ric

Ok nickel, j'aurais appris quelque chose. Merci

Bonjour,

Voici une nouvelle version de ton fichier où les 3 macros sont dans le Module1 > il ne reste que leur appel dans les feuilles même ...

Il y a l'avantage que si tu veux faire une correction > elle a besoin d'être faite à un seul endroit pour toutes les feuilles à traiter ...

Une variable "Public" (afin d'en passer le contenu entre modules) au haut du module1 ...

Si tu as des questions > n'hésite pas ...

Agricolement vôtre ...

ric

Je regarde celui mais merci beaucoup d'avance ;)

Rechercher des sujets similaires à "dupliquer feuille contenant worksheet calculate"