Erreur : incompatibilité de type sur l'exécution automatique d'une macro

Bonjour à tous.

Je débute sur vba et je bloque depuis plusieurs jours sur ma macro. Je sollicite donc votre aide car je ne trouve rien dans les différents forum.

J'exécute une macro automatique lorsque certaine cellule de mon fichier change de valeur. ça fonctionne bien mais le problème apparaît lorsque je supprime le contenu de cette cellule pour avoir une fichier vierge.

Voici ma macro sur la Feuil1 :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Area As Range

If ActiveWorkbook.Worksheets(1).Range("H1").Value = "ERCK" Then

Set Area = Range("A41:K41,U41:Y41")

ElseIf ActiveWorkbook.Worksheets(1).Range("H1").Value = "ERCS" Or ActiveWorkbook.Worksheets(1).Range("H1").Value = "ERCM" Or ActiveWorkbook.Worksheets(1).Range("H1").Value = "ERCR" Then

Set Area = Range("B37:J37,T37:X37")

End If

If Not Application.Intersect(Area, Range(Target.Address)) Is Nothing Then

Dim valeur, min As Variant

valeur = Target.Value

min = 150

If valeur = "" Then Exit Sub

'Si Hors-tolérance retouchable => Fiche de retouche Rugo

If valeur < min Then

'Message d'avertissement

CreateObject("WScript.Shell").Run "mshta.exe vbscript:close(CreateObject(""WScript.Shell"").Popup(""Rugosité Non-conforme. Veuillez remplir la fiche de retouche rugosité prévu à cet effet."",3,""Message d'avertissement!""))"

End If

End If

End Sub

Lorsque je supprime le contenu de mes cellules une erreur se produit sur la ligne : If valeur = "" Then

Je précise que mes cellules ("A41:K41,U41:Y41") sont des cellules fusionnées.

Est ce que quelqu'un voit d'où provient le problème?

Merci.

Bonsoir,

je précise que mes cellules ("A41:K41,U41:Y41") sont des cellules fusionnées.

Oui, c'est le problème car "Target" est une plage de plusieurs cellules mais avec un seul contenu. La solution est de ramener Target à une seule cellule, comme ceci:

If Target.Resize(1, 1).Value = "" Then Exit Sub

Par ailleurs, votre code peut être simplifié.

Le code étant associé à votre Feuil1, vous pouvez utiliser l'objet "Me" qui représente votre feuille :

If Me.Range("H1").Value = "ERCK"

Target étant un objet Range, ceci est suffisant :

 If Not Application.Intersect(Area, Target) Is Nothing Then

Bonsoir,

A tester...

Cdlt.

5micbod.xlsm (22.30 Ko)

Oui, c'est le problème car "Target" est une plage de plusieurs cellules mais avec un seul contenu. La solution est de ramener Target à une seule cellule, comme ceci:

If Target.Resize(1, 1).Value = "" Then Exit Sub

Mais oui!!!!

je pense que vous avez vu juste. Je verrai ça lundi.

Merci bon week end

Bonsoir,

A tester...

Cdlt.

Micbod.xlsm

Yesss! je vous tiens au jus

Merci.

Bonjour, c'était bien ça!

ça fonctionne nickel.

Merciiiii

Rechercher des sujets similaires à "erreur incompatibilite type execution automatique macro"