macro worksheet_change en boucle

  • Initiateur de la discussion Initiateur de la discussion dodineau
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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+
 
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
 
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

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
 
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
668
Retour