Code

Le
Michel MTO
Bonjour à toutes et à tous,

Je remercie, tout d'abord, Isabelle pour m'avoir donner ce code en date du
15/10/09 :

bonjour Michel,
il faudra modifier le nom de Feuil1 et Feuil2 selon le cas,
Sub CopiDeCode()
Dim S As String
With ThisWorkbook.VBProject.VBComponents("Feuil1").CodeModule
S = .Lines(1, .CountOfLines)
End With
With ThisWorkbook.VBProject.VBComponents("Feuil2").CodeModule
.AddFromString S
End With
End Sub
isabelle


Cependant, au moment de l'exécution du code j'ai cette erreur qui apparait :

erreur d'exécution 9 , l'indice n'appartient pas à la sélection
sur cette ligne => With
ThisWorkbook.VBProject.VBComponents(NomFeuille(2)).CodeModule

Je précise que j'exécute mon code dans le "ThisWorkbook".

Le but étant de recopier le code VBA d'une feuille déjà existante dans une
nouvelle qui est crée via un code vba placé dans un mondule standard.

Quelqu'un aurait-il une piste ?

Merci par avance

Michel Mto
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #20392661
Bonjour,

Pas obligé de faire cela, s'agissant du code feuille, il est
généralement lié aux procèdures évenementielles de la feuille et cela
se gère aussi dans thisworkbook. Sélectionner Workbook dans déroulant
Haut gauche du Thisworkbook. Puis voir dans ce dernier parmi les
évenements de classeur ceux applicables à l'ensemble des feuilles
dans
le déroulant situé en haut à droite. Workbook_SheetChange,
Workbook_SheetActivate... ??etc
Voici très simple exemple qui réagit à toutes les feuilles sans
besoin qu'elles mêmes contiennent de code:


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "Je suis la feuille " & Sh.Name
End Sub


Attention si un evennement est déjà gèré au niveau thisworkbook pou r
l'ensemble des feuilles il faudra enlever ce code de la feuille elle
même.
Pour écarter certaines feuilles un if ou un select case, peuvent
faire
l'affaire,.


Cordialement.


--
lSteph






On 21 oct, 12:21, "Michel MTO"
Bonjour à toutes et à tous,

Je remercie, tout d'abord, Isabelle pour m'avoir donner ce code en date d u
15/10/09 :

bonjour Michel,
il faudra modifier le nom de Feuil1 et Feuil2 selon le cas,
Sub CopiDeCode()
Dim S As String
  With ThisWorkbook.VBProject.VBComponents("Feuil1").CodeModule
    S = .Lines(1, .CountOfLines)
  End With
  With ThisWorkbook.VBProject.VBComponents("Feuil2").CodeModule
    .AddFromString S
  End With
End Sub
isabelle

Cependant, au moment de l'exécution du code j'ai cette erreur qui appar ait :

 erreur d'exécution 9 , l'indice n'appartient pas à la sélection
sur cette ligne => With
ThisWorkbook.VBProject.VBComponents(NomFeuille(2)).CodeModule

Je précise que j'exécute mon code dans le "ThisWorkbook".

Le but étant de recopier le code VBA d'une feuille déjà existante d ans une
nouvelle qui est crée via un code vba placé dans un mondule standard.

Quelqu'un aurait-il une piste ?

Merci par avance

Michel Mto


FFO
Le #20393261
Salut Michel

As tu essayé de vérifier au niveau de : NomFeuille(2)
celà doit être une variable (sinon il manque des guillemets ainsi :
"NomFeuille(2)") qui doit faire référence à un nom d'Onglet
Lors du Bug porte ta souris dessus pour vérifier cette donnée
Vérifies la présence d'un onglet avec le nom de cette donnée
Attention aux espaces et à la casse

Donne nous des nouvelles !!!!!
Michel MTO
Le #20394771
Merci pour ton temps, je suis rester sur la proposition de LSteph

Mais j'avais bien vérifier la variable me ramenait bien le nom de la feuille

Michel

Salut Michel

As tu essayé de vérifier au niveau de : NomFeuille(2)
celà doit être une variable (sinon il manque des guillemets ainsi :
"NomFeuille(2)") qui doit faire référence à un nom d'Onglet
Lors du Bug porte ta souris dessus pour vérifier cette donnée
Vérifies la présence d'un onglet avec le nom de cette donnée
Attention aux espaces et à la casse

Donne nous des nouvelles !!!!!



Michel MTO
Le #20394901
Merci LSteph
Je ne savais pas que, les évènements feuille se géraientt également au
niveau du ThisWorkbook.

Michel

"LSteph" news:
Bonjour,

Pas obligé de faire cela, s'agissant du code feuille, il est
généralement lié aux procèdures évenementielles de la feuille et cela
se gère aussi dans thisworkbook. Sélectionner Workbook dans déroulant
Haut gauche du Thisworkbook. Puis voir dans ce dernier parmi les
évenements de classeur ceux applicables à l'ensemble des feuilles
dans
le déroulant situé en haut à droite. Workbook_SheetChange,
Workbook_SheetActivate... ??etc
Voici très simple exemple qui réagit à toutes les feuilles sans
besoin qu'elles mêmes contiennent de code:


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "Je suis la feuille " & Sh.Name
End Sub


Attention si un evennement est déjà gèré au niveau thisworkbook pour
l'ensemble des feuilles il faudra enlever ce code de la feuille elle
même.
Pour écarter certaines feuilles un if ou un select case, peuvent
faire
l'affaire,.


Cordialement.


--
lSteph






On 21 oct, 12:21, "Michel MTO"
Bonjour à toutes et à tous,

Je remercie, tout d'abord, Isabelle pour m'avoir donner ce code en date du
15/10/09 :

bonjour Michel,
il faudra modifier le nom de Feuil1 et Feuil2 selon le cas,
Sub CopiDeCode()
Dim S As String
With ThisWorkbook.VBProject.VBComponents("Feuil1").CodeModule
S = .Lines(1, .CountOfLines)
End With
With ThisWorkbook.VBProject.VBComponents("Feuil2").CodeModule
.AddFromString S
End With
End Sub
isabelle

Cependant, au moment de l'exécution du code j'ai cette erreur qui apparait


:

erreur d'exécution 9 , l'indice n'appartient pas à la sélection
sur cette ligne => With
ThisWorkbook.VBProject.VBComponents(NomFeuille(2)).CodeModule

Je précise que j'exécute mon code dans le "ThisWorkbook".

Le but étant de recopier le code VBA d'une feuille déjà existante dans une
nouvelle qui est crée via un code vba placé dans un mondule standard.

Quelqu'un aurait-il une piste ?

Merci par avance

Michel Mto


Publicité
Poster une réponse
Anonyme