Bonsoir,
sans fichier...
Sinon un essai tout de même avec une simplification du code pour ce que j'en ai compris :
Private Sub CommandButton1_Click()
n = Sheets("ACCUEIL").Cells(2, 2).Value
If n = 2 Then a = Int(Rnd * 8) + 1
' ATTENTION ! si n n'est pas égale à 2 alors a = 0 et ligne 0 n'existe pas !
Sheets("mots+définitions").Cells(a, 4).Copy Destination:=Sheets("ACCUEIL").Range("C5:M5")
End Sub
Comme dit, si n différente de 2 alors a vaut 0 ! Et une ligne n'existe pas sous Excel !
A savoir, il n'est pas nécessaire de sélectionner pour travailler sur les feuilles du classeurs lorsque l'on travail avec Excel car on peut cibler les cellules par les coordonnées en nommant la feuille où elles se trouvent, contrairement à ce que l'on fait avec la souris où il faut choisir la feuille (sélectionner) puis choisir la cellule... C'est ce qu'enregistre l'enregistreur de macro. Le code qui en ressort doit être nettoyé, car sinon trop lourd !
@ bientôt
LouReeD