ERREUR SUR LIGNE DE CODE [Résolu]

Signaler
Messages postés
11
Date d'inscription
lundi 7 septembre 2009
Statut
Membre
Dernière intervention
11 janvier 2010
-
inkballs
Messages postés
11
Date d'inscription
lundi 7 septembre 2009
Statut
Membre
Dernière intervention
11 janvier 2010
-
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

Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009

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+
Messages postés
11
Date d'inscription
lundi 7 septembre 2009
Statut
Membre
Dernière intervention
11 janvier 2010

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