Bug Code VBA HELP !!!

  • Initiateur de la discussion Initiateur de la discussion VBE LEARNER
  • Date de début Date de début

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 !

V

VBE LEARNER

Guest
Bonjour,

Débutant en VBE, j'ai écrit les quelques lignes de code ci-après, bien que simple, ça plante !!!

Le but de ces lignes est le suivant : quand D2 = 4 Pentes et que je modifie N4, O4 prend la valeur de N4, et vice versa, O4 et N4 fonctionnent alors en miroir.

Private Sub worksheet_Change(ByVal Target As Range)

'Cellules Miroir

If Not Intersect(Target, Range("N4")) Is Nothing And Target.Count = 1 Then

If [D2] = "4 Pentes" Then

ActiveSheet.Range("O4").Value = ActiveSheet.Range("N4")

Else

End If
End If


If Not Intersect(Target, Range("O4")) Is Nothing And Target.Count = 1 Then

If [D2] = "4 Pentes" Then

ActiveSheet.Range("N4").Value = ActiveSheet.Range("O4")

Else

End If
End If


End Sub

merci de votre aide
 
Re : Bug Code VBA HELP !!!

Bonjour à tous

VBE LEARNER
(Bienvenue sur le forum)
1) Je t'apprends que tu débutes en VBA pas en VBE 😉
2) Je t'apprends que ton fichier exemple joint dans ta discussion n 'est pas visible par nous autres.
(ce qui laisse supposer que tu n'as pas lu la charte du forum...)

A te relire avec ce qui manque (Le MODE EDITION t'aidera pour joindre ton fichier)
 
Re : Bug Code VBA HELP !!!

Bonjour VBE LEARNER,le Forum
Salut Jean-Marie!

@VBE LEARNER,
Tu as oublié "Application.EnableEvents = False" et , à chaque fois qu'une cellule change, la routine change se relance.




Code:
Private Sub worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, Range("N4")) Is Nothing And Target.Count = 1 Then
        If [D2] = "4 Pentes" Then
            Range("O4").Value = Range("N4").Value
        End If
    End If
    If Not Intersect(Target, Range("O4")) Is Nothing And Target.Count = 1 Then
        If [D2] = "4 Pentes" Then
            Range("N4").Value = Range("O4").Value
        End If
    End If
    Application.EnableEvents = True
End Sub

Regardes le fichier joint et dis-nous.

A+

René
 

Pièces jointes

Dernière édition:
Re : Bug Code VBA HELP !!!

merci René,

ton code fonctionne parfaitement.

j'ai une autre question à te poser. ma page de code complète est la suivante :

Private Sub worksheet_calculate()



Range("D2").Activate
If Range("D2").Value = "1 Pente" Then
ActiveSheet.Shapes("Groupe 152").Visible = False
ActiveSheet.Shapes("Groupe 139").Visible = False
ActiveSheet.Shapes("Groupe 132").Visible = True
ActiveSheet.Shapes("ZoneTexte 121").Visible = True
ActiveSheet.Shapes("ZoneTexte 123").Visible = True
ActiveSheet.Shapes("ZoneTexte 124").Visible = False

Else
If Range("D2").Value = "2 Pentes" Then
ActiveSheet.Shapes("Groupe 152").Visible = False
ActiveSheet.Shapes("Groupe 139").Visible = True
ActiveSheet.Shapes("Groupe 132").Visible = False
ActiveSheet.Shapes("ZoneTexte 121").Visible = True
ActiveSheet.Shapes("ZoneTexte 123").Visible = True
ActiveSheet.Shapes("ZoneTexte 124").Visible = False

Else
If Range("D2").Value = "4 Pentes" Then
ActiveSheet.Shapes("Groupe 152").Visible = True
ActiveSheet.Shapes("Groupe 139").Visible = False
ActiveSheet.Shapes("Groupe 132").Visible = False
ActiveSheet.Shapes("ZoneTexte 121").Visible = False
ActiveSheet.Shapes("ZoneTexte 123").Visible = False
ActiveSheet.Shapes("ZoneTexte 124").Visible = True


End If
End If
End If

End Sub


Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("N4")) Is Nothing And Target.Count = 1 Then
If [D2] = "4 Pentes" Then
Range("O4").Value = Range("N4").Value
End If
End If
If Not Intersect(Target, Range("O4")) Is Nothing And Target.Count = 1 Then
If [D2] = "4 Pentes" Then
Range("N4").Value = Range("O4").Value
End If
End If
Application.EnableEvents = True
End Sub

est ce "académique", ne peut il pas y avoir interférence entre le Calculate du 1er Sub et le Change du second ?

le premier Sub

merci
 
Re : Bug Code VBA HELP !!!

Bonjour VBE LEARNER, néné06,

Codes plus simples :

Code:
Private Sub Worksheet_Calculate()
Dim t1 As Boolean, t2 As Boolean, t3 As Boolean
t1 = [D2] = "1 Pente"
t2 = [D2] = "2 Pentes"
t3 = [D2] = "4 Pentes"
Me.Shapes("Groupe 152").Visible = t3
Me.Shapes("Groupe 139").Visible = t2
Me.Shapes("Groupe 132").Visible = t1
Me.Shapes("ZoneTexte 121").Visible = t1 Or t2
Me.Shapes("ZoneTexte 123").Visible = t1 Or t2
Me.Shapes("ZoneTexte 124").Visible = t3
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If [D2] = "4 Pentes" Then
  Application.EnableEvents = False
  If Target(1).Address = "$N$4" Then [O4] = [N4]
  If Target(1).Address = "$O$4" Then [N4] = [O4]
  Application.EnableEvents = True
End If
End Sub
A+
 
Re : Bug Code VBA HELP !!!

Bonjour à tous et surtout à Staple1600 🙂

[...] Message rédigé juste pour être sur que j'existe 😉 et juste avant d'être complétement transparent...) [...]

Une p'tite preuve pour te rassurer. Non, tu n'es pas transparent, tu existes bien ! (et c'est tant mieux pour nous 🙂)
 

Pièces jointes

Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
509
Retour