Worksheet_Change

fred.toto Messages postés 73 Date d'inscription mardi 10 avril 2001 Statut Membre Dernière intervention 4 mars 2009 - 19 juin 2007 à 11:42
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 - 19 juin 2007 à 18:51
Salut tout le monde,
un ptit souci avec une macro excel, je vous explique c'est pas dur à comprendre.
Je créée une nouvelle sheet sur excel dynamiquement en fonction d'une condition X quelconque.

Si X = 'Toto' then
             Sheets.Add
            ActiveSheet.Select
            
            ActiveSheet.Move After:=Sheets(Sheets.Count)
            ActiveSheet.Select
End If... Jusqu'ici rien de terrible...

Mon problème est que je veux modifier le Worksheet_Change (forcément vide) de la feuille créée pour lui affecter le code suivant:

Private Sub Worksheet_Change(ByVal Target As Range)




    If Target.Row > 6 And Target.Column > 6 And IsNumeric(Target.Value) Then
   
        Cells(Target.Row, Target.Column).Select
       
        With Selection.Font
            .Name = "Arial"
            .Size = 70
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
       
        Selection.Font.Bold = True
   
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = False
            .Orientation = 90
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
   
    End If




End Sub

Est-il possible de modifier le Worksheet_Change par code?

Merci d'avance pour les eventuelles réponses.
Fred.

9 réponses

JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
19 juin 2007 à 11:57
Bonjour,
Après plusieurs essais je n'ai pas réussi et en lisant ta question il m'est venu cette idée
Au niveau d'une feuille développer ton code "Worksheet_Change
" et ensuite à la place d'ajouter une nouvelle feuille, tu copie cette feuille
    Sheets("Feuil1").Select
    Sheets("Feuil1").Copy After:=Sheets(2)


Bonne journée. JML
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
19 juin 2007 à 12:42
Salut,
Ou bien encore

Private Const MyWorksheetChange As String = "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf & _
   "If Target.Row > 6 And Target.Column > 6 And IsNumeric(Target.Value) Then" & vbCrLf & _
   "Cells(Target.Row, Target.Column).Select" & vbCrLf & _
   "With Selection.Font" & vbCrLf & _
           ".Name = ""Arial""" & vbCrLf & _
           ".Size = 70" & vbCrLf & _
           ".Strikethrough = False" & vbCrLf & _
           ".Superscript = False" & vbCrLf & _
           ".Subscript = False" & vbCrLf & _
           ".OutlineFont = False" & vbCrLf & _
           ".Shadow = False" & vbCrLf & _
           ".Underline = xlUnderlineStyleNone" & vbCrLf & _
           ".ColorIndex = xlAutomatic" & vbCrLf & _
           ".Bold = True" & vbCrLf & _
       "With Selection" & vbCrLf & _
           ".HorizontalAlignment = xlCenter" & vbCrLf & _
           ".VerticalAlignment = xlCenter" & vbCrLf & _
           ".WrapText = False" & vbCrLf & _
           ".Orientation = 90" & vbCrLf & _
           ".AddIndent = False" & vbCrLf & _
           ".IndentLevel = 0" & vbCrLf & _
           ".ShrinkToFit = False" & vbCrLf & _
           ".ReadingOrder = xlContext" & vbCrLf & _
           ".MergeCells = False" & vbCrLf & _
       "End With" & vbCrLf & "End If" & vbCrLf & "end Sub"
Private Sub CommandButton1_Click()
Dim MaFeuille As Worksheet
   Set MaFeuille = ActiveWorkbook.Worksheets.Add(After:=Sheets(Sheets.Count))
   With ThisWorkbook.VBProject.VBComponents(MaFeuille.Name).CodeModule
       Call .InsertLines(.CountOfLines + 1, MyWorksheetChange)
   End With
End Sub<hr />

, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
fred.toto Messages postés 73 Date d'inscription mardi 10 avril 2001 Statut Membre Dernière intervention 4 mars 2009
19 juin 2007 à 13:52
Merci les gars pour vos réponses, 2 problèmes maintenant par rapport aux solutions proposées:

   ¤ Une mineure que je pense puovoir résoudre seule en réflechissant une peu: Qu'est ce que MyWorksheetChange...

   ¤ Plus grave, le message suivant: "Erreur d'execution 1004: L'accès par programme au projet Visual Basic n'est pas fiable"... Je vais essayer de voir à quoi ça correspond
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
19 juin 2007 à 14:10
Re,
 ¤Bah MyWorksheetChange est une constante de type String c'est marqué....
 ¤Il faut peu etre changer le niveau de sécurité des macro Menu Outils => Macro => Sécurité
Niveau sécurité => Bas (pour voir)
Sources Fiables => Faire confiance à tous les....

@+: Ju£i?n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
19 juin 2007 à 14:25
Salut Jrivet

    Il y aurait un p'tit bug dans ton code ... G cherché mais je n'ai pas trouvé par contre je suis interressé car je voudrais faire la même chose mais de excel vers word

fred.toto
 x)  Doit être déclarer comme variable (puisque c'en est une)  
 x)  Va au plus court ... la copie ça marche et ça fait un code plus léger
JML
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
19 juin 2007 à 14:31
Plus rapide que moi Jrivet
Le changement de niveau de sécurité de solutionne pas le problème
JML
0
fred.toto Messages postés 73 Date d'inscription mardi 10 avril 2001 Statut Membre Dernière intervention 4 mars 2009
19 juin 2007 à 14:54
Ouais j'ai vu pour la sécurité,merci quand même :)
Pour ce qui est de la constante, rien à rajouter, c'est ce qui arrive quand mes mains tapent plus vite que mon cerveau ne réflechit....
Quand je lance la macro, ça plante Excel. Tant pis je le ferai à la mains
Merci pour votre aide!
Fred.
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
19 juin 2007 à 16:50
Je m'excuse si je me trompe, j'ai pas trop compris si tu avais la réponse pour :
 Plus grave, le message suivant: "Erreur d'execution 1004: L'accès par programme au projet Visual Basic n'est pas fiable"... Je vais essayer de voir à quoi ça correspond
Ce que propose jrivet est presque juste (enfin même complètement puisqu'il le dit dans sa dernière phrase : faire confiance à ...), ce n'est pas le niveau de sécurité qu'il faut changer, mais c'est au même endroit (Menu Outils\macro\sécurité). dans l'onglet Editeurs approuvés, il faut cocher la case Faire confiance au projet Visual basic.

Mais si tu l'avais déjà vu, et bien .. toutes mes excuses ^^

Molenn
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
19 juin 2007 à 18:51
Bonsoir,
C'est super sauf que Jrivet il a oublié un "End with" avant le 2ème
  "With Selection"
& vbCrLf & _

JML
0