Bonjour,
Vous auriez dû préciser au départ car là, par formule ce n'est pas possible, il faut passer par la programmation.
j'aimerais qu'une fois le N° Machine saisie dans B3 et valider (B3 redevient vide), la ligne soit supprimée de l'onglet "RECAP MACHINE" et copier dans l'onglet "DEPART"
et si je ressaisie un autre N° Machine, suppression de la ligne dans le 1er ONGLET, et copier à la suite de l'autre dans le 2ème ONGLET,
Hum... c'est le contraire qu'il faut effectuer.... --> copier dans départ puis supprimer dans le 1er onglet
Dans le fichier que j'ai posté, faites ceci :
- Supprimez les formules que je vous ai données dans la feuille Depart
- Click droite sur le nom de la feuille RECAP MACHINE
- Choisir l'option "Visualiser le code"
- Collez le code ci-dessous dans la fenêtre
Option Explicit
Dim encours As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Integer, dlg As Integer
If Target.Count > 1 Then Exit Sub
If encours = True Then Exit Sub
If Not Intersect(Target, Range("B3")) Is Nothing Then
On Error Resume Next
lig = WorksheetFunction.Match(Target.Value, Range("B10:B" & Range("B" & Rows.Count).End(xlUp).Row), 0) + 9
If lig = 0 Then
MsgBox "le Numero de machine " & Target.Value & " n'existe pas !", vbCritical, "Erreur reference machine"
encours = False
Exit Sub
End If
encours = True
With Sheets("Depart")
dlg = .Range("B" & Rows.Count).End(xlUp).Row
.Range("A" & dlg + 1) = Range("A" & lig).Value
.Range("B" & dlg + 1) = Target.Value
.Range("C" & dlg + 1) = Range("C" & lig).Value
.Range("D" & dlg + 1) = Range("D" & lig).Value
.Range("E" & dlg + 1) = Range("E" & lig).Value
.Range("F" & dlg + 1) = Range("F" & lig).Value
End With
Rows(lig).Delete
Target.ClearContents
End If
encours = False
End Sub
- Enregistrez votre fichier au format XLSM (pour accepter l'utilisation des macros)
Pour mémoire, B3 ne doit pas être fusionné
Cordialement