Bonsoir,
ce n'est pas une si grande usine à gaz !
l'idée : une feuille 2 où l'on peut afficher trois tableaux, mais ceci n'est pas limité.
On détecte le numéro du tableau demandé. On détermine la première ligne de données de ce tableau sur la feuille 1.
On rapatrie les données de cette cellule redimensionnée de 4 lignes et 4 colonnes.
Sur la feuille 2 on détecte un changement de valeur sur une des trois zone tableau, on récupère le numéro de tableau pour déterminer sa position sur la feuille 1 et on copie colle les données en lieu et place.
Ici pour l'exemple, pas de sécurité ! Mais cette modification des données sources peut être suite à l'appuis sur un bouton qui validerait alors les éventuelles modifications sur les trois tableaux.
Le code :
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
Application.EnableEvents = False
If Not Intersect(Target, Range("Choix1, Choix2, Choix3")) Is Nothing Then
QuelTab = ((Target.Value - 1) * 6) + 1
Target.Offset(1, -1).Resize(4, 4) = Sheets("Feuil1").Cells(QuelTab + 1, 1).Resize(4, 4).Value
ElseIf Not Intersect(Target, Range("Choix1").Offset(1, -1).Resize(4, 4)) Is Nothing Then
QuelTab = ((Range("Choix1").Value - 1) * 6) + 1
Sheets("Feuil1").Cells(QuelTab + 1, 1).Resize(4, 4) = Range("Choix1").Offset(1, -1).Resize(4, 4).Value
ElseIf Not Intersect(Target, Range("Choix2").Offset(1, -1).Resize(4, 4)) Is Nothing Then
QuelTab = ((Range("Choix2").Value - 1) * 6) + 1
Sheets("Feuil1").Cells(QuelTab + 1, 1).Resize(4, 4) = Range("Choix2").Offset(1, -1).Resize(4, 4).Value
ElseIf Not Intersect(Target, Range("Choix3").Offset(1, -1).Resize(4, 4)) Is Nothing Then
QuelTab = ((Range("Choix3").Value - 1) * 6) + 1
Sheets("Feuil1").Cells(QuelTab + 1, 1).Resize(4, 4) = Range("Choix3").Offset(1, -1).Resize(4, 4).Value
End If
Fin:
Application.EnableEvents = True
End Sub
Le fichier :
@ bientôt
LouReeD