• Initiateur de la discussion Initiateur de la discussion isa44
  • 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 !

isa44

XLDnaute Occasionnel
Bonjour , voila ce que j'ai fait :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cell As Variant
Dim Zoneacontroler As Range
Dim cellule As Range

Set Zoneacontroler = Range("D2:D120")



  For Each cellule In Zoneacontroler
         For Each Cell In Sheets("test").Range("C7:C300")
           If cellule.Value = Cell.Value Then
             Cell.Copy Destination:=cellule
           
           End If

         Next Cell
  Next cellule

End Sub

Je voudrais éviter que ça tourne en boucle et s'arrête après le controle de la cellule D120 !
 
Re : Arrêter une boucle

Bonjour isa44,

Peut-être comme ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cell As Variant
Dim Zoneacontroler As Range
Dim cellule As Range

Application.EnableEvents = False
Set Zoneacontroler = Range("D2:D120")
  For Each cellule In Zoneacontroler
         For Each Cell In Sheets("test").Range("C7:C300")
           If cellule.Value = Cell.Value Then
             Cell.Copy Destination:=cellule
           End If
         Next Cell
  Next cellule
Application.EnableEvents = [FONT=Verdana]True[/FONT]
 End Sub
Bon dimanche.

Cordialement.
 
Re : Arrêter une boucle

Bonjour,

Ta question ne mentionne pas à quelle plage de cellules D120 appartient?


Un exemple :

La procédure est déclenchée seulement si une cellule de la plage "ZoneaControler"
a été modifiée ou passée en mode édition.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range, cellule As Range
Dim ZoneaControler As Range, Rg As Range

Set ZoneaControler = Range("D2:D120")

If Not Intersect(Target, ZoneaControler) Is Nothing Then
    Application.EnableEvents = False
    Set Rg = Sheets("Test").Range("C7:C300")
    For Each cellule In ZoneaControler
        For Each Cell In Rg
            If cellule.Value = Cell.Value Then
                Cell.Copy Destination:=cellule
                If Cell.Address = "$D$120" Then Exit For
            End If
        Next Cell
    Next cellule
    Application.EnableEvents = True
End If
End Sub
 
Re : Arrêter une boucle

Merci , j'ai opté pour la solution de Papou-net que je trouve simple.

Lorsque j'active une feuille j'ai une macro qui fait tourner en boucle :

Code:
Private Sub Worksheet_Activate()
Copie_B_Feuilles_R_V_B_J
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
   Application.ScreenUpdating = False

If Target.Count = 1 Then Affectations_R_V_B_J Target ' controle les affectations des B

COPIE_B_dans_OPTH 'copie les B dans la feuille OPTHOR

   Application.ScreenUpdating = True
End Sub

comment éviter que cela tourne en boucle lors de l'activation de la feuille ?
 
- 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

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
588
Réponses
7
Affichages
454
Retour