VBA problème avec WorKsheet_Change

Bonsoir à tous,

Quelle sont les règles de base pour utiliser ce Private Sub,

peut-on mettre plusieurs actions à mener à l'intérieur ?

Qu'est-ce qui fait que parfois çà ne fonctionne pas ?

ci-joint fichier, pouvez-vous me signaler mes erreurs ?

https://www.excel-pratique.com/~files/doc/Vzqqtcoolmann7.xls

pour éviter de les reproduire dans l'avenir.

C'est comme çà qu'on apprend !

Bien amicalement

Claude.

Salut le forum

Essaye de rajouter cette macro

Sub Remettre()
Application.EnableEvents = True
End Sub

Fait lui lancer et enregistre le fichier, essaye de le ré-ouvrir.

Il a du planter sur un Application.EnableEvents = False qui ne s'est pas remis à True

Ou essaye en modifiant le début de ton code

Private Sub Worksheet_Change(ByVal Target As Range)

sans Excel.Range

Mytå

Bonsoir Mytå,

D'accord, mais ma question était surtout d'ordre général, tu n'as pas remarqué d'anomalie

dans la façon de placer cette fonction événementielle ?

Faut-il mettre

 Application.EnableEvents = True 

dans le WoorKbook_open ?

je pense pour les fichiers futurs.

merci

amicalement

Claude.

Bonsoir,

Non pas dans THISWORKBOOK car vu que les événements sont désactivés, le WoorKbook_open ne fonctionnera pas.

Le mieux est de le mettre dans un module comme Myta te le dit et de lui demander d'exécuter la macro.

Reste à modifier ton code.

Par exemple pour la macro ACHAT :

Sub achat()
If Range("f1") = "" Then
 Exit Sub
 End If
 On Error GoTo Erreur
With Application
.EnableEvents = False
.ScreenUpdating = False
End with
Range("formules").Copy
Range("a8").Insert Shift:=xlDown
Range("a1:f1").ClearContents
Range("a1").Select
Call saisie
With Application
.CutCopyMode = False
.EnableEvents = True
End with
Exit Sub
Erreur:
Application.EnableEvents = True
End Sub

Il y a d'autres manières de faire bien entendu

Amicalement

Dan

Salut Dan,

merci, il me semblait bien qu'il manquait quelque chose !

je prend bonne note et vais corriger.

Maintenant :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        If Not Application.Intersect(Target, Range("f1")) Is Nothing Then
            Call achat
        End If
                If Not Application.Intersect(Target, Range("date_vente")) Is Nothing Then
                    Call vente
                End If
End Sub

te parait correct ?

et dans un programme, peut-il y avoir plusieurs Private Sub Worksheet_change ?

ici il y a 2 événements, j'aurais pu en mettre 4 ou 5 ??

çà fait beaucoup de questions pour ce soir

encore merci forum

amicalement

Claude.

re,

C'est bon mais tu pourrais le mettre aussi comme ceci :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Application
If Not .Intersect(Target, Range("f1")) Is Nothing Then
Call achat
ElseIf Not .Intersect(Target, Range("date_vente")) Is Nothing Then
Call vente
Else
End If
End With
End Sub

Amicalement

Dan

Bonjour à tous,

Merci pour tous ces renseignements.

Bonne journée

Claude.

Rechercher des sujets similaires à "vba probleme worksheet change"