OK. Alors faites ceci
1. Dans Thisworkbook, collez ce code
Option Explicit
Dim stpevt As Boolean
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Byte, col As Byte
Dim lig As Integer, num As Integer
Dim jour As String
If Target.Count > 1 Then Exit Sub
If stpevt = True Then Exit Sub
If Sh.Name Like "*IV*" Then 'Or Sh.Name Like "*TC*" Or Sh.Name Like "*MP*" Then
If Not Intersect(Target, Sheets(Sh.Name).Range("G:G, I:I, K:K, M:M")) Is Nothing Then
col = Target.Column
With Sheets(Sh.Name)
num = .Range("A" & Target.Row)
On Error Resume Next
lig = WorksheetFunction.Match(num, Feuil9.Range("A:A"), 0)
stpevt = True
Feuil9.Cells(lig, col) = Target.Value
End With
End If
End If
If Sh.Name Like "*TC*" Then
If Not Intersect(Target, Sheets(Sh.Name).Range("G:G, I:I, K:K, M:M, O:O")) Is Nothing Then
col = Target.Column + 14
With Sheets(Sh.Name)
num = .Range("A" & Target.Row)
On Error Resume Next
lig = WorksheetFunction.Match(num, Feuil9.Range("A:A"), 0)
stpevt = True
Feuil9.Cells(lig, col) = Target.Value
End With
End If
End If
If Sh.Name Like "*MP*" Then
If Not Intersect(Target, Sheets(Sh.Name).Range("G:G, I:I, K:K, O:O")) Is Nothing Then
col = Target.Column - 8
With Sheets(Sh.Name)
num = .Range("A" & Target.Row)
On Error Resume Next
lig = WorksheetFunction.Match(num, Feuil9.Range("A:A"), 0)
stpevt = True
Feuil9.Cells(lig, col) = Target.Value
End With
End If
End If
If Sh.Name = "Onglet-Actif" Then
If Not Intersect(Target, Sheets(Sh.Name).Range("F:F, H:H, J:J, L:L")) Is Nothing Then
If Target <> vbNullString Then
col = Target.Column
num = Sheets(Sh.Name).Range("A" & Target.Row)
For i = 1 To Sheets.Count
If Sheets(i).Name Like "*IV*" Then
jour = Left(Sheets(i).Name, 6) & "IV"
End If
Next i
stpevt = True
Ajouter Target, col, num, jour
End If
End If
If Not Intersect(Target, Feuil9.Range("N:N, P:P, R:R")) Is Nothing Then
If Target <> vbNullString Then
col = Target.Column - 8
num = Sheets(Sh.Name).Range("A" & Target.Row)
For i = 1 To Sheets.Count
If Sheets(i).Name Like "*MP*" Then
jour = Left(Sheets(i).Name, 6) & "MP"
End If
Next i
stpevt = True
Ajouter Target, col, num, jour
End If
End If
If Not Intersect(Target, Feuil9.Range("T:T, V:V, X:X, Z:Z, AB:AB")) Is Nothing Then
If Target <> vbNullString Then
col = Target.Column - 14
num = Sheets(Sh.Name).Range("A" & Target.Row)
For i = 1 To Sheets.Count
If Sheets(i).Name Like "*TC*" Then
jour = Left(Sheets(i).Name, 6) & "TC"
End If
Next i
stpevt = True
Ajouter Target, col, num, jour
End If
End If
End If
stpevt = False
End Sub
2. Création module. Faites ceci :
- toujours dans l'éditeur VBA, allez dans le menu Insertion
- choisir "Module"
- collez le code dans la fenêtre
Sub Ajouter(Target As Range, col As Byte, num As Integer, jour As String)
'ajout des infos dans feuille IV, MP, TC
Dim lig As Integer
With Sheets(jour)
On Error Resume Next
lig = WorksheetFunction.Match(num, .Range("A:A"), 0)
If lig = 0 Then lig = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & lig) = Range("A" & Target.Row).Value
.Range("B" & lig) = Range("B" & Target.Row).Value
.Range("C" & lig) = Range("C" & Target.Row).Value
.Range("D" & lig) = Range("D" & Target.Row).Value
.Range("E" & lig) = Range("E" & Target.Row).Value
.Cells(lig, col) = Cells(Target.Row, Target.Column).Value 'Range("E" & Target.Row).Value
End With
End Sub
3. Prérequis :
- vous devez d'abord rajouter la colonne A dans les feuilles Onglet, IV, TC et MP
- Dans la feuille Ongletactif vous devez avoir un numéro ID unique en regard de chaque ligne complétée. Comme je vous avait dit précédemment vous pouvez par exemple ajoutez la formule = ligne() en A5 et recopier vers le bas. Le principal est de toujours avoir un numéro.
4. Utilisation :
- Dans l'onglet actif,
---- Complétez les colonnes B, C, D, E.
---- Ajoutez la référence Batchnumber et la ligne sera créée à la dernière ligne des feuilles MP, IV ou TC
Si la ligne existe déjà vous pouvez mettre à jour en double cliquant dans la cellule du numéro de Batch ou en changeant le numéro puis Entrée sur le clavier.
- dans les onglet MP, TC et IV
---- lorsque vous ferez un choix dans la liste déroulante à droite de la référence Batch, le choix de la liste sera reporté en feuille Ongletactif.
(exemple si vous avez un numéro de batch en F6, changez la ref de suivi en G6 et allez voir la ligne dont référence est identique en colonne A de l'onglet actif)
Cordialement