Communication entre 2 cellules - Excel

Fermé
Peyo - 22 juil. 2011 à 15:28
Le Pingou Messages postés 11538 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 mars 2023 - 13 août 2011 à 10:24
Bonjour à toutes et à tous !

L'objet de ma question étant difficile à formuler dans le titre du sujet, je vais tacher d'être clair.
Je travaille sous Excel 2007 sur un fichier contenant 2 feuilles : chacune contient un tableau, appelons-les respectivement "tableau 1" et "tableau 2" (que d'originalité ^^ !)
Actuellement, le tableau 2 appelle -pour les afficher à son tour- les données du tableau 1. Par conséquent, je contrains alors l'utilisateur à entrer ses données dans le tableau 1.
Or, j'aimerai lui offrir la possibilité de les entrer indifféremment dans le 1 ou dans le 2 selon le fonctionnement suivant (d'où le "communication" du titre) :
- si l'utilisateur modifie les données dans le tableau 1, elles sont automatiquement affichées dans 2
- inversement, si l'utilisateur modifie les données dans le tableau 2, elles sont automatiquement affichées dans 1

Je pensais tout d'abord simplement mettre en place des fonctions "SI" pour tester la nullité des cellules en créant une sorte de référence circulaire entre les deux cellules, quelque chose du type :
Soient la cellule A1 de la feuille 1 et la cellule A1 de la feuille 2 un couple de cellules que je veux lier,
- dans la cellule A1 de la feuille 1 : = SI ( A1=0 ; 'Feuil2'!A1 ; A1 )
- dans la cellule A1 de la feuille 2 : = SI ( A1=0 ; 'Feuil1'!A1 ; A1 )

C'est bien joli, mais ça ne risque bien évidemment pas de fonctionner puisque, lorsque je rentre mes données dans la feuille 1 ou la feuille 2, j'écrase la formule dans la case (sans blague ? ^^) ...
Je dois donc avouer que, de prime abord, je ne vois pas comment procéder ... Par conséquent, si quelqu'un est susceptible de m'éclairer, c'est avec plaisir !

Merci beaucoup d'avance !
A voir également:

12 réponses

bonjour

avec un peu de vba:
au niveau feuille 1:
Private Sub Worksheet_Change(ByVal Target As Range)
    Feuil2.Cells(Target.Row, Target.Column).Value = Feuil1.Cells(Target.Row, Target.Column).Value
End Sub

au niveau feuille 2:
Private Sub Worksheet_Change(ByVal Target As Range)
    Feuil1.Cells(Target.Row, Target.Column).Value = Feuil2.Cells(Target.Row, Target.Column).Value
End Sub

bonne suite
1
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 243
22 juil. 2011 à 16:18
Bonjour,

Imaginons qu'une même cellule du tableau 1 et 2 soient renseignées.

Laquelle prendre en compte ? la dernière renseignée ? le tableau 1 ? le tableau 2 ?

Idéalement un des deux tableau prendrait le dessus sur l'autre.

Si tel est-le cas, un troisième tableau pourrait servir à vérifier si les tableaux 1 et 2 sont remplis.

par exemple (avec tableau 1 plus fort que tableau 2):

si tableau 1 est vide alors je prends tableau 2

si tableau 1 est renseigné, j'affiche la valeur de tableau 1

si les 2 tableaux sont vides, je reste vide

si les 2 tableaux sont renseignés, j'affiche tableau 1 et change la couleur de la cellule pour signaler le doublon.
0
Bonjour !
Merci pour la réponse !
Désolé pour mon manque de réactivité, je déterre un peu le post ...

Alors, pour répondre à la question "quel tableau aurait la priorité sur l'autre ?" : en fait je voudrais qu'une modification réalisée indifféremment dans un des deux tableaux soit systématiquement appliquée à l'autre.
En guise d'illustration :
soient la cellule A1 de la feuille 1 et la cellule A1 de la feuille 2 un couple de cellules que je veux lier, alors
- si je modifie la valeur de 'Feuil1'!A1, la valeur de 'Feuil2'!A1 est automatiquement égalée à cette valeur
- si je modifie la valeur de 'Feuil2'!A1, la valeur de 'Feuil1'!A1 est automatiquement égalée à cette valeur

Suis-je plus clair ?

D'avance, merci beaucoup pour votre aide !
0
Re-bonjour à tous !

Désolé de relancer le sujet, mais personne n'aurait de piste à me proposer ?
J'essaye de regarder du côté de la fonction "lien hypertexte" mais pour l'instant je ne trouve pas encore mon bonheur ...
N'hésitez pas à me questionner si vous trouver mes explications insuffisamment claires !


Merci d'avance pour votre aide précieuse !
0
Merci beaucoup pour ta réponse, malheureusement je ne maîtrise aucunement le VBA.
Je viens de regarder quelques cours pour débuter (on en trouve pléthore sur Internet), mais malgré les restes de quelques fondamentaux en programmation que j'ai encore, je ne dispose pas du temps suffisant (je dois trouver une solution pour la fin de la semaine et je n'ai malheureusement absolument pas le temps de me plonger spécialement dans cet apprentissage).

Pensez-vous qu'il y ait une solution sans recourir au VBA ? Je m'avoue perdu là ...

Merci d'avance !
0
Le Pingou Messages postés 11538 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 mars 2023 1 334
8 août 2011 à 16:10
Bonjour,
Il semble que vos 2 tableaux sont identiquent, puisque vous voulez entrer des données sur le premier et elles doivent se mettre automatiquement dans le deuxième et inversément !
Est-ce correct !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour Le Pingou et merci pour la réponse !

En fait, il ne s'agit pas exactement de 2 tableaux, j'ai formulé ça ainsi pour simplifier le problème.

En réalité, dans ma Feuille 1, j'ai un schéma (qui est contenu dans un rectangle de 400 x 100 cellules !!!) avec des cellules réparties "anarchiquement" dans lesquelles l'utilisateur rentre des valeurs.
Dans ma Feuille 2, j'ai un tableau récapitulatif qui affiche de manière plus organisée (plus aisé à consulter que de parcourir mon schéma) les données saisies dans la Feuille 1.

L'intérêt de saisir les données dans le schéma (Feuille 1) est que l'utilisateur visualise graphiquement les données qu'il rentre, l'inconvénient c'est que ça peut être fastidieux.
L'intérêt de saisir les données dans le tableau (Feuille 2) est que c'est plus rapide, l'inconvénient c'est que l'utilisateur ne visualise pas la signification "physique" de ses données.

Voilà pourquoi je voudrais laisser le choix à mon utilisateur de venir saisir les données indifféremment dans la Feuille 1 ou la 2.
0
Le Pingou Messages postés 11538 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 mars 2023 1 334
11 août 2011 à 18:43
Merci pour l'information.
Je suppose qu'il doit y avoir une relation entre la position d'une valeur sur le schéma et la correspondance sur la liste récapitulative !
Avec une copie du fichier sur https://www.cjoint.com/ se serait plus simple de vous proposer une solution !
0
Merci beaucoup !

Voilà qui est chose faite, si cela peut illustrer mon propos :
http://cjoint.com/?3HmiHNtsVhY

Merci d'avance !
0
Le Pingou Messages postés 11538 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 mars 2023 1 334
12 août 2011 à 13:36
Bonjour,
Merci pour l'information.
Une procédure VBA fera l'affaire.
Patience.
0
Salut,
Merci de ta réponse !

Malheureusement, comme je l'écrivais plus haut à Paf, je ne maîtrise pas du tout Visual Basic et il m'est impensable, vu le délai qui m'est imparti, que je m'y lance ...
La question est maintenant de savoir si cela peut se faire sans être obligé de coder sous VBA ^^ !
0
Le Pingou Messages postés 11538 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 mars 2023 1 334
12 août 2011 à 14:59
Bonjour,
Si vous désirez entrer les données soit sur une feuille soit sur l'autre, vous devez utiliser le VBA.
0
eriiic Messages postés 24512 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 24 mars 2023 7 168
12 août 2011 à 19:46
Bonsoir tout le monde,

Tiens, j'avais fait un blabla mais je ne le retrouve pas...
En bref : un peu la même chose que paf mais avec qcq lignes en plus pour éviter que la macro boucle.

code Feuil1 :
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [B2:E15]) Is Nothing Then
        Application.EnableEvents = False
        Worksheets("Feuil2").Cells(Target.Row, Target.Column) = Target.Value
        Application.EnableEvents = True
    End If
End Sub

code Feuil2 :
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [B2:E15]) Is Nothing Then
        Application.EnableEvents = False
        Worksheets("Feuil1").Cells(Target.Row, Target.Column) = Target.Value
        Application.EnableEvents = True
    End If
End Sub

http://www.cijoint.fr/cjlink.php?file=cj201108/cijYCvpaqZ.xls
clic-droit sur le nom d'onglet et choisir 'visualiser le code' pour acceder à vbe (et copier/coller le code)

eric
0
Le Pingou Messages postés 11538 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 mars 2023 1 334
12 août 2011 à 23:48
Bonjour,
Je vous laisse essayer : https://www.cjoint.com/?3HmxWq7jRBs
0
eriiic Messages postés 24512 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 24 mars 2023 7 168
13 août 2011 à 00:14
Salut le pingou,

Effectivement, j'étais largement à coté de la plaque... ;-)
Je n'avais pas vu son fichier exemple

eric
0
Le Pingou Messages postés 11538 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 mars 2023 1 334
13 août 2011 à 10:24
Bonjour eriiic,
Merci, votre proposition m'as permis de découvrir la propriété [EnableEvents] qui m'as rendu service dans ce cas.
Amicales salutations
Le Pingou
0