Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Ici Déclaration de Variables
Dim WSCible As Worksheet
Dim Plage As Range, Cell As Range
Dim C As Byte, L As Integer, x As Integer
'Ici Définition (Set) d'Objets qui vont être acteur dans l'algo
Set WSCible = Worksheets('Resultats')
Set Plage = Range(Range('O2'), Range('O5000').End(xlUp))
'NB Plage est Dynamiquement constitué
'Définition de Variable
L = 4
'NB 4 est la première Ligne de la Feuille 'Resultats'
'Condition : Si on change une valeur uniquement dans une cellule de la Colonne 'O'
'Pour ce faire si l'Intersection de la Target est Rien on sort de ce code...
If Application.Intersect(Target, Range('O:O')) Is Nothing Then Exit Sub
Leon 'Le Nettoyeur !!
'Début de boucle (Extérieure) pour chaque cellule de la plage définie plus haut
For Each Cell In Plage
'Condition : Si la Valeur de la cellule = 1
If Cell = 1 Then
'Re-initialisation de la Variable x permettant de sauter la colonne 'Memo' sur 'Resultats'
x = 0
'Début de seconde Boucle(Intérieure) pour les Colonnes B à I (2 à 9) de 'Grille saisie'
For C = 2 To 9
'Condition par Function si la Colonne C est plus grande que C ('Memo')
'on ajoute 1 sinon on reste à C
x = IIf(C > 6, C + 1, C)
'envoie des données vers feuille 'Resultats'
'L(Ligne) étant 4 au premier passage, x étant C(Colonne) avec le décalage décrit ci-dessus
'le plus quatre étant le fait que l'on démarre en colonne 'E' sur 'Résulats'
'soit 4 de plus que 'B' sur 'Grille saisie'...
'Cells avec Cell.row et C signifiant La Cellule de 'Grille saisie' sur ligne Scannée
'par la Boucle For Each Cell, et sur la Colonne C par la boucle For Each C
WSCible.Cells(L, x + 4) = Cells(Cell.Row, C)
'Passage au C suivant dans la Boucle intérieure
Next C
'Incrémentation de plus 3 pour le décalage sur 'Résultats' (ligne 4, Ligne 7, Ligne 10 etc)
L = L + 3
'Fin de Condition
End If
'Passage ç la Cell Suivante dans la Boucle extérieure
Next Cell
End Sub
Private Sub Leon()
Dim L As Integer
Dim C As Byte
'Boucle Lignes de 4 à 100 avec saut(décalage) de 3
For L = 4 To 100 Step 3
'Boucle Colonnes sur les 8 colonnes
For C = 6 To 14
'Nettoyage de la Cellule en ligne L et colonne C de 'Resulats'
Worksheets('Resultats').Cells(L, C).ClearContents
Next
Next
End Sub