[VBA ]worksheet_change sur plusieurs cellules

Fermé
shinji7800 Messages postés 297 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 30 septembre 2010 - Modifié par shinji7800 le 30/09/2010 à 16:47
Bonjour,

j'aurai besoin d'aide pour pouvoir utiliser la fonction "worksheet_change"


mon but est de contrôler la valeur certaines cellules (fusionnées).

par exemple :

- I9:I10
- I21:I22
- I37:38

les cellules à contrôler ne sont pas encore déterminées ( car mon fichier Excel évolue encore)

si une valeur que j'attends est entrée, j'appelle une fonction afin d'afficher un message de saisi.

cependant ce message de saisi ne sera pas le même en fonction de la ligne.


je m'explique :


si I9="NOK" un message de saisi apparait (avec un message pour cette ligne)

si I21="NOK" un autre message de saisi apparait (diffèrent de I9)

Si I9<>"NOK" je veux faire disparaitre mon message de saisi (idem pour les autre cellule)

voici ce que j'ai codé, mais je pense que je ne sais pas utiliser cette fonction.



Private Sub Worksheet_Change(ByVal target As Range) 

If Range("I9").Value <> "NOK" Then 
    Call MaS10(target) 
end if 

If Range("I21").Value <> "NOK" Then 
    Call MaS10(target) 
end if 

If Range("I9").Value = "NOK" Then 
    Call MaS1 
end if 

If Range("I21").Value = "NOK" Then 
    Call MaS4 
End If 

End Sub 

Public Function MaS1() 

Range("J9:J10").Select 
            With Selection.Validation 
                .Delete 
                .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween 
                .IgnoreBlank = True 
                .InCellDropdown = True 
                .InputTitle = "essai N°1" 
                .ErrorTitle = "" 
                .InputMessage = "Commencez par : " & Chr(10) & "" & Chr(10) & "- tenter de faure un pingu sur l'equipement depuis SRV1" & Chr(10) & "" & Chr(10) & "- si cela ne fontionne pas tentez de blabla" 
                .ErrorMessage = "" 
                .ShowInput = True 
                .ShowError = True 
            End With 


End Function 

Public Function MaS10() 

    cells.Offset(0, 1).Select 

        
            With Selection.Validation 
               .Delete 
                .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween 
                .IgnoreBlank = True 
                .InCellDropdown = True 
                .InputTitle = "" 
                .InputMessage = "" 
                .ShowInput = True 
                .ShowError = True 
            End With 


End Function 

Public Function MaS4() 

Range("J21:J22").Select 
            With Selection.Validation 
                .Delete 
                .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween 
                .IgnoreBlank = True 
                .InCellDropdown = True 
                .InputTitle = "essai N°4" 
                .ErrorTitle = "" 
                .InputMessage = "test 4" 
                .ErrorMessage = "" 
                .ShowInput = True 
                .ShowError = True 
            End With




d'avance merci !