Excel comment faire pour qu'une cellule se répercute automatiquement dans un autre onglet ?
Si sur une page Excel vous voulez saisir des paramètres indifféremment à plusieurs endroits, il faut arriver à lier votre cellule à une autre, pour ça, c’est relativement simple, en écrivant par exemple =B1 dans la cellule A1, les modifications de B1 se répercuteront sur A1.
Mais pour que les cellules soient liées dans les deux sens : pour que, non seulement les modifications de B1 se répercutent sur A1, mais encore les modifications de A1 se répercutent sur B1, si vous entrez une formule il y a de fortes chances pour que celle-ci soit écrasée par la saisie. Pour réussir cette opération, je vous propose donc quelques solutions :
Voici une première solution sans macro pour utiliser des zones de texte toutes liées à une même cellule :
Chaque fois que la valeur de la cellule est modifiée, celle des zones de texte l'est aussi. Chaque fois que le contenu d'une des zones de texte est modifié, la valeur de la cellule et celle des autres zones de texte suit... Tout l'ensemble 'cellule + zones de texte' est donc totalement lié.
En pratique, pour créer une zone de texte liée à la cellule B5, il faut faire :
- Affichage / barre d'outils / Visual Basic
- cliquer sur 'boîte à outils'
- cliquer sur 'zone de texte' et placer le curseur à l'endroit souhaité
- pour lier la zone de texte, double-cliquer sur la zone de texte pour accéder à ses propriétés, et indiquer B5 dans LinkedCell
- revenir sur Excel, désactiver le mode création, c'est terminé.
- pour ajouter d'autres zones de texte liées à la même cellule, il suffit de recopier la première autant de fois que souhaité.
Cette solution fonctionne plutôt bien, mais par contre ça a tendance à rendre la présentation du fichier plus lourde et à imposer la récupération des données saisies sur la cellule car il est difficile de récupérer la valeur de la zone de texte.
Il existe une autre solution avec VBA
La méthode par macro donne un résultat beaucoup plus agréable : les cellules sont totalement liées. Le changement de l'une se répercute immédiatement sur les autres, ça recopie des valeurs saisies et non pas des formules.
Le principe est simple, on utilise des cellules nommées. C'est le nom qui permet de les regrouper entre elles. La macro fait en sorte que toutes les cellules dont le nom est X?1, X?2, X?3... soient liées.
Si on nomme la cellule A1 dunomvoulu?1 et la cellule A4 dunomvoulu?2, les deux cellules prendront toujours la même valeur.
A chaque modification d'une cellule de la page Excel (événement Worksheet_Change), la macro va chercher si la cellule est nommée et si le nom comporte un point d'interrogation. Si c'est le cas, elle va rechercher toutes les cellules de la famille pour leur affecter la nouvelle valeur :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo fin
nom = Target.Name.Name
If InStr(nom, '?') > 0 Then
nom = Left(nom, InStr(nom, '?'))
Application.EnableEvents = False
num = 1
encor:
Range(nom & num).Value = Target.Value
num = num + 1
GoTo encor
End If
fin:
On Error GoTo 0
Application.EnableEvents = True
End Sub
Mise à jour d’un internaute au 2015-06-18
Pour répercuter automatiquement les donnés d’une cellule dans un autre onglet sur Excel il faut taper dans la première case de la première colonne de chaque feuille, la formule '=', puis ensuite, (sans valider) il ne vous reste plus qu’à retourner dans la première feuille, et à cliquer dans la première cellule de la première colonne, et seulement là vous validez. Ensuite, dans chaque feuille, vous n’avez plus qu'à faire 'recopier vers le bas' sur autant de lignes dont vous avez besoin.
Lorsque l’on sélectionne plusieurs feuilles par un onglet, ça crée un groupe de travail, donc tout ce que vous ferez dans votre onglet se répercutera sur vos feuilles à l’identique.