ah ben si c'est que ça l'erreur, alors:
Le problème vient de ta feuille de calcul, pas de ton code, vu qu'il y a des erreurs dans les cellules de B9 à E9 la macro n'arrive pas à les gérer.
Il faut rajouté un sierreur pour afficher une valeur que la macro pourra comprendre.
et au passage, si tu souhaite alléger le code:
Sub Archiver_signataire_passage()
Dim i As Long
With Sheets("PASSAGE SIGNATAIRE")
i = .Range("CQ" & Rows.Count).End(xlUp).Row + 1
If .Range("B9") = "" Or .Range("C9") = "" Or .Range("D9") = "" Or .Range("E9") = "" Then
MsgBox ("Pour archiver la semaine merci de remplir tous les champs")
Exit Sub
Else
If MsgBox("Etes-vous certain de vouloir archiver la semaine !!?", vbYesNo, "Demande de confirmation") = vbYes Then
.Range("B9:E9").Copy
.Range("CQ" & i).PasteSpecial xlPasteValues, xlNone, False, False
Application.CutCopyMode = False
MsgBox ("Semaine archivée")
End If
End If
End With
End Sub