aide un conflit dans mon code

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 🙄 . 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:
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")
 
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:
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+
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Réponses
32
Affichages
482
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
408
Retour