Lier 2 cellules afin qu'elles restent identiques - VBA (Urgent)
SebLkp
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai créé un document Excel complexe qui aura pour finalité d'être utilisé par plusieurs personnes différentes. C'est un document qui effectue une multitude de calculs en fonction de quelques paramètres.
Mon document se construit comme ceci :
Feuille 1 : Paramètres très basiques, pour aller à l'essentiel
Feuille 2 : Paramètres plus avancés
Feuille 3 : Calculs
Feuille 4 : Résultats
Les calculs sont effectués en fonction des paramètres de la Feuille 2 exclusivement. La Feuille 2 récapitule également les paramètres trouvés sur la Feuille 1.
Pour le moment, lorsque je saisi un paramètre dans la Feuille 1, il s'actualise dans la Feuille 2 (Par une simple formule =[Feuille 1]A1)
Oui mais voilà, alors que certains utilisateurs procèdent de cette manière, d'autres préfèrent aller directement saisir tous les paramèters directement dans la Feuille 2. Du coup écrasent mes formules de type "=[Feuille 1]A1" et donc la Feuille 1 n'actualise pas car elle n'est pas dépendante de ma Feuille 2. Et cela crée des complications dans la compréhension et l'interpretation de mes utilisateurs.
J'aimerais lier ces cellules de manière à ce que :
- Si la cellule change sur Feuille 2, la cellule sur Feuille 1 changera aussi
- Et inversement
Une sorte de référence circulaire, mais je ne peux le faire avec des formules Excel car ces cellules seront vouées à être modifiées à la main en permanence. Je veux juste que, quoi qu'il arrive, elles restent égales.
J'ai déjà essayé de rédiger quelques codes VBA, mais en vain...
Merci beaucoup pour votre aide.
Sébastien
J'ai créé un document Excel complexe qui aura pour finalité d'être utilisé par plusieurs personnes différentes. C'est un document qui effectue une multitude de calculs en fonction de quelques paramètres.
Mon document se construit comme ceci :
Feuille 1 : Paramètres très basiques, pour aller à l'essentiel
Feuille 2 : Paramètres plus avancés
Feuille 3 : Calculs
Feuille 4 : Résultats
Les calculs sont effectués en fonction des paramètres de la Feuille 2 exclusivement. La Feuille 2 récapitule également les paramètres trouvés sur la Feuille 1.
Pour le moment, lorsque je saisi un paramètre dans la Feuille 1, il s'actualise dans la Feuille 2 (Par une simple formule =[Feuille 1]A1)
Oui mais voilà, alors que certains utilisateurs procèdent de cette manière, d'autres préfèrent aller directement saisir tous les paramèters directement dans la Feuille 2. Du coup écrasent mes formules de type "=[Feuille 1]A1" et donc la Feuille 1 n'actualise pas car elle n'est pas dépendante de ma Feuille 2. Et cela crée des complications dans la compréhension et l'interpretation de mes utilisateurs.
J'aimerais lier ces cellules de manière à ce que :
- Si la cellule change sur Feuille 2, la cellule sur Feuille 1 changera aussi
- Et inversement
Une sorte de référence circulaire, mais je ne peux le faire avec des formules Excel car ces cellules seront vouées à être modifiées à la main en permanence. Je veux juste que, quoi qu'il arrive, elles restent égales.
J'ai déjà essayé de rédiger quelques codes VBA, mais en vain...
Merci beaucoup pour votre aide.
Sébastien
A voir également:
- Lier 2 cellules afin qu'elles restent identiques - VBA (Urgent)
- Supercopier 2 - Télécharger - Gestion de fichiers
- Fusionner 2 cellules excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Excel compter cellule couleur sans vba - Guide
4 réponses
Bonjour,
Merci beaucoup pour ta réponse !
Comme tu l'a suggéré, mes 8 paramètres se situent sur une même colonne dans la feuille 1 => Parfait.
Cependant dans ma feuille 2, les paramètres ne sont pas du tout organisés de la même manière et varient de colonne ET de ligne pour presque chacune d'entre elles...
En fait il me faudrait J7 lié à D13, J8 à D14, J9 à D7, J14 à N20, J15 à N22....
Je pensais à répéter 8 fois ton code dans la maccro, en changeant :
Set pl = Intersect(Target, [J7])
Pour ne préciser qu'une seule case, qui renverrait à une seule case dans ma deuxième feuille, et répéter l'opération 8 fois avec différentes correspondances...
Comment dois-je modifier la ligne
Sheets("Feuill2").Range(c.Address).Value = Target
Afin qu'il ne renvoit pas à Address mais à une autre cellule ?
Sheets("Feuill2").Range(c."D13").Value = Target
C'est correct ?
Merci beaucoup pour ton aide.
Sébastien
Merci beaucoup pour ta réponse !
Comme tu l'a suggéré, mes 8 paramètres se situent sur une même colonne dans la feuille 1 => Parfait.
Cependant dans ma feuille 2, les paramètres ne sont pas du tout organisés de la même manière et varient de colonne ET de ligne pour presque chacune d'entre elles...
En fait il me faudrait J7 lié à D13, J8 à D14, J9 à D7, J14 à N20, J15 à N22....
Je pensais à répéter 8 fois ton code dans la maccro, en changeant :
Set pl = Intersect(Target, [J7])
Pour ne préciser qu'une seule case, qui renverrait à une seule case dans ma deuxième feuille, et répéter l'opération 8 fois avec différentes correspondances...
Comment dois-je modifier la ligne
Sheets("Feuill2").Range(c.Address).Value = Target
Afin qu'il ne renvoit pas à Address mais à une autre cellule ?
Sheets("Feuill2").Range(c."D13").Value = Target
C'est correct ?
Merci beaucoup pour ton aide.
Sébastien
Bonjour
réponse certainement idiote:
pourquoi ne pas mettre la feuille 2 en "veryhidden" (très cachée) ou protéger en écriture la zone sensible ?
réponse certainement idiote:
pourquoi ne pas mettre la feuille 2 en "veryhidden" (très cachée) ou protéger en écriture la zone sensible ?
Bonjour,
Merci pour votre réponse.
Le fait est que la Feuille 1 va être utile pour un certain type d'utilisateurs qui va vouloir aller à l'essentiel, avec seulement 8 paramètres.
Afin d'être plus précis, certains utilisateurs vont vouloir rentrer plus dans le détail et utiliser la Feuille 2, qui elle propose environ 40 paramètres dont les 8 présentés sur la Feuille 1.
De ce fait les deux Feuilles doivent rester accessibles...
Sebastien
Merci pour votre réponse.
Le fait est que la Feuille 1 va être utile pour un certain type d'utilisateurs qui va vouloir aller à l'essentiel, avec seulement 8 paramètres.
Afin d'être plus précis, certains utilisateurs vont vouloir rentrer plus dans le détail et utiliser la Feuille 2, qui elle propose environ 40 paramètres dont les 8 présentés sur la Feuille 1.
De ce fait les deux Feuilles doivent rester accessibles...
Sebastien
Bonjour à tous,
michel t'aurais donné la réponse mais comme je suis de passage, dans le module Feuil1 :
idem mais en adaptant dans le module Feuil2
eric
edit : petite évol comme je viens de voir que tu avais 8 cellules :
en les supposant consécutives (et les emplacements identiques).
Sinon remplace [A1:A8] par union([A1:A3],[A10:A14],[A18]) etc
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
michel t'aurais donné la réponse mais comme je suis de passage, dans le module Feuil1 :
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$A$1" Then Sheets("Feuil2").[A1].Value = Target Application.EnableEvents = True End Sub
idem mais en adaptant dans le module Feuil2
eric
edit : petite évol comme je viens de voir que tu avais 8 cellules :
Private Sub Worksheet_Change(ByVal Target As Range) Dim pl As Range, c As Range Set pl = Intersect(Target, [A1:A8]) If Not pl Is Nothing Then Application.EnableEvents = False For Each c In pl Sheets("Feuil2").Range(c.Address).Value = Target Next c Application.EnableEvents = True End If End Sub
en les supposant consécutives (et les emplacements identiques).
Sinon remplace [A1:A8] par union([A1:A3],[A10:A14],[A18]) etc
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
là les valeurs doivent être modifiées une par une. Si un collé d'une plage peut avoir lieu il faut faire un mix entre la pécédente proposition et celle-ci.
eric