Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Lier cellules dans plusieurs feuilles

  • Initiateur de la discussion Initiateur de la discussion phyfi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

phyfi

Guest
Bonjour,

J'ai plusieurs feuilles avec des cellules de E1 à X1 qui se retrouvent à l'identique dans toutes les feuilles.
Je voudrais que, si je fais un modification dans la première feuille, ces modifications soient répercutées automatiquement dans les feuilles suivantes.
De plus ces cellules contiennent des commentaires, j'aimerai que ceux-ci soient également transférés/mis à jour

Merci d'avance si vous avez des idées

Phyfi

PS
 
Dernière modification par un modérateur:
Re : Lier cellules dans plusieurs feuilles

Bonjour,
Super !
Effectivement cela fonctionne...mais j'ai deux petites contraintes qui n'apparaissaient pas dans mon mail initial :
En fait la feuille modèle est copiée un certain nombre de fois selon un nombre de noms présent dans une feuille "noms" juste après la feuille modèle (aléatoire selon le nombre de noms)
Il faudrait donc que le bouton ne soit pas copiée sur toutes les autres feuilles et que la mise à jour des cellules E1 à X1 s'effectue sur toutes les feuilles copiées.
Ce qui donnerait cela :
Au départ deux feuilles dans le classeur une feuille "modèle" et une feuille "nom"
Après remplissage de la feuille "nom" avec les noms (nombre de noms aléatoire) , on crée les feuilles identiques à la feuille modèle et ces feuilles copiées ont chacune un nom prise dans la feuille "Noms" (Ce code là est fait) (exemple : feuille "toto", feuille "titi",...)
Ensuite quand on change quelque chose dans les celllules E1:X1 de la feuille modèle, cela répercute les changements dans les feuilles "toto", "titi",...
J'espère avoir été clair.

Merci d'avance
Phyfi
 
Re : Lier cellules dans plusieurs feuilles

Salut phyfi et le forum
Ton premier titre était mieux (quoiqu'à l'envers) 😀
Juste une question : Les cellules E1:X1 sont les mêmes dans toutes les feuilles => est-ce que seules celles de la feuille modèle sont modifiables, ou n'importe quelles cellules de la plage peut être modifiée dans n'importe quelle feuille, et la modification doit être répercutée ?

Le fait d'inclure les commentaires créant quelques difficultés (à priori, leur modification ne déclenche aucune procédure évènementielle, du moins, à ma connaissance), il y a plusieurs moyens d'y parvenir. Ne connaissant pas l'utilisation du fichier, c'est à toi que reviendra le choix de déterminer la meilleure méthode :
- Tout changement est reporté instantanément sur toutes les feuilles : inconvénient prévisible : la lenteur (en fonction du nombre de feuilles).
- Tout changement est reporté instantanément sur la feuille modèle et sur les feuilles actives. À chaque activation d'une feuille, on copie les cellules de la feuille modèle sur la feuille active : inconvénient prévisible : si une référence d'une feuille est liée à un autre fichier, on peut avoir des disfonctionnements.
Et les macros peuvent interférer avec d'autres macros évènementielles
A+
 
Dernière édition:
Re : Lier cellules dans plusieurs feuilles

Bonjour Gorfael,

Merci de t'occuper de mon problème, je vais essayer d'être très précis, comme cela la qualité de la réponse n'en sera que meilleure 🙂
En fait je ne suis pas très doué en vba mais j'essaie d'apprendre et au début il faut pas mal d'aide quand même.
Donc je suis enseignant au collège et nous devons évaluer des compétences (les compétences du socle commun). Pour cela j'essaie de créer un classeur pour suivre l'évolution au cours des différentes évaluations. En première feuille j'ai une feuille modèle avec sur les lignes les différentes compétences et en en colonnes les différentes évaluations.Aux intersections, en double cliquant sur les cellules on fait apparaître partiellement acquis (PA) ou acquis (A) (double clic supplémentaire) et cela comptabilise en fin d'année les différentes acquisitions
En haut dans les évaluations (E1 à X1) on peut en double cliquant sur les cellules entrer un commentaire afin de préciser ce que l'on a fait exactement durant l'évaluation.
Évidemment en début d'année les commentaires n'y sont pas, ils sont mis dans la feuille modèle au fur et à mesure de l'année et des evals.
Une deuxième feuille "noms" permet d'entrer les noms des élèves de la classe et de créer les feuilles élèves à partir de la feuille modèle pour l'évaluation de chaque élève. C'est donc ces feuilles élèves que je veux mettre à jour au fur et à mesure que j'entre des commentaires (De E1 à X1) dans la feuille modèle. Donc les deux méthodes peuvent convenir même si j'ai une préférence pour la seconde.

Tant qu'on y est, j'en profite lachement. j'ai d'autres petites améliorations à trouver.: ma génération de feuilles élèves est super lente : je pense que c'est parce que j'ai mis les private sub dans la feuille modèle ce qui fait que je les recopie dans chaque feuille. J'aurai préféré les mettre dans module1 mais là cela ne marche pas
Et dernière chose pour les boutons masquer de la feuille modèle, j'ai créé82 lignes comme celles-ci

Private Sub CommandButton1_Click()
Rows(CommandButton1.TopLeftCell.Row).Hidden = True
End Sub

Mais je pense qu'on peut bien mieux faire. D'ailleurs mon code est celui d'un novice total, je n'ai fait que glaner ici et là les infos pour le faire. Si des améliorations sont faisables, je suis preneur !
Bizarrement je n'arrive pas à joindre de pièce jointe donc voici un lien où télécharger le fichier

Ce lien n'existe plus


Merci d'avance si certains arrivent à me solutionner l'une ou l'autre problématique
Phyfi
 
Dernière modification par un modérateur:
Re : Lier cellules dans plusieurs feuilles

Salut phyfi et le forum
C'est juste pour voir si mon zippeur est compatible (7-zip)
Donc, j'ai été obligé de passer tes boutons en formulaire.
Une seule macro dans le module pour tous les boutons. Effectivement, c'est un peu plus rapide 😀.
Je suis sur le reste de la demande.
A+
 

Pièces jointes

Re : Lier cellules dans plusieurs feuilles

D'enfer Gorfael ! C'est nickel et très très légèrement plus rapide😉 L'avantage c'est qu'avec ma feuille j'avais le temps d'aller me faire un kawa.
J'attends patiemment mais avec envie le reste... J'aime Internet et le partage !

Merci.
Phyfi
 
Dernière modification par un modérateur:
Re : Lier cellules dans plusieurs feuilles

Salut phyfi et le forum
N'ayant pas mon micro (j'en squatte un autre), je mets du temps à envoyer des résultats...

Après bien des essais, pour savoir si le commentaire suivait bien, avec addition/suppression de feuilles, je suis revenu à un raisonnement plus simple :
Quelque soit la feuille, pour modifier le commentaire, il faut qu'elle soit active, à moins de le faire par macro (mais là, c'est une autre histoire).
Donc, si je crée/modifie/efface un commentaire, il est sur la feuille active.
En sortant, il me suffit de copier les cellules sur la feuille modèle => les modifications se retrouvent sur la feuille modèle.

si une feuille ne contient pas les commentaires, il suffit, à son activation de copier les cellules de la feuille modèle.

Les valeurs/commentaires de la feuille active sont ainsi, soit ceux qui viennent d'être modifiés, et peuvent différer de la feuille modèle, soit la copie de la feuille modèle. et ceux, avec deux macros simples.
Reste le problème de la sortie : j'utilise BeforeClose, avec le même code que celui de sortie.
Module ThisWorkBook :
Code:
Option Explicit     'Impose une déclaration des variables
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sh.Name <> "_Noms" And Not (Sh.Name Like "_Feuille_modèle*") Then
    Sh.[E1:X1].Copy Sheets("_Feuille_modèle").[E1:X1]
End If
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "_Feuille_modèle" And Sh.Name <> "_Feuille_modèle" Then
    Sheets("_Feuille_modèle").[E1:X1].Copy Sh.[E1:X1]
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> "_Noms" And Not (Sh.Name Like "_Feuille_modèle*") Then
    Sh.[E1:X1].Copy Sheets("_Feuille_modèle").[E1:X1]
End If
End Sub
S'il y a besoins d'explications, les demander : dans les codes, une chose à peu près comprise finie toujours par faire un bug 😀.

J'avoue que de taper sur un clavier de portable m'amène des fois à des actions non voulue, ce qui fait que je n'ai pas regardé tes macros, mais hormis le problème de la gestion des erreurs, que je crois nécessaire quand on utilise des instructions qui modifient Excel (application.instruction), je n'ai rien vu qui nécessiterait une intervention de ma part.
A+
 
Re : Lier cellules dans plusieurs feuilles

Bonjour Gorfael et le fourm
Donc j'ai placé le code dans this workbook et j'ai testé.
Cela marche mais cela fait planter le programme (sous excel 2000)😉
Test : Je crée les fiches élèves et je vais dans chacune des fiches sans avoir changé les commentaires de la feuille modèle. Pas de problème elles s'affichent vite. Sauf que les cellules E1 X1 sont copiées dans la feuille _noms
Je retourne dans la fiche modèle sans rien changer et je retourne dans les fiches élèves et là cela devient très lent voire plante alors que je n'ai rien changé dans le modèle.
Si je change un commentaire dans le modèle juste après avoir créé les noms (sans aller dans les feuilles élèves), le commentaire est bien créé dans les feuilles élèves mais même comportement qu'avant quand je retourne dans la feuille modèle, ensuite les feuilles élèves sont très lentes
Je pense qu'il y a un comme un problème ... à moins que ce ne soit ma version d'excel

En tout cas merci pour l'investissement
Phyfi
 
Re : Lier cellules dans plusieurs feuilles

Salut phyfi et le forum
Sauf que les cellules E1 X1 sont copiées dans la feuille _noms
Celle-ci est facile à corriger. Il suffit de remplacer :
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "_Feuille_modèle" And Sh.Name <> "_Feuille_modèle" Then
par
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "_Noms" And Sh.Name <> "_Feuille_modèle" Then
Comme quoi abuser de <Ctrl>+<Z> peut nuire gravement à la santé des programmes 😀.

Par contre, pour le reste, je viens de tester, et effectivement, c'est loooooong. Et je ne comprends pas 😕.
Tout se passe comme si au fur et à mesure une pile s'augmentait, sans jamais se décharger.
J'ai copié les 2 feuilles dans un nouveau classeur, ai copié les macros et réaffecté les boutons => même résultat.
Donc, pour l'instant, je cherche.

Ça semblait une solution simple. Sur des cellules, la problématique et simple : tout changement déclenche WorkSheet_Change. mais sur les commentaires... pas de macro à lancement automatique, et si le commentaire n'existe pas, sur le modèle ou le nouveau, vouloir le tester déclenche une erreur.

Une solution consisterait à stocker l'adresse des cellules de E1:X1 quand on les sélectionne. et quand on sort, on copie les cellules sur toutes les feuilles => la copie ne serait plus alors systématique.

Une possibilité de l'erreur peut provenir du nom des feuilles qui commencent par "_", on ne sait jamais. À tester... mais j'y crois pas trop.
A+
 
Re : Lier cellules dans plusieurs feuilles

Salut Gorfael et le forum...

Je viens de changer les noms des feuilles et le résultat est le même après quelques allers retours dans des fiches élèves , cela rame de plus en plus. En attendant un temps certain, j'ai un message d'erreur "Variable non définie" et il m'indique la variable sh qui apparaît en premier.
Autre chose , si je fais une modif de commentaire dans une feuille élève, il n'est pas utile que celle-ci se retrouve dans la feuille modèle. En fait les commentaires dans les feuilles élèves ne devraient pas être modifiables.

Je pensais à une autre solution, peut-être plus simple : comme l'avait proposé olive 123 et qui marchait bien (sauf que les feuilles où l'on copiait les cellules avaient des noms bien définies), on pourrait imaginer un bouton (par exemple dans la feuille noms) qui déclenche une macro afin de copier les cellules modèles (E1 à X1) dans les feuilles élèves. Cela éviterait peut être que la macro s'active à chaque fois qu'on visualise une feuille élève (alors que peut-être il n'y a eu aucun changement).
Si jamais le bug rencontré n'est pas résolu, cela peut être une alternative, non ?

Phyfi
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
221
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…