Private oOldRange As Range
Dim oRange As Range Dim PartieDecimale As Long ' Test si la précédente position faisait partie de notre plage à surveiller If Not oOldRange Is Nothing Then ' Ressort si on arrive ici à cause d'un Select fait dans cette même procédure If Target.Address = oOldRange.Address Then Exit Sub ' On était dans notre plage juste avant If Not IsNumeric(oOldRange.Value2) Then ' Le contenu n'est pas un chiffre valide ' On se repositionne dessus + alerte oOldRange.Select MsgBox "La cellule " & oOldRange.Address & " doit contenir un chiffre" Else ' Ok, c'est bien un chiffre : Vérifie la syntaxe ' Rappel : Même si on applique un format d'affichage à la cellule, ' son contenu reste un chiffre (.Value2) ' Récupère ce qui est après la virgule, en centième PartieDecimale = CLng((oOldRange.Value2 - Int(oOldRange.Value2)) * 100) Select Case PartieDecimale Case 0, 25, 50, 75 ' Ok, tout va bien Case Else ' Pas glop ' On se repositionne dessus + alerte oOldRange.Select MsgBox "La cellule " & oOldRange.Address & " doit comporter les " & _ "décimales 00, 25, 50 ou 75" End Select End If End If ' Pas de test si plusieurs cellules sont sélectionnées If Target.Cells.Count > 1 Then Exit Sub ' Vérifie si la cellule sélectionnée fait partie de notre plage à surveiller Set oRange = Intersect(Target, Range("B2:D300")) If Not oRange Is Nothing Then ' La cellule active fait partie de notre zone Set oOldRange = Target Else ' Non, on est en dehors de cette plage Set oOldRange = Nothing End If
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionil doit m avoir dans le nez depuis le debut mais c pas grave
Comment puis je mettre cette discussion résolue
En ce qui concerne maintenant la présente discussion : jack t'a donné un code. L'as-tu essayé ? ======>>
------- si oui : te convient-il ? si oui === > clique sur le tag "réponse acceptée" au niveau du message/solution