Dans un classeur, j'ajoute par VBA, =E0 la demande, une feuille copi=E9e
depuis un autre classeur par :
Sheets.Add.Name =3D "toto"
J'ai besoin d'ajouter du code dans l'=E9v=E8nement Worksheet_Change de
cette nouvelle feuille. Gr=E2ce =E0 un code trouv=E9 sur l'excellentissime
site de Fr=E9d=E9ric Sigonneau, j'ai r=E9ussi =E0 faire ce que je
voulais,....en simulation seulement ! En effet, j'ajoute le code
n=E9cessaire depuis l'=E9v=E8nement Workbook_NewSheet et tout fonctionne
bien tant que je fais une insertion manuelle d'une nouvelle feuille.
Si je passe par ma proc=E9dure ci-dessus, rien ne se passe !
Tu ajoutes une feuille dans le même classeur ou dans un autre classeur ?
Si tu utilises déjà du code (Frédéric), pourquoi ne pas le publier... si ce dernier a besoin d'être adapté...
Qu'est-ce que tu ne réussis pas à faire présentement avec la macro ?
MichD -------------------------------------------- "ThierryP" a écrit dans le message de groupe de discussion :
Bonjour à tou(te)s,
Dans un classeur, j'ajoute par VBA, à la demande, une feuille copiée depuis un autre classeur par : Sheets.Add.Name = "toto"
J'ai besoin d'ajouter du code dans l'évènement Worksheet_Change de cette nouvelle feuille. Grâce à un code trouvé sur l'excellentissime site de Frédéric Sigonneau, j'ai réussi à faire ce que je voulais,....en simulation seulement ! En effet, j'ajoute le code nécessaire depuis l'évènement Workbook_NewSheet et tout fonctionne bien tant que je fais une insertion manuelle d'une nouvelle feuille. Si je passe par ma procédure ci-dessus, rien ne se passe !
Où est l'astuce ??
Merci d'avance
ThierryP
Bonjour,
Tu ajoutes une feuille dans le même classeur ou dans un autre classeur ?
Si tu utilises déjà du code (Frédéric), pourquoi ne pas le publier... si ce dernier a
besoin d'être adapté...
Qu'est-ce que tu ne réussis pas à faire présentement avec la macro ?
MichD
--------------------------------------------
"ThierryP" a écrit dans le message de groupe de discussion :
ea0d4033-cc26-4bd1-9eaa-6155af15d0f1@t16g2000vbi.googlegroups.com...
Bonjour à tou(te)s,
Dans un classeur, j'ajoute par VBA, à la demande, une feuille copiée
depuis un autre classeur par :
Sheets.Add.Name = "toto"
J'ai besoin d'ajouter du code dans l'évènement Worksheet_Change de
cette nouvelle feuille. Grâce à un code trouvé sur l'excellentissime
site de Frédéric Sigonneau, j'ai réussi à faire ce que je
voulais,....en simulation seulement ! En effet, j'ajoute le code
nécessaire depuis l'évènement Workbook_NewSheet et tout fonctionne
bien tant que je fais une insertion manuelle d'une nouvelle feuille.
Si je passe par ma procédure ci-dessus, rien ne se passe !
Tu ajoutes une feuille dans le même classeur ou dans un autre classeur ?
Si tu utilises déjà du code (Frédéric), pourquoi ne pas le publier... si ce dernier a besoin d'être adapté...
Qu'est-ce que tu ne réussis pas à faire présentement avec la macro ?
MichD -------------------------------------------- "ThierryP" a écrit dans le message de groupe de discussion :
Bonjour à tou(te)s,
Dans un classeur, j'ajoute par VBA, à la demande, une feuille copiée depuis un autre classeur par : Sheets.Add.Name = "toto"
J'ai besoin d'ajouter du code dans l'évènement Worksheet_Change de cette nouvelle feuille. Grâce à un code trouvé sur l'excellentissime site de Frédéric Sigonneau, j'ai réussi à faire ce que je voulais,....en simulation seulement ! En effet, j'ajoute le code nécessaire depuis l'évènement Workbook_NewSheet et tout fonctionne bien tant que je fais une insertion manuelle d'une nouvelle feuille. Si je passe par ma procédure ci-dessus, rien ne se passe !
Où est l'astuce ??
Merci d'avance
ThierryP
ThierryP
Bonjour (Bonsoir pour moi !!) Denis,
Toujours au rendez-vous !!!!
Dans un classeur, j'utilise ce code pour copier une feuille existante dans un classeur auquel j'ajoute une page vierge : Workbooks("Purchasing_Form.xls").Sheets("Achat").Activate Columns("A:F").Select Selection.Copy Windows(ClassDest).Activate Sheets.Add.Name = Onglet 'Onglet est une variable calculée Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:úlse, Transpose:úlse
Ci-dessous le code utilsé pour ajouter le code dans le module de feuille : Sub AddEventToModule() 'nécessite une référence à : 'Microsoft Visual Basic For Applications Extensibility 5.3 (je l'ai ajoutée mais sans changement, la procédure fonctionne sans) Dim DebutCode As Long Dim S As String S = "Controle_Saisie(Target)" With ActiveWorkbook.VBProject.VBComponents(Nom_Feuille).CodeModule DebutCode = .CreateEventProc("Change", "WorkSheet") .InsertLines DebutCode + 1, S End With S = "" End Sub
et enfin dans le module du Workbook, j'utilise : Private Sub Workbook_NewSheet(ByVal Sh As Object) Nom_Feuille = Sh.CodeName Call AddEventToModule End Sub
Je viens de re-re-re-tester ! Si j'insère une feuille manuellement, le code est bien ajouté dans l'évènement Worksheet_Change, mais pas par la ligne Sheets.Add.Name = Onglet 'Onglet est une variable calculée
J'en perds mon latin et le peu de VBA que je maîtrise !!
Merci d'avance
ThierryP
On 27 avr, 21:34, "MichD" wrote:
Bonjour,
Tu ajoutes une feuille dans le m me classeur ou dans un autre classeur ?
Si tu utilises d j du code (Fr d ric), pourquoi ne pas le publier... si c e dernier a besoin d' tre adapt ...
Qu'est-ce que tu ne r ussis pas faire pr sentement avec la macro ?
MichD -------------------------------------------- "ThierryP" a crit dans le message de groupe de discussion :
Bonjour tou(te)s,
Dans un classeur, j'ajoute par VBA, la demande, une feuille copi e depuis un autre classeur par : Sheets.Add.Name = "toto"
J'ai besoin d'ajouter du code dans l' v nement Worksheet_Change de cette nouvelle feuille. Gr ce un code trouv sur l'excellentissime site de Fr d ric Sigonneau, j'ai r ussi faire ce que je voulais,....en simulation seulement ! En effet, j'ajoute le code n cessaire depuis l' v nement Workbook_NewSheet et tout fonctionne bien tant que je fais une insertion manuelle d'une nouvelle feuille. Si je passe par ma proc dure ci-dessus, rien ne se passe !
O est l'astuce ??
Merci d'avance
ThierryP
Bonjour (Bonsoir pour moi !!) Denis,
Toujours au rendez-vous !!!!
Dans un classeur, j'utilise ce code pour copier une feuille existante
dans un classeur auquel j'ajoute une page vierge :
Workbooks("Purchasing_Form.xls").Sheets("Achat").Activate
Columns("A:F").Select
Selection.Copy
Windows(ClassDest).Activate
Sheets.Add.Name = Onglet 'Onglet est une variable calculée
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Ci-dessous le code utilsé pour ajouter le code dans le module de
feuille :
Sub AddEventToModule()
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3 (je l'ai
ajoutée mais sans changement, la procédure fonctionne sans)
Dim DebutCode As Long
Dim S As String
S = "Controle_Saisie(Target)"
With ActiveWorkbook.VBProject.VBComponents(Nom_Feuille).CodeModule
DebutCode = .CreateEventProc("Change", "WorkSheet")
.InsertLines DebutCode + 1, S
End With
S = ""
End Sub
et enfin dans le module du Workbook, j'utilise :
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Nom_Feuille = Sh.CodeName
Call AddEventToModule
End Sub
Je viens de re-re-re-tester ! Si j'insère une feuille manuellement, le
code est bien ajouté dans l'évènement Worksheet_Change, mais pas par
la ligne
Sheets.Add.Name = Onglet 'Onglet est une variable calculée
J'en perds mon latin et le peu de VBA que je maîtrise !!
Merci d'avance
ThierryP
On 27 avr, 21:34, "MichD" <michde...@hotmail.com> wrote:
Bonjour,
Tu ajoutes une feuille dans le m me classeur ou dans un autre classeur ?
Si tu utilises d j du code (Fr d ric), pourquoi ne pas le publier... si c e dernier a
besoin d' tre adapt ...
Qu'est-ce que tu ne r ussis pas faire pr sentement avec la macro ?
MichD
--------------------------------------------
"ThierryP" a crit dans le message de groupe de discussion :
ea0d4033-cc26-4bd1-9eaa-6155af15d...@t16g2000vbi.googlegroups.com...
Bonjour tou(te)s,
Dans un classeur, j'ajoute par VBA, la demande, une feuille copi e
depuis un autre classeur par :
Sheets.Add.Name = "toto"
J'ai besoin d'ajouter du code dans l' v nement Worksheet_Change de
cette nouvelle feuille. Gr ce un code trouv sur l'excellentissime
site de Fr d ric Sigonneau, j'ai r ussi faire ce que je
voulais,....en simulation seulement ! En effet, j'ajoute le code
n cessaire depuis l' v nement Workbook_NewSheet et tout fonctionne
bien tant que je fais une insertion manuelle d'une nouvelle feuille.
Si je passe par ma proc dure ci-dessus, rien ne se passe !
Dans un classeur, j'utilise ce code pour copier une feuille existante dans un classeur auquel j'ajoute une page vierge : Workbooks("Purchasing_Form.xls").Sheets("Achat").Activate Columns("A:F").Select Selection.Copy Windows(ClassDest).Activate Sheets.Add.Name = Onglet 'Onglet est une variable calculée Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :úlse, Transpose:úlse Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:úlse, Transpose:úlse
Ci-dessous le code utilsé pour ajouter le code dans le module de feuille : Sub AddEventToModule() 'nécessite une référence à : 'Microsoft Visual Basic For Applications Extensibility 5.3 (je l'ai ajoutée mais sans changement, la procédure fonctionne sans) Dim DebutCode As Long Dim S As String S = "Controle_Saisie(Target)" With ActiveWorkbook.VBProject.VBComponents(Nom_Feuille).CodeModule DebutCode = .CreateEventProc("Change", "WorkSheet") .InsertLines DebutCode + 1, S End With S = "" End Sub
et enfin dans le module du Workbook, j'utilise : Private Sub Workbook_NewSheet(ByVal Sh As Object) Nom_Feuille = Sh.CodeName Call AddEventToModule End Sub
Je viens de re-re-re-tester ! Si j'insère une feuille manuellement, le code est bien ajouté dans l'évènement Worksheet_Change, mais pas par la ligne Sheets.Add.Name = Onglet 'Onglet est une variable calculée
J'en perds mon latin et le peu de VBA que je maîtrise !!
Merci d'avance
ThierryP
On 27 avr, 21:34, "MichD" wrote:
Bonjour,
Tu ajoutes une feuille dans le m me classeur ou dans un autre classeur ?
Si tu utilises d j du code (Fr d ric), pourquoi ne pas le publier... si c e dernier a besoin d' tre adapt ...
Qu'est-ce que tu ne r ussis pas faire pr sentement avec la macro ?
MichD -------------------------------------------- "ThierryP" a crit dans le message de groupe de discussion :
Bonjour tou(te)s,
Dans un classeur, j'ajoute par VBA, la demande, une feuille copi e depuis un autre classeur par : Sheets.Add.Name = "toto"
J'ai besoin d'ajouter du code dans l' v nement Worksheet_Change de cette nouvelle feuille. Gr ce un code trouv sur l'excellentissime site de Fr d ric Sigonneau, j'ai r ussi faire ce que je voulais,....en simulation seulement ! En effet, j'ajoute le code n cessaire depuis l' v nement Workbook_NewSheet et tout fonctionne bien tant que je fais une insertion manuelle d'une nouvelle feuille. Si je passe par ma proc dure ci-dessus, rien ne se passe !
O est l'astuce ??
Merci d'avance
ThierryP
MichD
Voici un exemple de code,
Ta question représente des bouts de n'importe quoi. Tu t'organise avec ceci.
'------------------------------------------ Sub Copier_Feuille_Autre_Classeur() Dim Sh As Worksheet, Code As String
Application.ScreenUpdating = True With Workbooks("ClassDest") 'Classeur de destination Set Sh = .Worksheets.Add End With With Workbooks("Purchasing_Form.xls").Sheets("Achat") 'Classeur Source .Range("A:F").Copy End With With Sh 'Ajoute la feuille + copie les données .Name = "MaFeuil" .Range("A1").PasteSpecial Paste:=xlPasteValues .Range("A1").PasteSpecial Paste:=xlPasteFormats End With
'le code à ajouter dans la nouvelle feuille 'tu ajoutes les lignes manquantes utilisant cette syntaxe Code = "Private Sub WorkSheet_Change(ByVal Target As Range)" & vbCrLf Code = "Le code à définir" & vbCrLf Code = "End Sub"
'Ajout du code dans le code module de la nouvelle feuille With Workbooks(Sh.Parent.Name).VBProject With .VBcomponents(Sh.CodeName).CodeModule .AddFromString Code End With 'Le code à ajouter dans le ThisWorkbook du classeur de destination Code = "" Code = "Private Sub Workbook_NewSheet(ByVal Sh As Object)" & vbCrLf Code = Code & "Dim Nom_Feuille As String" & vbCrLf Code = Code & "Nom_Feuille = Sh.CodeName" & vbCrLf Code = Code & "End Sub"
With .VBcomponents("ThisWorkbook").CodeModule .AddFromString Code End With End With Sh.Activate Range("A1").Select
Application.CutCopyMode = False Application.ScreenUpdating = False End Sub '------------------------------------------
Ta question représente des bouts de n'importe quoi.
Tu t'organise avec ceci.
'------------------------------------------
Sub Copier_Feuille_Autre_Classeur()
Dim Sh As Worksheet, Code As String
Application.ScreenUpdating = True
With Workbooks("ClassDest") 'Classeur de destination
Set Sh = .Worksheets.Add
End With
With Workbooks("Purchasing_Form.xls").Sheets("Achat") 'Classeur Source
.Range("A:F").Copy
End With
With Sh 'Ajoute la feuille + copie les données
.Name = "MaFeuil"
.Range("A1").PasteSpecial Paste:=xlPasteValues
.Range("A1").PasteSpecial Paste:=xlPasteFormats
End With
'le code à ajouter dans la nouvelle feuille
'tu ajoutes les lignes manquantes utilisant cette syntaxe
Code = "Private Sub WorkSheet_Change(ByVal Target As Range)" & vbCrLf
Code = "Le code à définir" & vbCrLf
Code = "End Sub"
'Ajout du code dans le code module de la nouvelle feuille
With Workbooks(Sh.Parent.Name).VBProject
With .VBcomponents(Sh.CodeName).CodeModule
.AddFromString Code
End With
'Le code à ajouter dans le ThisWorkbook du classeur de destination
Code = ""
Code = "Private Sub Workbook_NewSheet(ByVal Sh As Object)" & vbCrLf
Code = Code & "Dim Nom_Feuille As String" & vbCrLf
Code = Code & "Nom_Feuille = Sh.CodeName" & vbCrLf
Code = Code & "End Sub"
With .VBcomponents("ThisWorkbook").CodeModule
.AddFromString Code
End With
End With
Sh.Activate
Range("A1").Select
Application.CutCopyMode = False
Application.ScreenUpdating = False
End Sub
'------------------------------------------
Ta question représente des bouts de n'importe quoi. Tu t'organise avec ceci.
'------------------------------------------ Sub Copier_Feuille_Autre_Classeur() Dim Sh As Worksheet, Code As String
Application.ScreenUpdating = True With Workbooks("ClassDest") 'Classeur de destination Set Sh = .Worksheets.Add End With With Workbooks("Purchasing_Form.xls").Sheets("Achat") 'Classeur Source .Range("A:F").Copy End With With Sh 'Ajoute la feuille + copie les données .Name = "MaFeuil" .Range("A1").PasteSpecial Paste:=xlPasteValues .Range("A1").PasteSpecial Paste:=xlPasteFormats End With
'le code à ajouter dans la nouvelle feuille 'tu ajoutes les lignes manquantes utilisant cette syntaxe Code = "Private Sub WorkSheet_Change(ByVal Target As Range)" & vbCrLf Code = "Le code à définir" & vbCrLf Code = "End Sub"
'Ajout du code dans le code module de la nouvelle feuille With Workbooks(Sh.Parent.Name).VBProject With .VBcomponents(Sh.CodeName).CodeModule .AddFromString Code End With 'Le code à ajouter dans le ThisWorkbook du classeur de destination Code = "" Code = "Private Sub Workbook_NewSheet(ByVal Sh As Object)" & vbCrLf Code = Code & "Dim Nom_Feuille As String" & vbCrLf Code = Code & "Nom_Feuille = Sh.CodeName" & vbCrLf Code = Code & "End Sub"
With .VBcomponents("ThisWorkbook").CodeModule .AddFromString Code End With End With Sh.Activate Range("A1").Select
Application.CutCopyMode = False Application.ScreenUpdating = False End Sub '------------------------------------------
Oui, je sais que ce n'est pas très propre....:-((((( Mais j'ajoute des couches sur un truc que j'avais fait il y a longtemps, et mes connaissances ne vont pas très loin !!
Mais c'est en forgeant que l'on devient forgeron, non ? Pour l'instant, je me tape plus souvent sur les doigts qu'autre chose, mais bon, il ne faut pas désespérer !!
Merci infiniment :-)))
ThierryP
On 27 avr, 22:53, "MichD" wrote:
Voici un exemple de code,
Ta question repr sente des bouts de n'importe quoi. Tu t'organise avec ceci.
'------------------------------------------ Sub Copier_Feuille_Autre_Classeur() Dim Sh As Worksheet, Code As String
Application.ScreenUpdating = True With Workbooks("ClassDest") 'Classeur de destination Set Sh = .Worksheets.Add End With With Workbooks("Purchasing_Form.xls").Sheets("Achat") 'Classeur Source .Range("A:F").Copy End With With Sh 'Ajoute la feuille + copie les donn es .Name = "MaFeuil" .Range("A1").PasteSpecial Paste:=xlPasteValues .Range("A1").PasteSpecial Paste:=xlPasteFormats End With
'le code ajouter dans la nouvelle feuille 'tu ajoutes les lignes manquantes utilisant cette syntaxe Code = "Private Sub WorkSheet_Change(ByVal Target As Range)" & vbCrLf Code = "Le code d finir" & vbCrLf Code = "End Sub"
'Ajout du code dans le code module de la nouvelle feuille With Workbooks(Sh.Parent.Name).VBProject With .VBcomponents(Sh.CodeName).CodeModule .AddFromString Code End With 'Le code ajouter dans le ThisWorkbook du classeur de destination Code = "" Code = "Private Sub Workbook_NewSheet(ByVal Sh As Object)" & vb CrLf Code = Code & "Dim Nom_Feuille As String" & vbCrLf Code = Code & "Nom_Feuille = Sh.CodeName" & vbCrLf Code = Code & "End Sub"
With .VBcomponents("ThisWorkbook").CodeModule .AddFromString Code End With End With Sh.Activate Range("A1").Select
Application.CutCopyMode = False Application.ScreenUpdating = False End Sub '------------------------------------------
Oui, je sais que ce n'est pas très propre....:-(((((
Mais j'ajoute des couches sur un truc que j'avais fait il y a
longtemps, et mes connaissances ne vont pas très loin !!
Mais c'est en forgeant que l'on devient forgeron, non ? Pour
l'instant, je me tape plus souvent sur les doigts qu'autre chose, mais
bon, il ne faut pas désespérer !!
Merci infiniment :-)))
ThierryP
On 27 avr, 22:53, "MichD" <michde...@hotmail.com> wrote:
Voici un exemple de code,
Ta question repr sente des bouts de n'importe quoi.
Tu t'organise avec ceci.
'------------------------------------------
Sub Copier_Feuille_Autre_Classeur()
Dim Sh As Worksheet, Code As String
Application.ScreenUpdating = True
With Workbooks("ClassDest") 'Classeur de destination
Set Sh = .Worksheets.Add
End With
With Workbooks("Purchasing_Form.xls").Sheets("Achat") 'Classeur Source
.Range("A:F").Copy
End With
With Sh 'Ajoute la feuille + copie les donn es
.Name = "MaFeuil"
.Range("A1").PasteSpecial Paste:=xlPasteValues
.Range("A1").PasteSpecial Paste:=xlPasteFormats
End With
'le code ajouter dans la nouvelle feuille
'tu ajoutes les lignes manquantes utilisant cette syntaxe
Code = "Private Sub WorkSheet_Change(ByVal Target As Range)" & vbCrLf
Code = "Le code d finir" & vbCrLf
Code = "End Sub"
'Ajout du code dans le code module de la nouvelle feuille
With Workbooks(Sh.Parent.Name).VBProject
With .VBcomponents(Sh.CodeName).CodeModule
.AddFromString Code
End With
'Le code ajouter dans le ThisWorkbook du classeur de destination
Code = ""
Code = "Private Sub Workbook_NewSheet(ByVal Sh As Object)" & vb CrLf
Code = Code & "Dim Nom_Feuille As String" & vbCrLf
Code = Code & "Nom_Feuille = Sh.CodeName" & vbCrLf
Code = Code & "End Sub"
With .VBcomponents("ThisWorkbook").CodeModule
.AddFromString Code
End With
End With
Sh.Activate
Range("A1").Select
Application.CutCopyMode = False
Application.ScreenUpdating = False
End Sub
'------------------------------------------
Oui, je sais que ce n'est pas très propre....:-((((( Mais j'ajoute des couches sur un truc que j'avais fait il y a longtemps, et mes connaissances ne vont pas très loin !!
Mais c'est en forgeant que l'on devient forgeron, non ? Pour l'instant, je me tape plus souvent sur les doigts qu'autre chose, mais bon, il ne faut pas désespérer !!
Merci infiniment :-)))
ThierryP
On 27 avr, 22:53, "MichD" wrote:
Voici un exemple de code,
Ta question repr sente des bouts de n'importe quoi. Tu t'organise avec ceci.
'------------------------------------------ Sub Copier_Feuille_Autre_Classeur() Dim Sh As Worksheet, Code As String
Application.ScreenUpdating = True With Workbooks("ClassDest") 'Classeur de destination Set Sh = .Worksheets.Add End With With Workbooks("Purchasing_Form.xls").Sheets("Achat") 'Classeur Source .Range("A:F").Copy End With With Sh 'Ajoute la feuille + copie les donn es .Name = "MaFeuil" .Range("A1").PasteSpecial Paste:=xlPasteValues .Range("A1").PasteSpecial Paste:=xlPasteFormats End With
'le code ajouter dans la nouvelle feuille 'tu ajoutes les lignes manquantes utilisant cette syntaxe Code = "Private Sub WorkSheet_Change(ByVal Target As Range)" & vbCrLf Code = "Le code d finir" & vbCrLf Code = "End Sub"
'Ajout du code dans le code module de la nouvelle feuille With Workbooks(Sh.Parent.Name).VBProject With .VBcomponents(Sh.CodeName).CodeModule .AddFromString Code End With 'Le code ajouter dans le ThisWorkbook du classeur de destination Code = "" Code = "Private Sub Workbook_NewSheet(ByVal Sh As Object)" & vb CrLf Code = Code & "Dim Nom_Feuille As String" & vbCrLf Code = Code & "Nom_Feuille = Sh.CodeName" & vbCrLf Code = Code & "End Sub"
With .VBcomponents("ThisWorkbook").CodeModule .AddFromString Code End With End With Sh.Activate Range("A1").Select
Application.CutCopyMode = False Application.ScreenUpdating = False End Sub '------------------------------------------