Limiter le contrôle à une cellule

  • 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 , voici un code que je voudrais modifier afin de contrôler seulement la seule cellule modifiée :

Code:
If flag Then Exit Sub 'Controle Affectations
flag = True
 [COLOR="#FF0000"]Col = Array("C", "H", "M", "R")[/COLOR]
For n = 0 To UBound(Col)
  For Each cel In Range(Col(n) & "1:" & Col(n) & Range(Col(n) & "41").End(xlUp).Row)
     If cel.Value <> "" And cel.Font.Color <> 8421504 Then
         For Each Cell In Sheets("Parc").Range("C7:C300")
           If cel.Value = Cell.Value Then
             Cell.Copy Destination:=cel
             cel.Borders.LineStyle = 7
           End If
           
         Next Cell
     End If
  Next cel
Next n

flag = False

La base rouge lance le contrôle des affectations sur les colonnes C, H, M et R ; je voudrais le faire seulement sur la cellule changeante.

Merci pour votre aide.
 
Re : Limiter le contrôle à une cellule

Bonjour,

place ton code dans le module de la feuille concernée, dans l'événement "Change" de celle ci :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'ton code
End Sub

A noter la cellule modifiée est renvoyée par l'argument "target"

sans plus de détails, difficile de t'en dire plus...

bonne journée
@+
 
Re : Limiter le contrôle à une cellule

Bonjour isa44,

Comme le dit si bien Pierrot (que je salue également au passage), sans plus de détail difficile d'être précis. Mais je te propose tout de même ceci, si j'ai bien compris :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If flag Then Exit Sub 'Controle Affectations
flag = True
     If Target.Value <> "" And Target.Font.Color <> 8421504 Then
         For Each Cell In Sheets("Parc").Range("C7:C300")
           If cel.Value = Cell.Value Then
             Cell.Copy Destination:=Target
             Target.Borders.LineStyle = 7
           End If
         Next Cell
     End If
flag = False
End Sub

Bon dimanche.

Cordialement.
 
Re : Limiter le contrôle à une cellule

RE isa44,

Avec un fichier, on y voit tout de suite plus clair.

Il ne te reste plus qu'à essayer comme ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.Calculation = xlManual ' accélère l'exécution
Application.ScreenUpdating = False
Application.EnableEvents = False

Dim co
    co = ActiveCell.Address ' pour resélectionner la cellule de dépard

' ici il faudrait contrôler seulement la cellule dont la valeur change pour gagner en rapidité

If flag Then Exit Sub 'Controle Affectations
flag = True
 Col = Array("C", "H", "M", "R")
For n = 0 To UBound(Col)
     If Target.Value <> "" And Target.Font.Color <> 8421504 Then
         For Each Cell In Sheets("Parc").Range("C7:C300")
           If Target.Value = Cell.Value Then
             Cell.Copy Destination:=Target
             Target.Borders.LineStyle = 7
             Exit For
           End If
         Next Cell
     End If
Next n



flag = False
   
    Range(co).Select                                                                        ' resélectionne la cellule de dépard

Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
Application.EnableEvents = True
End Sub
Cordialement.
 
- 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
2
Affichages
488
Retour