Bonsoir Nicolas, le Forum
En fait tu n'est pas très clair dans les détails de la macro qui génère des écriture...
Enfin imaginons que ce soit une boucle qui va traiter la plage de A1 à A25
Première Option :
Sub AlerteApresEcriture()
Dim Cell As Range, Plage As Range
Dim TheList As String
Set Plage = Range("A1:A25")
For Each Cell In Plage
If Cell.Value <> "" Then
TheList = TheList & Cell.Address & vbCrLf
Else
Cell.Value = Int((12 * Rnd) + 1) 'pour écrire quelque chose
End If
Next
If TheList <> "" Then
MsgBox "Alerte !!! Les Cellules : " & vbCrLf & TheList & "contiennent des données et n'ont pas été traitése"
End If
End Sub
Seconde Option :
Sub AlertePendantEcriture()
Dim Cell As Range, Plage As Range
Dim Reply As Byte
Set Plage = Range("A1:A25")
For Each Cell In Plage
If Cell.Value <> "" Then
Reply = MsgBox("Alerte !!! la Cellule " & Cell.Address & "n'est pas vide" & _
"Voulez Vous Continuer ?", vbYesNo)
If Reply = vbNo Then
Exit Sub
Else
Cell.Value = Int((12 * Rnd) + 1) 'pour écrire quelque chose
Else
Cell.Value = Int((12 * Rnd) + 1) 'pour écrire quelque chose
End If
Next
End Sub
Il y aurait aussi d'autres méthodes, mais tout dépend du contexte de ta macro originale...
En tout cas ces deux possibilités t'offrent le choix :
Soit de poursuivre le job et d'alerter qu'en fin de traitement pour la première option sans modifier les cellules non vides...
Soit de t'alerter en cours de traitement et de te laisser le choix de stopper ou de poursuivre...En écrasant les données par contre...(On pourrait évidemmment gérer ceci autrement sans écraser les données...)
Bonne Soirée
@+Thierry