Communication entre 2 cellules - Excel

Peyo -  
Le Pingou Messages postés 12656 Date d'inscription   Statut Contributeur Dernière intervention   -
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

Paf
 
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 714 Statut Membre 248
 
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
Peyo
 
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
Peyo
 
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
Peyo
 
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 12656 Date d'inscription   Statut Contributeur Dernière intervention   1 466
 
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
Peyo
 
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 12656 Date d'inscription   Statut Contributeur Dernière intervention   1 466
 
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
Peyo
 
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 12656 Date d'inscription   Statut Contributeur Dernière intervention   1 466
 
Bonjour,
Merci pour l'information.
Une procédure VBA fera l'affaire.
Patience.
0
Peyo
 
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 12656 Date d'inscription   Statut Contributeur Dernière intervention   1 466
 
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 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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 12656 Date d'inscription   Statut Contributeur Dernière intervention   1 466
 
Bonjour,
Je vous laisse essayer : https://www.cjoint.com/?3HmxWq7jRBs
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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 12656 Date d'inscription   Statut Contributeur Dernière intervention   1 466
 
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