Bonjour @AlainPncl, @DocteurExcel,
@AlainPncl, puisque tu as déjà des connaissances en macro VBA, je ne rentrerais pas dans les détails.
Donc voici une proposition, qui n’ai pas parfaite, mais elle a le mérite de fonctionner comme tu le demandes.
Après avoir entré les données dans la feuille “Menu” en “B1:B6” cliquer sur le bouton “Valider”.
Les données “B1, B3:B6” sont réparties dans la feuille sélectionnée en “B2” et sont aussi copiées dans la feuille “Tableau général” les unes au dessus des autres ( c’est à dire en ligne 2).
Comme nous insérons une ligne, le format de couleur de la ligne 1 suit, donc j’ai du ruser pour effacer le format copié et j’ai ajouté un code dans chaque feuilles “Tableau général, Alpha, Bravo, Charlie, Delta” pour remettre un encadrement cellule non vide.
Enfin on efface les données de la feuille “Menu”.
Code VBA des feuilles:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Set Target = Intersect(Target, [A2:A5000])
If Target Is Nothing Then Exit Sub
On Error Resume Next
Intersect(Target.SpecialCells(xlCellTypeBlanks).EntireRow, [A2:E5000]).Borders.LineStyle = xlNone
Intersect(Target.SpecialCells(xlCellTypeConstants).EntireRow, [A2:E5000]).Borders.Weight = xlThin
End Sub
Code VBA du bouton “Valider”:
Sub Copie()
Derligne = 2
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheets(Range("B2").Value)
.Rows(Derligne).Insert
Sheets("Menu").Range("B1,B3:B6").Copy
.Range("A" & Derligne).PasteSpecial Paste:=xlPasteValues, Transpose:=True
.Range("A2:E5000").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5), Header:=xlNo
End With
With Sheets("Tableau général")
.Rows(Derligne).Insert
Sheets("Menu").Range("B1,B3:B6").Copy
.Range("A" & Derligne).PasteSpecial Paste:=xlPasteValues, Transpose:=True
End With
Sheets(Array("Tableau général", "Alpha", "Bravo", "Charlie", "Delta")).Select
Sheets("Tableau général").Activate
Rows("2:5000").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("A2").Select
Sheets("Menu").Select
Worksheets("Menu").Range("B1:B6").ClearContents
Application.EnableEvents = True
ActiveWorkbook.Save
End Sub
Pour les feuilles “Alpha, Bravo, Charlie, Delta” je supprime les doublons, ce que je ne fais pas pour la feuille “Tableau général”
ActiveWorkbook.Save
Enfin cette ligne de code, sauvegarde le fichier à la fin de l’exécution de la macro.
Ci-joint ton fichier en retour ICI==> http://www.cjoint.com/c/GLlnPEfB67u
J’ai du passer par cjoint, car le fichier est trop volumineux, donc clique sur le lien et suis la procédure.
Cordialement.