Interdépendance du contenu de 2 cellules, répliquer ce procéder
Lacolarille
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à la communauté,
Dans le prolongement de la discussion concernant l’interdépendance de deux cellules, résolue par la macro du membre via55, je voudrai aller plus loin, et l'étendre à une ligne
https://www.commentcamarche.net/forum/affich-35836449-interdependance-du-contenu-de-2-cellules
En effet, je souhaiterai que lorsque je modifie la valeur de la cellule A1 d'une de mes feuille, cette valeur soit reflétée dans toutes les feuilles que j'aurai identifié dans la macro
Mais, je voudrai aussi répliquer ce procéder pour les cellules A2, A3, ...An, et aussi B1, B2, B3, Bn
Ex: Si j’écris "Test" dans A1 de ma feuille 1, "Test" sera inscrit en A1 de ma feuille 2 et vis versa
Ensuite si j'écris "Test2" en A2 de ma feuille 1, "Test2" sera inscrit en A2 de ma feuille 2, mais je garderai la valeur "Test" dans les cellules A1 de mes deux feuilles
J'ai essayé de me former en macro via internet, mais cela a ses limites, et je ne trouve pas la solution, car quand j'augmente le range de cellules cibles, TOUTES les cellules deviennent interdépendantes (A1, A2, A3, An - sur toutes les feuilles).
J'aimerai donc "isoler" chaque interdépendance (les An avec les An, les Bn avec les Bn)
Voici la macro de Via55 sur laquelle je suis parti
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Sheets("Feuil2").Range("A1").Value = Target.Value Then Exit Sub
Sheets("Feuil2").Range("A1") = Target.Value
End If
End Sub
Si je ne suis pas clair, n'hésitez pas à me le dire :)
Merci beaucoup par avance pour votre aide
Dans le prolongement de la discussion concernant l’interdépendance de deux cellules, résolue par la macro du membre via55, je voudrai aller plus loin, et l'étendre à une ligne
https://www.commentcamarche.net/forum/affich-35836449-interdependance-du-contenu-de-2-cellules
En effet, je souhaiterai que lorsque je modifie la valeur de la cellule A1 d'une de mes feuille, cette valeur soit reflétée dans toutes les feuilles que j'aurai identifié dans la macro
Mais, je voudrai aussi répliquer ce procéder pour les cellules A2, A3, ...An, et aussi B1, B2, B3, Bn
Ex: Si j’écris "Test" dans A1 de ma feuille 1, "Test" sera inscrit en A1 de ma feuille 2 et vis versa
Ensuite si j'écris "Test2" en A2 de ma feuille 1, "Test2" sera inscrit en A2 de ma feuille 2, mais je garderai la valeur "Test" dans les cellules A1 de mes deux feuilles
J'ai essayé de me former en macro via internet, mais cela a ses limites, et je ne trouve pas la solution, car quand j'augmente le range de cellules cibles, TOUTES les cellules deviennent interdépendantes (A1, A2, A3, An - sur toutes les feuilles).
J'aimerai donc "isoler" chaque interdépendance (les An avec les An, les Bn avec les Bn)
Voici la macro de Via55 sur laquelle je suis parti
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Sheets("Feuil2").Range("A1").Value = Target.Value Then Exit Sub
Sheets("Feuil2").Range("A1") = Target.Value
End If
End Sub
Si je ne suis pas clair, n'hésitez pas à me le dire :)
Merci beaucoup par avance pour votre aide
Configuration: Windows / Chrome 80.0.3987.132
A voir également:
- Interdépendance du contenu de 2 cellules, répliquer ce procéder
- Supercopier 2 - Télécharger - Gestion de fichiers
- Fusionner deux cellules excel en gardant le contenu - Guide
- Verrouiller cellules excel - Guide
- Somme de plusieurs cellules excel - Guide
- 2 ecran pc - Guide
5 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 586
bonjour,
merci d'utiliser les balises de code quand tu partages du code:https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne vois pas pourquoi tu fais le second test, il me semble inutile.
quand tu écris "une de mes feuille", veux tu dire "n'importe quelle feuille", ou "une feuille déterminée"?
peut-être ainsi:
merci d'utiliser les balises de code quand tu partages du code:https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne vois pas pourquoi tu fais le second test, il me semble inutile.
quand tu écris "une de mes feuille", veux tu dire "n'importe quelle feuille", ou "une feuille déterminée"?
peut-être ainsi:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column <= 2 Then 'si colonne 1 ou 2
Sheets("deux").Range(Target.AddressLocal) = Target
End If
End If
End Sub
Bonjour yg_be
Merci pour ta réponse
Ok pour les balises, je ferrai attention les prochaines fois
La macro que j'ai partagé est celle proposée dans un poste précédent par un contributeur. Je ne connais pas assez les macro pour juger de l'utilité ou non de la ligne :)
Pour répondre à ta question:
"quand tu écris "une de mes feuille", veux tu dire "n'importe quelle feuille", ou "une feuille déterminée"?"
Dans mon classeur de feuille, j'aimerai effectivement appliquer la macro à certaines feuilles que j'aurai sélectionner. Donc pas TOUTES les feuilles du classeur, mais celles dont j'aurai besoin (5 feuilles en l'occurrence)
Je ne veux pas abuser, mais l'ideal, ce serait que, si tu me proposes une macro, tu puisses m'expliquer (un peu) comment elle fonctionne, afin que je puisse changer les feuilles "cibles"( celles pour lesquelles la macro s'applique), les cellules "cibles" (celles qui sont concernées par l'interdépendance), ... Le but étant que je puisse un jour être autonome (c'est la raison pour laquelle je ne fourni pas de fichier avec mon post, j'aimerai pouvoir me débrouiller à l'intégrer tout seul)
Merci encore pour le temps que tu consacres à m'aider, n'hésite pas à me dire si tu as besoin de plus de précisions
Merci pour ta réponse
Ok pour les balises, je ferrai attention les prochaines fois
La macro que j'ai partagé est celle proposée dans un poste précédent par un contributeur. Je ne connais pas assez les macro pour juger de l'utilité ou non de la ligne :)
Pour répondre à ta question:
"quand tu écris "une de mes feuille", veux tu dire "n'importe quelle feuille", ou "une feuille déterminée"?"
Dans mon classeur de feuille, j'aimerai effectivement appliquer la macro à certaines feuilles que j'aurai sélectionner. Donc pas TOUTES les feuilles du classeur, mais celles dont j'aurai besoin (5 feuilles en l'occurrence)
Je ne veux pas abuser, mais l'ideal, ce serait que, si tu me proposes une macro, tu puisses m'expliquer (un peu) comment elle fonctionne, afin que je puisse changer les feuilles "cibles"( celles pour lesquelles la macro s'applique), les cellules "cibles" (celles qui sont concernées par l'interdépendance), ... Le but étant que je puisse un jour être autonome (c'est la raison pour laquelle je ne fourni pas de fichier avec mon post, j'aimerai pouvoir me débrouiller à l'intégrer tout seul)
Merci encore pour le temps que tu consacres à m'aider, n'hésite pas à me dire si tu as besoin de plus de précisions
le code que j'ai suggéré est très court.
le code doit être présent dans les feuilles sources
le commentaire indique que le code ne travaille que si la cellule source est dans la colonne 1 ou 2
je n'ai pas mis de commentaire, et il me semble simple de comprendre que la feuille destination est la feuille dont le nom est "deux"
le code doit être présent dans les feuilles sources
le commentaire indique que le code ne travaille que si la cellule source est dans la colonne 1 ou 2
je n'ai pas mis de commentaire, et il me semble simple de comprendre que la feuille destination est la feuille dont le nom est "deux"
Bonjour
Merci pour ta réponse
Cela fonctionne, sauf que quand je rentre une valeur dans les cellules (A1 par exemple), le debugger s'ouvre en me surlignant la ligne de code en gras ci dessous
Aussi afin de rajouter une feuille qui sera également interdépendante avec les autres = qui modifiera les autres si je rentre une valeur dans les cellules sélectionnées, j'ai fait ceci (ex de la feuille 1), mais les changements de le feuille 3 affectent les deux premières feuilles, mais pas l'inverse. J'ai rentré le même code dans les 3 feuilles, en changeant le noms des feuilles
Et afin de pouvoir customiser comme je le souhaite mes données, pourrai tu s'il te plait me dire comment je sélectionne une plage de données qui sera affectée par le code. Si par exemple demain je veux que ce code ne s'applique que pour la plage (B11:B100) et (C11:C100)?
J'as pas mal cherché sur le net comment identifier un range de cellules, mais mes tests ne fonctionnent pas..
J'espère être clair, encore merci pour ton aide
Merci pour ta réponse
Cela fonctionne, sauf que quand je rentre une valeur dans les cellules (A1 par exemple), le debugger s'ouvre en me surlignant la ligne de code en gras ci dessous
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column <= 2 Then 'si colonne 1 ou 2
<gras> Sheets("deux").Range(Target.AddressLocal) = Target
</gras> End If
End If
End Sub
Aussi afin de rajouter une feuille qui sera également interdépendante avec les autres = qui modifiera les autres si je rentre une valeur dans les cellules sélectionnées, j'ai fait ceci (ex de la feuille 1), mais les changements de le feuille 3 affectent les deux premières feuilles, mais pas l'inverse. J'ai rentré le même code dans les 3 feuilles, en changeant le noms des feuilles
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column <= 2 Then 'si colonne 1 ou 2
Sheets("deux").Range(Target.AddressLocal) = Target
If Target.Column <= 2 Then 'si colonne 1 ou 2
Sheets("trois").Range(Target.AddressLocal) = Target
End If
End If
End If
End Sub
Et afin de pouvoir customiser comme je le souhaite mes données, pourrai tu s'il te plait me dire comment je sélectionne une plage de données qui sera affectée par le code. Si par exemple demain je veux que ce code ne s'applique que pour la plage (B11:B100) et (C11:C100)?
J'as pas mal cherché sur le net comment identifier un range de cellules, mais mes tests ne fonctionnent pas..
J'espère être clair, encore merci pour ton aide
1) "Cela fonctionne, sauf": dans quel cas cela fonctionne-t'il? quelle erreur donne le débogueur?
2) "les changements de le feuille 3 affectent les deux premières feuilles, mais pas l'inverse": sans doute une erreur dans les noms des feuilles.
le code suivant est préférable au tien:
3) pour que le code ne s'applique qu'à (B11:B100) et (C11:C100):
ou
2) "les changements de le feuille 3 affectent les deux premières feuilles, mais pas l'inverse": sans doute une erreur dans les noms des feuilles.
le code suivant est préférable au tien:
If Target.Count = 1 Then
If Target.Column <= 2 Then 'si colonne 1 ou 2
Sheets("deux").Range(Target.AddressLocal) = Target
Sheets("trois").Range(Target.AddressLocal) = Target
End If
End If
3) pour que le code ne s'applique qu'à (B11:B100) et (C11:C100):
If Not Intersect(Target, Union(Range("B11:B100"), Range("C11:C100"))) Is Nothing Then
ou
If Not Intersect(Target, Range("B11:C100")) Is Nothing Then
Merci,
le message d'erreur du debug est : "Method 'Range' of object_Worksheet' failed
Puis il surligne en jaune, dans le code de la première feuille :
Sheets("deux").Range(Target.AddressLocal) = Target
Voici le code que j'ai rentré dans les 3 feuilles (en changeant le nom des feuilles à chaque fois)
La feuille 3 n'est pas impactée par les modifications des feuilles 1 & 2, en revanche, les valeur que je rentre dedans impactent les feuilles 1 & 2. Il n'y a pas d'erreur de nom de feuille, j'ai essayé avec une quatrième feuille, puis une cinquième (avec une ligne de plus dans le code pour relier la nouvelle feuille aux autres), et même souci. Les feuilles 1 & 2 s'alimentent, et dès qu'il y a une 3eme feuille ou plus, la dépendance ne se fait plus que dans un sens
Pour info, le code de la feuille 3 est donc
Merci encore!
le message d'erreur du debug est : "Method 'Range' of object_Worksheet' failed
Puis il surligne en jaune, dans le code de la première feuille :
Sheets("deux").Range(Target.AddressLocal) = Target
Voici le code que j'ai rentré dans les 3 feuilles (en changeant le nom des feuilles à chaque fois)
Private [/contents/446-fichier-sub Sub] Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("B11:B100"), Range("C11:C100"))) Is Nothing Then
Sheets("deux").Range(Target.AddressLocal) = Target
Sheets("trois").Range(Target.AddressLocal) = Target
End If
End Sub
La feuille 3 n'est pas impactée par les modifications des feuilles 1 & 2, en revanche, les valeur que je rentre dedans impactent les feuilles 1 & 2. Il n'y a pas d'erreur de nom de feuille, j'ai essayé avec une quatrième feuille, puis une cinquième (avec une ligne de plus dans le code pour relier la nouvelle feuille aux autres), et même souci. Les feuilles 1 & 2 s'alimentent, et dès qu'il y a une 3eme feuille ou plus, la dépendance ne se fait plus que dans un sens
Pour info, le code de la feuille 3 est donc
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("B11:B100"), Range("C11:C100"))) Is Nothing Then
Sheets("deux").Range(Target.AddressLocal) = Target
Sheets("un").Range(Target.AddressLocal) = Target
End If
End Sub
Merci encore!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 586
je propose ceci:
Option Explicit
Const destination As String = "deux,trois"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellule As Range, fdest
If Not Intersect(Target, Union(Range("B11:B100"), Range("C11:C100"))) Is Nothing Then
For Each cellule In Intersect(Target, Union(Range("B11:B100"), Range("C11:C100")))
For Each fdest In Split(destination, ",")
If Sheets(fdest).Range(cellule.AddressLocal).Value <> cellule.Value Then
Sheets(fdest).Range(cellule.AddressLocal) = cellule
End If
Next fdest
Next cellule
End If
End Sub