OVH Cloud OVH Cloud

modification croisée de cellule

11 réponses
Avatar
CARPENEM
BONJOUR,

Je cherche le moyen de lier 2 cellules entre elles de façon à A1 soit = à B1
et vice versa.
C'est à dire que la modification de l'une des 2 cellules entraine la mise à
jour de l'autre dans les 2 sens, afin qu'elles aient toujours le même contenu
(quelle que soit la cellule modifiée).
Je sais que cela est possible, mais je ne parviens plus à trouver le code
VBA qui le permette...

Merci de votre aide

10 réponses

1 2
Avatar
AV
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address = "$A$1" Then [B1] = [A1]
If zz.Address = "$B$1" Then [A1] = [B1]
End Sub

AV
Avatar
papou
Bonjour
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case Is = "$A$1"
Range("B1").Value = Target.Value
Case Is = "$B$1"
Range("A1").Value = Target.Value
End Select
End Sub

Cordialement
Pascal

"CARPENEM" a écrit dans le message de
news:
BONJOUR,

Je cherche le moyen de lier 2 cellules entre elles de façon à A1 soit = à
B1
et vice versa.
C'est à dire que la modification de l'une des 2 cellules entraine la mise
à
jour de l'autre dans les 2 sens, afin qu'elles aient toujours le même
contenu
(quelle que soit la cellule modifiée).
Je sais que cela est possible, mais je ne parviens plus à trouver le code
VBA qui le permette...

Merci de votre aide


Avatar
CARPENEM
Re

Rien ne se passe quand que copie le code dans le module d'une feuille
vierge...

Ai-je oublié qque chose ,

Merci encore


Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address = "$A$1" Then [B1] = [A1]
If zz.Address = "$B$1" Then [A1] = [B1]
End Sub

AV





Avatar
AV
Rien ne se passe quand que copie le code dans le module d'une feuille
vierge...


** Si tu as bien mis le code dans le module de la feuille,

Ai-je oublié qque chose ,


** .........oui : la saisie en A1 ou B1 !

AV

Avatar
CARPENEM
La saisie en A1 ; j'y avais pensé...
Voilà ce que je fais :
J'ouvre un classeur vierge, J'ouvre VBA, J'insère un module dans la
feuli1!,j'y copie le module que tu m'as indiqué, je ferme VBA.
Là j'entre une donnée dans A1... et B1 ne change pas... et vice versa
J'ai tenté la même chose avec le code de PAPOU : idem
c'est pourquoi je pense être passé a coté de qque chose...

Merci de votre patience, je suis un néophyte obstiné qui butte depuis 3
jours sur ce PB!


Rien ne se passe quand que copie le code dans le module d'une feuille
vierge...


** Si tu as bien mis le code dans le module de la feuille,

Ai-je oublié qque chose ,


** .........oui : la saisie en A1 ou B1 !

AV






Avatar
MichDenis
Copie cette petite macro quelque part dans ton code et
exécute là une fois. Cette macro a pour but de réactiver
les procédures événementielles.

'----------------------
Sub Test()
Application.EnableEvents = False
End Sub
'----------------------

Maintenant, essaie la procédure suggérée par AV.



"CARPENEM" a écrit dans le message de news:

La saisie en A1 ; j'y avais pensé...
Voilà ce que je fais :
J'ouvre un classeur vierge, J'ouvre VBA, J'insère un module dans la
feuli1!,j'y copie le module que tu m'as indiqué, je ferme VBA.
Là j'entre une donnée dans A1... et B1 ne change pas... et vice versa
J'ai tenté la même chose avec le code de PAPOU : idem
c'est pourquoi je pense être passé a coté de qque chose...

Merci de votre patience, je suis un néophyte obstiné qui butte depuis 3
jours sur ce PB!


Rien ne se passe quand que copie le code dans le module d'une feuille
vierge...


** Si tu as bien mis le code dans le module de la feuille,

Ai-je oublié qque chose ,


** .........oui : la saisie en A1 ou B1 !

AV






Avatar
AV
J'ouvre un classeur vierge, J'ouvre VBA, J'insère un module dans la
feuli1!,j'y copie le module que tu m'as indiqué, je ferme VBA.


Il n'y a pas a insérer de module !

Clic droit sur le nom de l'onglet >> Visualiser le code >> Copier/coller le
code fourni
Et refais les tests

PS : Un doute m'assaille :
Tu ne fonctionnerais quand même pas avec XL5 ou XL95 ?

AV

Avatar
CARPENEM
CA MARCHE !
...Je savais bien que je merdouillais quelque part

Un grand merci pour vos précieux conseils

CARPENEM
NB j'ai EXCEL 2003


J'ouvre un classeur vierge, J'ouvre VBA, J'insère un module dans la
feuli1!,j'y copie le module que tu m'as indiqué, je ferme VBA.


Il n'y a pas a insérer de module !

Clic droit sur le nom de l'onglet >> Visualiser le code >> Copier/coller le
code fourni
Et refais les tests

PS : Un doute m'assaille :
Tu ne fonctionnerais quand même pas avec XL5 ou XL95 ?

AV






Avatar
CARPENEM
Rebonjour,

Ca marche... mais lorsque je change une valeur dans l'une ou l'autre des
cellules, la feuille devient indisponible pendant près de 5 secondes (le mot
"itération" se met à clignoter dans la barre d'état en bas à gauche).
Je ne peux pas décocher l'option itération (présence de références
circulaires)
Y a t il moyen d'éviter de temps d'attente ?

Merci d'avance


J'ouvre un classeur vierge, J'ouvre VBA, J'insère un module dans la
feuli1!,j'y copie le module que tu m'as indiqué, je ferme VBA.


Il n'y a pas a insérer de module !

Clic droit sur le nom de l'onglet >> Visualiser le code >> Copier/coller le
code fourni
Et refais les tests

PS : Un doute m'assaille :
Tu ne fonctionnerais quand même pas avec XL5 ou XL95 ?

AV






Avatar
AV
Modifie le code comme suit :

Private Sub Worksheet_Change(ByVal zz As Range)
Application.EnableEvents = False
If zz.Address = "$A$1" Then [B1] = [A1]
If zz.Address = "$B$1" Then [A1] = [B1]
Application.EnableEvents = True
End Sub

PS : les références circulaires c'est pas une vraie bonne idée...

AV
1 2