simplifier cette macro

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

D

Domi_d

Guest
Bonjour,
Peut-on simplifier cette macro :

If Not Intersect(Target, Range('C2:C5')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 2
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 2
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

If Not Intersect(Target, Range('C6:C9')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 4
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 4
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

If Not Intersect(Target, Range('C10:C13')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 6
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 6
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

If Not Intersect(Target, Range('C14:C17')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 8
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 8
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

If Not Intersect(Target, Range('C18:C21')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 10
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 10
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

If Not Intersect(Target, Range('C22:C25')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 12
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 12
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

If Not Intersect(Target, Range('C26:C29')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 14
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 14
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

If Not Intersect(Target, Range('C30:C33')) Is Nothing Then
If Target.Row Mod 2 = 0 Then
Target.Value = 3
Target.Offset(1, 0).Value = Empty
li = Target.Row / 2 + 16
Else
Target.Value = 3
Target.Offset(-1, 0).Value = Empty
li = Target.Row \\ 2 + 16
End If
Cells(li, 6).Value = Target.Offset(0, -1).Value
End If

-------------------------
Merci d'avance pour votre aide
 
Salut,

Tu peux essayer un truc de ce genre la et dis moi si ça marche car je n'ai pas regardé ce que faisait exactement ton programme:

Code:
Dim i, j

j = 2
For i = 0 To 28 Step 4

    If Not Intersect(Target, Range('C' & 2 + i & ':C' & 5 + i)) Is Nothing Then
    If Target.Row Mod 2 = 0 Then
    Target.Value = 3
    Target.Offset(1, 0).Value = Empty
    li = Target.Row / 2 + j
    Else
    Target.Value = 3
    Target.Offset(-1, 0).Value = Empty
    li = Target.Row / 2 + j
    End If
    Cells(li, 6).Value = Target.Offset(0, -1).Value
    End If

j = j + 2
Next i


A+
 
Bonjour Domi, Eric et Jérôme 🙂

Tu peux essayer ceci (pas sûr que les antislash apparaissent) :

Code:
For i = 0 To 7
  If Not Intersect(Target, Range(Cells(2 + i * 4, , 3), Cells(5 + i * 4, 3))) Is Nothing Then
    Target.Offset(1 - 2 * (Target.Row Mod 2), 0).Value = Empty
    li = Target.Row \\ 2 + 2 * (1 + i)
    Target.Value = 3
    Cells(li, 6).Value = Target.Offset(0, -1).Value
  End If
Next i

Tiens-nous au courant 😉

EDITION : écrit à la volée et non testé.

A+

Message édité par: Charly2, à: 08/02/2006 11:30
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
9
Affichages
508
Réponses
5
Affichages
910
Réponses
4
Affichages
733
Retour