Bonjour Roxane,
Globalement quand tu codes, essaie de toujours définir avec précision dans tes macros les "lieux" d'action. Je m'explique :
Dans ton code, il est écrit :
If Not IsError("I2") Then 'Si la cellule I2 n'est pas en erreur
ActiveCell.Offset(0, 1).Select 'Décale-toi d'une cellule à partir de ta cellule active
Sauf que rien ne dit dans ton code que ta cellule active est I2.
Si ton cusrseur est sur A1, ton code va vérifier que I2 est OK, puis il va se positionner en B1
Ensuite ton code dit :
Sheets("BDD devis Détail").Select 'sélectionne la feuille --> pourquoi puisque tu es déjà dessus
Range("j2").Activate = "M" 'et inscrit "M" en J2 --> dans ce cas l'utilisation de ton offset ne sert à rien puisque tu définies finalement J2 en dur.
Ensuite tu dis :
Else
ActiveCell.Offset(1#).Select 'là tu sélectionnes une cellule mais tu ne fais rien dedans ensuite
MsgBox ("Opération annulée") 'Pop-up opération annulée
End If
Voici une proposition de code, je te l'ai annoté pour que tu vois comment il fonctionne. Il parcoure la colonne I, inscrit "M" sur la cellule d'à côté et arrête la procédure en cas d'erreur dans une cellules de I.
Sub ColM()
Dim ColM As Integer
ColM = MsgBox("Voulez-vous modifier ce devis ?", vbYesNo)
Sheets("BDD devis Détail").Select
Sheets("BDD devis Détail").Range("J2:J20").ClearContents 'suppression des "M" de la colonne J (comme ça si le devis a été modifié, ça remet les "M" à zéro et ça revérifié toutes les cellules en colonne I
For a = 2 To 20 'la boucle part de la ligne 2 et s'arrêtera à la ligne 20 (car je ne sais pas quelle longueur fait ton tableau)
If Not IsError(Cells(a, 9)) Then 'si la cellule i... n'est pas en erreur
Cells(a, 9).Offset(0, 1).Value = "M" 'alors décale-toi d'une cellule à droite et inscrit "M"
Else
MsgBox ("Opération annulée") ' sinon opération annulée
Exit Sub 'Là j'ai mis un "Exit For", cela signifie qu'on sort de la procédure si ce message apparait --> fin de la procédure (je ne sais pas si c'est ça que tu veux faire)
End If
Next a
End Sub
(Oups je ne fus pas assez rapide ^^)