code VBA qui fonctionne bizarement

titom59280

XLDnaute Junior
Bonjour a tous
J'ai ce bout de code qui fonctionne mais ce que je voudrais c'est avoir une liste déroulante sur la cellule K4 seulement si la celulle M1 est égale a EQUIPE A et que la cellule M2 est égale à JANVIER et d'autre liste déroulante selon d'autre critére
mais bizarrement les listes déroulante de la cellule K4 sont toujours affiché quelque soit la valeur des celulle M1 et M2
Je pense que le probléme vient de Workbook_SheetChange mais je ne vois pas comment modifié ca

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
With Range("$M$1").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="EQUIPE A, EQUIPE B, EQUIPE C, EQUIPE D"
End With
With Range("$M$2").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="JANVIER, FÉVRIER, MARS, AVRIL, MAI, JUIN, JUILLET, AOÛT, SEPTEMBRE, OCTOBRE, NOVEMBRE, DÉCEMBRE"
End With
If Range("$M$1").Value = "EQUIPE A" Then
    If Range("$M$2").Value = "JANVIER" Then
        With Range("$K$4").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="01/01/2014 au 05/01/2014,27/01/2014 au 02/02/2014"
        End With
    ElseIf Range("$M$2").Value = "FÉVRIER" Then
        Range("$K$4").Value = "24/02/2014 au 02/03/2014"
    ElseIf Range("$M$2").Value = "MARS" Then
        Range("$K$4").Value = "24/03/2014 au 30/03/2014"
    ElseIf Range("$M$2").Value = "AVRIL" Then
        Range("$K$4").Value = "22/04/2014 au 27/04/2014"
    ElseIf Range("$M$2").Value = "MAI" Then
        Range("$K$4").Value = "19/05/2014 au 25/05/2014"
    ElseIf Range("$M$2").Value = "JUIN" Then
        Range("$K$4").Value = "16/06/2014 au 22/06/2014"
    ElseIf Range("$M$2").Value = "JUILLET" Then
        Range("$K$4").Value = "15/07/2014 au 20/07/2014"
    ElseIf Range("$M$2").Value = "AOÛT" Then
        Range("$K$4").Value = "11/08/2014 au 17/08/2014"
    ElseIf Range("$M$2").Value = "SEPTEMBRE" Then
        Range("$K$4").Value = "08/09/2014 au 14/09/2014"
    ElseIf Range("$M$2").Value = "OCTOBRE" Then
        Range("$K$4").Value = "06/10/2014 au 12/10/2014"
    ElseIf Range("$M$2").Value = "NOVEMBRE" Then
        Range("$K$4").Value = "03/11/2014 au 09/11/2014"
    ElseIf Range("$M$2").Value = "DÉCEMBRE" Then
        With Range("$K$4").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="01/12/2014 au 07/12/2014,29/12/2014 au 31/12/2014"
        End With
    End If
ElseIf Range("$M$1").Value = "EQUIPE B" Then
    If Range("$M$2").Value = "JANVIER" Then
        Range("$K$4").Value = "06/01/2014 au 12/01/2014"
    ElseIf Range("$M$2").Value = "FÉVRIER" Then
        Range("$K$4").Value = "03/02/2014 au 09/02/2014"
    ElseIf Range("$M$2").Value = "MARS" Then
        Range("$K$4").Value = "03/03/2014 au 09/03/2014"
    ElseIf Range("$M$2").Value = "AVRIL" Then
        With Range("$K$4").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="31/03/2014 au 06/04/2014,28/04/2014 au 04/05/2014"
        End With
    ElseIf Range("$M$2").Value = "MAI" Then
        Range("$K$4").Value = "26/05/2014 au 01/06/2014"
    ElseIf Range("$M$2").Value = "JUIN" Then
        Range("$K$4").Value = "23/06/2014 au 29/06/2014"
    ElseIf Range("$M$2").Value = "JUILLET" Then
        Range("$K$4").Value = "21/07/2014 au 27/07/2014"
    ElseIf Range("$M$2").Value = "AOÛT" Then
        Range("$K$4").Value = "18/08/2014 au 24/08/2014"
    ElseIf Range("$M$2").Value = "SEPTEMBRE" Then
        Range("$K$4").Value = "15/09/2014 au 21/09/2014"
    ElseIf Range("$M$2").Value = "OCTOBRE" Then
        Range("$K$4").Value = "13/10/2014 au 19/10/2014"
    ElseIf Range("$M$2").Value = "NOVEMBRE" Then
        Range("$K$4").Value = "10/11/2014 au 16/11/2014"
    ElseIf Range("$M$2").Value = "DÉCEMBRE" Then
        Range("$K$4").Value = "08/12/2014 au 14/12/2014"
    End If
ElseIf Range("$M$1").Value = "EQUIPE C" Then
    If Range("$M$2").Value = "JANVIER" Then
        Range("$K$4").Value = "13/01/2014 au 19/01/2014"
    ElseIf Range("$M$2").Value = "FÉVRIER" Then
        Range("$K$4").Value = "10/02/2014 au 16/02/2014"
    ElseIf Range("$M$2").Value = "MARS" Then
        Range("$K$4").Value = "10/03/2014 au 16/03/2014"
    ElseIf Range("$M$2").Value = "AVRIL" Then
        Range("$K$4").Value = "07/04/2014 au 13/04/2014"
    ElseIf Range("$M$2").Value = "MAI" Then
        Range("$K$4").Value = "26/05/2014 au 01/06/2014"
    ElseIf Range("$M$2").Value = "JUIN" Then
        Range("$K$4").Value = "30/06/2014 au 06/07/2014"
    ElseIf Range("$M$2").Value = "JUILLET" Then
        Range("$K$4").Value = "28/07/2014 au 03/08/2014"
    ElseIf Range("$M$2").Value = "AOÛT" Then
        Range("$K$4").Value = "25/08/2014 au 31/08/2014"
    ElseIf Range("$M$2").Value = "SEPTEMBRE" Then
        Range("$K$4").Value = "22/09/2014 au 28/09/2014"
    ElseIf Range("$M$2").Value = "OCTOBRE" Then
        Range("$K$4").Value = "20/10/2014 au 26/10/2014"
    ElseIf Range("$M$2").Value = "NOVEMBRE" Then
        Range("$K$4").Value = "17/11/2014 au 23/11/2014"
    ElseIf Range("$M$2").Value = "DÉCEMBRE" Then
        Range("$K$4").Value = "15/12/2014 au21/12/2014"
    End If
ElseIf Range("$M$1").Value = "EQUIPE D" Then
    If Range("$M$2").Value = "JANVIER" Then
     Range("$K$4").Value = "20/01/2014 au 26/01/2014"
    ElseIf Range("$M$2").Value = "FÉVRIER" Then
        Range("$K$4").Value = "17/02/2014 au 23/02/2014"
    ElseIf Range("$M$2").Value = "MARS" Then
        Range("$K$4").Value = "17/03/2014 au 23/03/2014"
    ElseIf Range("$M$2").Value = "AVRIL" Then
        Range("$K$4").Value = "14/04/2014 au 21/04/2014"
    ElseIf Range("$M$2").Value = "MAI" Then
        Range("$K$4").Value = "26/05/2014 au 01/06/2014"
    ElseIf Range("$M$2").Value = "JUIN" Then
        Range("$K$4").Value = "10/06/2014 au 15/06/2014"
    ElseIf Range("$M$2").Value = "JUILLET" Then
        Range("$K$4").Value = "07/07/2014 au 14/07/2014"
    ElseIf Range("$M$2").Value = "AOÛT" Then
        Range("$K$4").Value = "04/08/2014 au 10/08/2014"
    ElseIf Range("$M$2").Value = "SEPTEMBRE" Then
        Range("$K$4").Value = "01/09/2014 au 07/09/2014"
    ElseIf Range("$M$2").Value = "OCTOBRE" Then
        With Range("$K$4").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="29/09/2014 au 05/10/2014,27/10/2014 au 02/11/2014"
        End With
    ElseIf Range("$M$2").Value = "NOVEMBRE" Then
        Range("$K$4").Value = "24/11/2014 au 30/11/2014"
    ElseIf Range("$M$2").Value = "DÉCEMBRE" Then
        Range("$K$4").Value = "22/12/2014 au 28/12/2014"
    End If
End If
End Sub

Auriez vous une idée pour résoudre ce probléme
 

ROGER2327

XLDnaute Barbatruc
Re : code VBA qui fonctionne bizarement

Bonjour à tous, bonjour Staple1600.


Bonjour à tous

titom
Il serait fort prudent de remettre ceci à True en fin de code non?
Application.EnableEvents = False
Afin de vous évitez de perdre votre temps, voyez cette discussion :

Apparemment, notre ami n'a pas de temps à perdre en lisant les réponses à ses demandes...​


Bonne journée.



ℝOGER2327
#7040


Samedi 7 Sable 141 (Saint Birbe, juge - fête Suprême Quarte)
17 Frimaire An CCXXII, 6,5900h - cyprès
2013-W49-6T15:48:58Z
 

Dranreb

XLDnaute Barbatruc
Re : code VBA qui fonctionne bizarement

Bonjour ROGER2327
Je me permettrais juste de microscopiques corrections de ce que vous y décrivez :

  1. l'exécution de la procédure en cours est suspendue, ses paramètres, variables locales et adresse de retour dans le programme appelant demeurent empilés en mémoire ;
  2. une nouvelle procédure Worksheet_Change est déclenchée pour traiter la modification de la valeur de la cellule J4, et pour ce faire un nouveau jeu de toutes ces nécessités est à son tour réservé et empilé en mémoire.
 

titom59280

XLDnaute Junior
Re : code VBA qui fonctionne bizarement

Salut Staple1600
J'avais bien mis a la fin du code ceci :

Application.EnableEvents = False

j'ai surement oublié de le coller en meme temps que le code que g collé mais en tous cas il est présent dans mon code.


Et merci a tous pour vos réponse
 

ROGER2327

XLDnaute Barbatruc
Re : code VBA qui fonctionne bizarement

Re...


Bonjour ROGER2327
Je me permettrais juste de microscopiques corrections de ce que vous y décrivez :

  1. l'exécution de la procédure en cours est suspendue, ses paramètres, variables locales et adresse de retour dans le programme appelant demeurent empilés en mémoire ;
  2. une nouvelle procédure Worksheet_Change est déclenchée pour traiter la modification de la valeur de la cellule J4, et pour ce faire un nouveau jeu de toutes ces nécessités est à son tour réservé et empilé en mémoire.
Approuvé !

(J'avais annoncé une description simplifiée du phénomène, ce qui n'empêche pas d'être précis.)


ℝOGER2327
#7041


Dimanche 8 Sable 141 (Conception du Père Ubu (AJ) - fête Suprême Seconde)
18 Frimaire An CCXXII, 0,3865h - lierre
2013-W49-7T00:55:40Z
 

titom59280

XLDnaute Junior
Re : code VBA qui fonctionne bizarement

Salut Staple1600

Je suis désolé j'ai écrit
Application.EnableEvents = False

alors que sur mon code c'était bien
Application.EnableEvents = True

Fatigue quand tu nous tiens hier je faisais vraiment n'importe quoi j'ai passé 45 minutes a essayé de comprendre pk après une modif mon code ne fonctionnait plus pour finalement m'apercevoir que j'avais supprimé une colonne et que les cellules n'était forcement plus les mêmes.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390