Bonsoir,
J'ai utilisé une macro (avec le code que tu as vu dans le message précédent).
Pour accéder à l'éditeur : menu outils - macro - visual basic editor
Ensuite tu verras l'éditeur qui va s'ouvrir, et à gauche tu verras "SAISIE" (c'est l'onglet sur lequel ton code agira).
Voilà, j'espère que ces quelques pistes t'aideront pour la suite de ton fichier.
Il ne te manque plus qu'à faire en sorte que dès que tu modifies une cellule (événement change), cela modifie l'onglet Base.
Cordialement
-- 03 Mar 2011, 15:38 --
Suite et fin pour moi.
Voici la deuxième partie (si tu modifies une cellule, ça modifie dans l'onglet).
Attention, ça ne fonctionne que si tu saisis ou supprime une seule cellule à la fois.
++
Private Sub Worksheet_Change(ByVal Target As Range)
'KETAMACANNA 03/03/11
Dim ws1 As Worksheet
Set ws1 = Worksheets("SAISIE")
Dim ws2 As Worksheet
Set ws2 = Worksheets("BASE")
If Not Intersect(Target, Range("pl_modif")) Is Nothing Then
row_target = Target.Row - 4
valeur = 1 + ((Int((Target.Column - 1) / 6)) * 24 + ws1.Range("B1").Value * 2 - 1)
If ((Target.Column + 1) - 6 * Int((Target.Column + 1) / 6) = 0) * 1 = True Then
ws2.Cells(row_target, valeur + 1) = Target.Value
Else
ws2.Cells(row_target, valeur) = Target.Value
End If
End If
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
num_mois = ws1.Range("B1") * 2
last_row = ws2.Range("A65000").End(xlUp).Row
nb_secteurs = 4
d = num_mois
e = num_mois + 1
For a = 1 To nb_secteurs
For b = d To e
For c = 4 To last_row
ws1.Cells(c + 4, u + 3) = ws2.Cells(c, b)
Next c
u = u + 2
Next b
u = u + 2
d = d + 24
e = e + 24
Next a
End Sub