XL 2010 Résolu par Roland : Je n'arrive pas à activer mes macros

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

J'ai un nouveau souci dans mon classeur (Grrrr ça marchait avant LOL)
Je n'arrive plus à faire en sortes que les macros soient actives ?????
J'ai fait un fichier test qui contient dans le code de la feuille1 les codes suivants :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$I$3" Then Exit Sub
Application.EnableEvents = True
ActiveSheet.Unprotect Password:=""
If Len(Target) = 9 And IsNumeric(Target) Then
ActiveSheet.Unprotect Password:=""
[H1] = [E1] & [I3]
End If

If Not Intersect(Target, Range("i7:i20000")) Is Nothing Then 'heure appel
    Application.EnableEvents = True
    ActiveSheet.Unprotect Password:=""
    Target.Offset(0, 2) = Now()
    End If
If Not Intersect(Target, Range("l7:l20000")) Is Nothing Then
    Application.EnableEvents = True
    ActiveSheet.Unprotect Password:=""
    Target.Offset(0, -7) = Now()
    Target.Offset(0, 8) = ""
    Target.Offset(0, 9) = ""
    End If
If Not Intersect(Target, Range("u7:u20000")) Is Nothing Then
    Application.EnableEvents = True
    ActiveSheet.Unprotect Password:=""
    Target.Offset(0, -16) = Now()
    End If

ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions
End Sub

Pourtant, dans les codes j'ai mis des "Application.EnableEvents = True" partout
et je n'ai pas mis de "False".

Pourriez-vous me dire ce que j'ai zappé ?
Je joins le fichier test,
Grands Merci à vous toutes et tous,
Amicalement,
Lionel,,
 

Pièces jointes

  • TestCodeBloquant.xlsm
    25.8 KB · Affichages: 39

Roland_M

XLDnaute Barbatruc
re

TON > Sub Telephone() NE PEUT PAS FONCTIONNER !!!!!
If (h1) = "$I$3" Then Exit Sub
Application.EnableEvents = True
ActiveSheet.Unprotect Password:=""
If (h1) = 9 And IsNumeric() Then
ActiveSheet.Unprotect Password:=""
[h1] = [E1] & [I3]
End If
End Sub

mais là rien ne peut fonctionner !
c'est quoi h1 ? on dirait une variable alphanumérique
que vient faire là
Application.EnableEvents = True

au départ tu ne passes aucune valeur et tu n'as rien de déclaré public !?
comment veux tu que la macro sache ce que représente h1 ?

ou alors il s'agit d'une cellule apparemment alors il faut mettre [h1] et pas (h1)

peut être comme ceci:
Sub Telephone()
If [h1] = "$I$3" Then Exit Sub
ActiveSheet.Unprotect Password:=""
If [h1] = 9 And IsNumeric([h1]) Then
ActiveSheet.Unprotect Password:=""
[h1] = [E1] & [I3]
End If
End Sub

encore que si=9 c'est numérique !
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
C'est exactement ce que je viens de vérifier et le code de la feuille s'exécute quand je modifie I3
c'est le code de la macro qui me pose encore problème :
Code:
Sub Telephone()
If (h1) = "$I$3" Then Exit Sub
Application.EnableEvents = True
ActiveSheet.Unprotect Password:=""
ActiveCell.Offset(-2, -1).Select
[h1] = [E1] & [I3]
End Sub

C'est la où ça ne va pas : [h1] = [E1] & [I3]

Je veux lui dire qu'il me prenne le contenu de la cellule :
E1 (33 est le chiffre dans cette cellule),
et qu'il me mette au bout le contenu de la cellule I3 (par exemple 111222333)
ce que devrait donner en contenu de la cellule H1 = 33111222333

Mais je n'y arrive pas.
Je joins le classeur
 

Pièces jointes

  • TestCodeBloquant.xlsm
    22.4 KB · Affichages: 24

Roland_M

XLDnaute Barbatruc
re

je viens de terminer mon message en même temps que toi et tu n'as pas du le voir !

peut être comme ceci:
Sub Telephone()
If [h1] = "$I$3" Then Exit Sub
ActiveSheet.Unprotect Password:=""
If [h1] = 9 And IsNumeric([h1]) Then
ActiveSheet.Unprotect Password:=""
[h1] = [E1] & [I3]
End If
End Sub

s'il s'agit d'une cellule il faut mettre [h1] et pas (h1)

en plus tu pouvais laisser ce sub dans le code feuille !
 

Roland_M

XLDnaute Barbatruc
re

voir:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
If Not Intersect(Target, Range("I3")) Is Nothing Then Telephone

If Not Intersect(Target, Range("i7:i20000")) Is Nothing Then
   ActiveSheet.Unprotect Password:=""
   Target.Offset(0, 2) = Now()
End If

If Not Intersect(Target, Range("l7:l20000")) Is Nothing Then
   ActiveSheet.Unprotect Password:=""
   Target.Offset(0, -7) = Now()
   ActiveSheet.Unprotect Password:=""
   Target.Offset(0, 8) = ""
   Target.Offset(0, 9) = ""
End If

If Not Intersect(Target, Range("u7:u20000")) Is Nothing Then
   ActiveSheet.Unprotect Password:=""
   Target.Offset(0, -16) = Now()
End If

ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions
Application.EnableEvents = True
End Sub

Sub Telephone()
If [h1] = "$I$3" Then Exit Sub
   ActiveSheet.Unprotect Password:=""
   If [h1] = 9 And IsNumeric([h1]) Then
   ActiveSheet.Unprotect Password:=""
   [h1] = [E1] & [I3]
End If
End Sub

EDIT: n'oublies pas de supprimer celle du module !
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 328
Membres
103 180
dernier inscrit
Vcr