Bonjour,
Alors dans la feuille "Liste factures" il faut que tu mette le code ci dessous :
Option Explicit
Dim x, y, PosG, PosH, Longueur, Hauteur As Integer
'Vérification des instructions
Private Sub Worksheet_Change(ByVal Target As Range)
'Connaitre l'emplacement de la cellule
y = Target.Row
x = Target.Column
'Vérifier si on rempli les contraites
If x = 9 And Cells(y, 10) = "réglé" Then
'Sélection du de l'emplacement du bouton à créer
'Création du bouton pour archiver
'Détermination de la position de la cellule P
ActiveSheet.Cells(y, 16).Select
'Récupération de ces info pour le bouton
With Selection
PosG = .Left
PosH = .Top
Hauteur = .Height
Longueur = .Width
End With
With ActiveSheet.Buttons
.Add(PosG, PosH, Longueur, Hauteur).Select
End With
With Selection
'routine associée
.OnAction = "archive"
'Text du bouton
.Caption = "Archiver"
''champ pour récupérer les info de sa position
.Name = ActiveCell.Address(ReferenceStyle:=xlR1C1)
End With
ActiveSheet.Cells(y + 1, x).Select
End If
End Sub
Et ensuite tu créer un nouveau module pour déclarer la routine qui permet de déplacer ta ligne dans archive :
Option Explicit
Dim btn As String
Sub archive()
'savoir quel est la ligne à archiver
btn = Application.Caller
'déterminer les coordonnées du bouton
For i = 2 To Len(btn)
If Mid(btn, i, 1) = "C" Then
y = CInt(Mid(btn, 2, i - 2))
x = CInt(Mid(btn, i + 1, Len(btn) - i))
Exit For
End If
Next i
'Couper ligne et la coller sur la dernière ligne du classeur archive
ActiveWorkbook.Sheets("Listes factures").Rows(y).Select
Selection.Copy
ActiveWorkbook.Sheets("Archives").Activate
ActiveWorkbook.Sheets("Archives").Rows(ActiveSheet.UsedRange.Rows.Count + 1).Select
ActiveWorkbook.Sheets("Archives").Paste
'Supprimer la colonne du bouton
ActiveWorkbook.Sheets("Archives").Columns(x).Delete
ActiveWorkbook.Sheets("Listes factures").Activate
ActiveWorkbook.Sheets("Listes factures").Rows(y).Delete Shift:=xlUp
ActiveWorkbook.Sheets("Listes factures").Cells(y, 10).Select
End Sub
Et voici Normalement ça devrait marcher.
Bonne continuation