Avoir deux cellules clones sous Excel

Résolu
hectorticoli Messages postés 23 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 29 mars 2005 - 8 mars 2005 à 13:18
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 9 mars 2005 à 20:22
Bonjour,



Je voudrais avoir 2 cellules clones dans Excel, c'est à dire que
lorsque je modifie la formule de l'une, cette formule soit modifiée
dans l'autre, et inversement. De plus, ma feuille Excel n'étant pas
encore terminée, je voudrais utiliser le NOM de la cellule (nom
personalisé, pas celui du type A5 ou L1C5) comme identifiant de la
cellule.



J'ai testé la procédure Worksheet_change en utilisant la variable
target renvoyée, et en faisant un test sur son numero de ligne et d
colonne, ca marche, mais je voudrais utiliser le nom si possible.
Sinon, je n'ai pas trouvé la propriété contenant la formule, j'ai
essayé la propriété texte, mais je reçois une erreur, qui me fait
penser que la propriété text est en lecture seule (j'ai fait ca hier
soir assez tard, donc, ca vient peut-être d'un problème de code, enfin,
il ne me semble pas). Sinon, la propriété Value, donne un résultat pas
mal, mais il ne renvoi renvoi que la valeur, et pas la formule...



Donc voila, ah oui, une dernière chose, les cases à cloner se trouvent
dans des feuilles différentes (ah oui, sinon c'est pas marrant... )



Merci d'avance, et bonne prog!

10 réponses

hectorticoli Messages postés 23 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 29 mars 2005
9 mars 2005 à 00:42
J'ai trouvé le code que je cherchais, le voici :

Dans le code de feuil1 :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target = Range("Pr_1") Then
Feuil2.Range("Pr_3").Formula = Feuil1.Range("Pr_1").Formula
End If
End Sub

Dans le code de feuil2:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target = Feuil2.Range("Pr_3") Then
Feuil1.Range("Pr_1").Formula = Feuil2.Range("Pr_3").Formula
End If
End Sub

(Bien sur, si les 2 cases sont dans la même feuille, les 2 conditions peuvent être mises l'une après l'autre dans le code de la feuille correspondante)

Vous m'avez été d'une aide plus que précieuse pour l'établissement de ce code, merci beaucoup et bonne prog!
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
8 mars 2005 à 13:46
Pour choisir un Nom , tu sélectionne le menu Insertion / Nom / Définir , tu donne un nom à la cellule et tu fait de même dans la feuille ou tu veux copier les données.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Sheets(2).Range("TaCellule").Value = Range("MaCellule").Value
End Sub

jpleroisse
0
hectorticoli Messages postés 23 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 29 mars 2005
8 mars 2005 à 20:50
Merci jpleroisse

Ca me dit comment utiliser le nom de ma cellule. Seulement ton code copie la VALEUR de la case, et pas la forumle de la case. Par exemple, si je rentre "=3*2" dans "MaCellule" (je reprend tes noms) je retrouverai "6" dans "TaCellule" alors que je voudrais avoir "=3*2". Tu saisis la nuance?
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
8 mars 2005 à 21:08
OK je n'ai pas pensé à la formule c'ext vrai , excuse.

Sub Macro2()
Range("MaCellule").Select
Selection.Copy
Sheets("Feuil2").Select
Application.Goto Reference:="TaCellule"
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hectorticoli Messages postés 23 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 29 mars 2005
8 mars 2005 à 23:29
J'ai testé ce code qui fonctionne, mais je l'ai copié dans Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) j'ai donc remplacé le sub Macro2() par SubWorksheet_...

Et en faisant ca, le code me fait scintiller ma feuille et le résultat de la copie de cellule est bien long (comme si le programme tentait de parcourir toutes les cases avant de faire le travaille demandé...). Le problème vient peut être du fait que j'ai fait ce copier coller dans la procédurte d'évenement Worksheet_SelectionChange . Sinon, j'ai tenté ce code, qui ne fonctionne pas :

Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Row 1 And Target.Column 1 Then
Sheets("Feuil1").Range("Pr_2").xlFormulas = Sheets("Feuil1").Range("Pr_1").xlFormulas
End If
End Sub

(Pr_1 et Pr_2 étant mes 2 cellules que je veux cloner, Feuil1 est le nom de la feuille, mais bon, il sera destiné à être différent plus tard)

Je voudrais savoir où mettre le code que tu m'as passé plus haut (dans quel événement, si besoin, il me semble que cette procédure ne se lance pas toute seule...), si celui ci fonctionne sans les ralentissements que j'ai décris plus haut (et dont l'origine vient peut-être du fait que j'ai copié ce code dans la zone Worksheet_Change.

PS : c'est un message très semblable à celui que je t'ai envoyé, mais je me dis que ca pourra servir à d'autres, donc, je vais laisser l'ensemble des messages sur le forum...
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
8 mars 2005 à 23:55
Salut,
Pour cloner deux cellules:
Dans vba faut faire
Range("Macellule2").formula = Range("Macellule1").Formula ( si elles sont déja nommée)
sinon:
feuil1.range("A1").Formula = Feuil2.Range("A1").formula
Le mieux c'est de coller le code dans l'évènement Activate de ton classeur

Dans Excel faut faire
click sur Macellule2 on tappe = et aprés click sur Macellule1 (même sur un autre feuille)

pour donner un nom:
1) Sélection de la cellule ou de ta plage de cellule
2) click a gauche de ta barre de formule zone nom et là tu entres le nouveau nom
Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
9 mars 2005 à 00:02
Re,
Quand je dis dans VBA et aprés dans Ecel c'est soit l'un soit l'autre comme tu veux tout dépant si tu veux le faire par programmation ou directement sur la feuille.
Un conseil si cela ne doit pas changer autant le faire directement sur la feuille c'est plus simple.

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
hectorticoli Messages postés 23 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 29 mars 2005
9 mars 2005 à 00:22
Merci Valtrase, mais ta méthode dans la feuille ne me permet de lier les cases que dans un sens (la 2° est identique à la première, donc en modifiant la première, tu modifies la 2°, mais en modifiant la 2°, et bien... je ne modifie que la 2°, et ca je savais faire :-p mais merci bien pour le code. Et sinon, le fait de mettre ce code dans "Activate" ne va pas seulement faire la copie au lancement de la feuille??

Je crois donc que je vais utiliser le Worksheet_Change et faire un test sur Target, seulement, faire le test sur le nom, et bien il a pas l'air de vouloir, enfin, j'ai encore 2 3 idées à tester avant de jeter l'éponge...

Merci à tous pour votre aide
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
9 mars 2005 à 13:53
Tant mieux si cela a pu t'aider.
Mais, la formule que je t'ai donnée il faut la mettre dans un module et le nom de la macro dans workSheet.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Macro1
End Sub

jpleroisse
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
9 mars 2005 à 20:22
Re,
Pour ta première question c'est non car tu attribue une formule à ta cellule elle va donc la garder. Mais bon ceci dis je ne pensais pas aus deux sens.

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous