aide un conflit dans mon code

chaelie2015

XLDnaute Accro
Bonjour forum
je souhaite faire un ménage dans mon code
pourquoi quand je clic sur le bouton rouge "réinitialiser" il s'affiche le MsgBox "attention c'est un samedi" ?????
a+
 

Pièces jointes

  • CHARLIE conflit des codes.xlsm
    41.5 KB · Affichages: 50

Lone-wolf

XLDnaute Barbatruc
Bonjour chaelie :)

Dans le bouton réinitialiser, personnellement je mettrais With Feuil1.Range("t4, k8, n13, " etc).ClearContents. Dans la feuille liste je vois les colonnes B et C vides, c'est normal? Pourtant, tu as créé des noms :rolleyes: . Il faut aussi changer If Weekday([S23], vbMonday) par Range("s23"). La cellule entre crochets comme tu as mis signifie cellule active; or si tu est en B4 pour entrer du texte, elle ne peut pas l'être.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Message As String, cel As Range

Application.EnableEvents = False

If IsEmpty( [S23]) Then
Exit Sub
Message = ""
Else
If Weekday( [S23], vbMonday) = 4 And [N23] = 12 Then Message = "CP Jeudi après Midi non autorisée"
If Weekday( [S23], vbMonday) = 5 Then Message = "Attention c'est un Vendredi!"
If Weekday( [S23], vbMonday) = 6 Then Message = "Attention c'est Samedi!"
If Weekday( [S23], vbMonday) = 7 And [N23] = 8 Then Message = " CP Dimanche Matin Non Autorisée"
Call MsgBox("" _
& Message & vbCrLf & "" _
, vbExclamation, "Selon le règlement interne")
End If

Application.EnableEvents = True
End Sub
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Slt
1) pourquoi mettre encore avec des [] ? dans les forums il est dit que c'est "ancien" !!
moi je ne connais pas : il suffit de laisser S23 non ? et d'oter la fusion
est tu toujours en 2007 car sinon depuis 2010 c'est de 11 à 17
2) Pour le reste on ne sait pas ce que tu veux faire ? sinon il y a certainement une autre méthode
Dans le test que j'ai fait quelque soit ta plage c'est toujours 6 , je pige pas ??
Avec L. W . on a répondu en même temps , il t'explique en plus clair ce que je disais :
set cel =range("S23")
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir Jean-Claude :), job :), hervé :)

Et bien, dans ce cas la personne qui m'à dit celà, m'a mal formé.

@ Job: quand tu à plusieurs feuilles, et admettont que la feuille active est Feuil1, mais que [A1] est en référence avec la feuille 3, si tu n'as pas cette référence à quelle feuille appartient [A1] s.vp.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Par contre ne pas utiliser [A1] dans une boucle, ni d'ailleurs Range("A1").

Testez les 4 possibilités :
Code:
Sub test()
Dim t, c As Range, v, i&, x
t = Timer
Set c = [A1]
v = [A1]
For i = 1 To 1000000
  'x = [A1] '54 secondes
  'x = Range("A1") '7 secondes
  'x = c '1,4 seconde
  x = v '0,02 seconde
Next
MsgBox Timer - t
End Sub
A+
 

Si...

XLDnaute Barbatruc
Salut

A première vue, le problème vient de l’appel récursif de la macro évènementielle Change.

Voir une proposition* avec plein de [..] pour ceux qui ont un doute.

*difficile de tester avec si peu de données

Nota : la référence à la feuille (With … End With) qui contient le bouton n’est pas obligatoire quand la macro du bouton est écrite dans sa fenêtre de code. Sinon voir les autres explications données.
 

Pièces jointes

  • conflit des codes avec évènementielle.xlsm
    38.3 KB · Affichages: 39

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 094
Membres
103 116
dernier inscrit
kutobi87