ERREUR SUR LIGNE DE CODE

Résolu
inkballs Messages postés 11 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 11 janvier 2010 - 9 sept. 2009 à 19:34
inkballs Messages postés 11 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 11 janvier 2010 - 9 sept. 2009 à 20:46
Bonsoir,
J'ai un code qui me sert sous excel 2000,et qui produit une erreur du fait que j'ai voulu ajouter un test sur la feuille2.
Le fait d'imbriquer une seconde feuille il plante.
Pourrai-je avoir une aide afin de corriger la syntaxe.
merci.
INKBALLS





Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Sheets("Feuil1")
If .Range("C20").Value <> 4 Then
Application.EnableEvents = False
.Activate
Application.EnableEvents = True
.Range("D5:E5,B11,G20").Select
MsgBox "Merci de bien vouloir remplir les cellules sélectionnées !", vbCritical, "ATTENTION ..."
Exit Sub
End If
With Sheets("Feuil2")
If .Range("C17").Value <> 4 Then
Application.EnableEvents = False
.Activate
Application.EnableEvents = True
.Range("A55,F11,H20").Select
MsgBox "Merci de bien vouloir remplir les cellules sélectionnées !", vbCritical, "ATTENTION ..."
Exit Sub
End If
End With
End Sub
End With

2 réponses

cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
9 sept. 2009 à 20:08
Salut,

à priori je dirai qu'il y à un problème avec le placement de tes End With.

Le dernier se trouve en dehors de la sub. Il devrai se trouver juste
après le 1er End If. Comme ceci :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

  With Sheets("Feuil1")
    If .Range("C20").Value <> 4 Then
        Application.EnableEvents = False
        .Activate
        Application.EnableEvents = True
        .Range("D5:E5,B11,G20").Select
        MsgBox "Merci de bien vouloir remplir les cellules sélectionnées !", vbCritical, "ATTENTION ..."
        Exit Sub 'Attention! Dans ce cas on ne fait pas le code pour feuil2.
    End If
  End With

  With Sheets("Feuil2")
    If .Range("C17").Value <> 4 Then
        Application.EnableEvents = False
        .Activate
        Application.EnableEvents = True
        .Range("A55,F11,H20").Select
        MsgBox "Merci de bien vouloir remplir les cellules sélectionnées !", vbCritical, "ATTENTION ..."
        Exit Sub 'Inutile à ce niveau. De toute façon on sort de la sub juste après.
    End If
  End With

End Sub

Par contre, attention, tes deux blocs de codes ne vont pas s'effectuer systématiquement !
A cause des Exit Sub. Chaque fois que la valeur de C20 de feuil1 sera <> de 4
tu n'aura pas le code pour feuil2.
Est-ce bien ce que tu veux ?
Si non, il te suffit d'enlever les deux Exit sub, ils sont inutils.

A+
3
inkballs Messages postés 11 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 11 janvier 2010
9 sept. 2009 à 20:46
Bonsoir,
Je te remercie,de ta réponse à première vu cela tourne sur le petit fichier d'essai.Il me reste à tester sur le fichier principal qui est beaucoup plus lourd;mais ce soir je n'ai pas assez de temps.Je donnerai des infos demain.
Merci.
INKBALLS
0
Rejoignez-nous