macro worksheet_change en boucle

dodineau

XLDnaute Occasionnel
Bonjour,
Explications :
J'ai ma feuille qui contient 3 cellules : a1, a2, a3
je voudrais pouvoir écrire dans une des 3 cellules et que les 2 autres prennent la même valeur après appui sur 'entrée'.

Mon problème :
J'ai fait une macro 'worksheet_change' qui teste quelle cellule a été remplie et qui recopie la valeur dans les 2 autres. Le problème c'est que cette macro boucle en permanence.
Comment faire pour que cette macro ne s'auto-alimente pas.
Merci
 

Hervé

XLDnaute Barbatruc
bonjour dodineau

essayes comme ceci :


Dim pasbon As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If pasbon = False Then
       
If InStr(1, 'A1A2A3', Target.Address(0, 0)) > 0 Then
                pasbon =
True
                Range('a1:a3') = Target
       
End If
Else
        pasbon =
False
End If
End Sub


salut
 

dodineau

XLDnaute Occasionnel
Hervé, merci pour ta réponse.
Cet exemple fonctionne effectivement mais je me suis un peu trompé dans mon explication.
En fait j'ai 3 groupes de 3 cases, je voudrais pouvoir écrire dans une cases d'un groupe et que cette cases soit recopiée dans les 2 autres groupes.
Merci.
A+
 

Hervé

XLDnaute Barbatruc
re

Le plus simple dodineau, c'est de nommée ta plage, tu sélectionnes les cellules qui t'interresse, puis : insertion/nom/définir (dans la macro la plage se nomme plage)

puis tu utilises ce code :


Dim pasbon As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If pasbon = False Then
       
If Not Application.Intersect(Target, Range('plage')) Is Nothing Then
                pasbon =
True
                Range('plage') = Target
       
End If
Else
        pasbon =
False
End If
End Sub


salut
 

dodineau

XLDnaute Occasionnel
Je ne comprends pas la réponse.
Voir mon fichier joint SVP...

A+ [file name=table1_3.zip size=1527]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/table1_3.zip[/file]

Message édité par: dodineau, à: 13/04/2006 16:59
 

Pièces jointes

  • table1_3.zip
    1.5 KB · Affichages: 26

Hervé

XLDnaute Barbatruc
re

tu risquais pas de comprendre ma réponse, vu que je n'avais pas compris ta question :)


Dim pasbon As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If pasbon = False Then
       
If Not Application.Intersect(Target, Range('plage')) Is Nothing Then
                pasbon =
True
                Range('A' & Target.Row & ',d' & Target.Row & ',g' & Target.Row) = Target
       
End If
Else
                pasbon =
False
End If
End Sub


salut
 

dodineau

XLDnaute Occasionnel
bonjour,
j'ai maintenant un autre problème.
Je fais une macro qui doit me remplir 2 cases avec 2 valeurs quelconques mais comme il y a une macro auto worksheet_change dans cette feuille ma macro met une valeur dans une première case et là, la macro auto s'exécute et donc quitte ma macro originale.
Merci de m'expliquer comment faire pour que ma macro originale puisse s'éxécuter jusqu'au bout.

Merci et A+
 

Hervé

XLDnaute Barbatruc
bonjour dodineau


difficile sans plus d'explications :)


essaye en déclarant la variable pasbon en public niveau module standard.

puis dans ta macro originale, tu affecte a cette variable la valeur false (pasbon=false) chaque fois que tu dois inscrire une donnée provoquant le démarrage de ta macro evenementielle.

salut
 

Discussions similaires

Réponses
4
Affichages
185

Statistiques des forums

Discussions
312 495
Messages
2 088 969
Membres
103 993
dernier inscrit
Essens