Interdépendance du contenu de 2 cellules, répliquer ce procéder
Fermé
Lacolarille
-
Modifié le 21 mars 2020 à 14:00
yg_be Messages postés 23440 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 janvier 2025 - 27 mars 2020 à 18:36
yg_be Messages postés 23440 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 janvier 2025 - 27 mars 2020 à 18:36
A voir également:
- Interdépendance du contenu de 2 cellules, répliquer ce procéder
- Formule excel pour additionner plusieurs cellules - Guide
- Excel fusionner le contenu de 2 cellules - Guide
- Word numéro de page 1/2 - Guide
- Verrouiller cellules excel - Guide
- 2 ecran pc - Guide
5 réponses
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
Ambassadeur
1 560
Modifié le 21 mars 2020 à 14:26
Modifié le 21 mars 2020 à 14:26
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
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
1 560
22 mars 2020 à 12:44
22 mars 2020 à 12:44
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
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
1 560
Modifié le 26 mars 2020 à 11:45
Modifié le 26 mars 2020 à 11:45
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!
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
1 560
27 mars 2020 à 17:41
27 mars 2020 à 17:41
1) cela fonctionne parfois, et parfois tu as l'erreur Method 'Range' of object_Worksheet: dans quel cas as-tu l'erreur, dans quel cas cela fonctionne-t'il.
2 je vois que tu as supprimé
3) peux-tu partager ton fichier?
2 je vois que tu as supprimé
If Target.Count = 1Then. pourquoi?
3) peux-tu partager ton fichier?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
23440
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 janvier 2025
Ambassadeur
1 560
27 mars 2020 à 18:36
27 mars 2020 à 18:36
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