Boooonsoar à toutes zéa tous !
Voilà mon problème :
J'ai un code qui surligne en rouge toute ligne active de ma feuille. le code
qui fait cela ne peut qu'être dans le code de la feuille elle-même, pas
moyen d ele mettre dans un module.
Or, je voudrais pourvoir intégrer ce code dans un xla, afin que, quelle que
soit la feuille du fichier utilisant les macros somplémentaires du xla,
elles aussi intégrent cette fonction.
Le but étant, bien sur, de na pas avoir à rajouter à chaque feuille de
chaque fichier le code en question.
Or, ça ne marche pas si je l'intègre simplement à la feuille principale de
mon xla.
Comment faire ?
Un grand merci d'avance
Serge
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anomymousA
bonjour,
une solution possible avec un exemple didactique:
Placer dans ton xla un module de classe p.e appelé AppEventClass
et écrire dans celui-ci
Public WithEvents Appl As Application
Private Sub Appl_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
Set Sh = ActiveWorkbook.ActiveSheet
Set rng = Sh.Range(Target.Address)
rng.EntireRow.Interior.ColorIndex = 8
End Sub
Puis dans le module Thisworkbook de ton xla Ecrire dans la section déclarations
Dim ApplicationClass As New AppEventClass
Puis écrire dans le module Thisworkbook de ton xla
Private Sub Workbook_Open()
Set ApplicationClass.Appl = Application
End Sub
Enregistrer ton xla et ensuite le déclarer dans les macros complémentaires à charger à l'ouverture d'Excel.
A partir de là dans l'exemple ci-dessus, quelle que soit la feuille de n'importe quel classeur , dès que tu cliques sur une cellule, la ou les lignes correspondantes se colore (ent) en cyan. Attention, cette procédure ne gère pas lors du changement de feuille ou de classeur la coloration automatique car elle est basée sur un selectionchange. Il te faut cliquer sur la cellule (différence entre le select et le activate dans le modèle Excel). Si tu veux que ca se fasse tout seul, il te faut gérer l' evenement Sheetactivate selon le même principe . Enfin, tu peux remplacer le code que je t'ai porté comme exemple par celui de ton choix dans la procédure Appl_SheetSelectionChange.
A+
Boooonsoar à toutes zéa tous ! Voilà mon problème : J'ai un code qui surligne en rouge toute ligne active de ma feuille. le code qui fait cela ne peut qu'être dans le code de la feuille elle-même, pas moyen d ele mettre dans un module. Or, je voudrais pourvoir intégrer ce code dans un xla, afin que, quelle que soit la feuille du fichier utilisant les macros somplémentaires du xla, elles aussi intégrent cette fonction. Le but étant, bien sur, de na pas avoir à rajouter à chaque feuille de chaque fichier le code en question. Or, ça ne marche pas si je l'intègre simplement à la feuille principale de mon xla. Comment faire ? Un grand merci d'avance Serge
bonjour,
une solution possible avec un exemple didactique:
Placer dans ton xla un module de classe p.e appelé AppEventClass
et écrire dans celui-ci
Public WithEvents Appl As Application
Private Sub Appl_SheetSelectionChange(ByVal Sh As Object, ByVal Target As
Range)
Dim rng As Range
Set Sh = ActiveWorkbook.ActiveSheet
Set rng = Sh.Range(Target.Address)
rng.EntireRow.Interior.ColorIndex = 8
End Sub
Puis dans le module Thisworkbook de ton xla Ecrire dans la section
déclarations
Dim ApplicationClass As New AppEventClass
Puis écrire dans le module Thisworkbook de ton xla
Private Sub Workbook_Open()
Set ApplicationClass.Appl = Application
End Sub
Enregistrer ton xla et ensuite le déclarer dans les macros complémentaires à
charger à l'ouverture d'Excel.
A partir de là dans l'exemple ci-dessus, quelle que soit la feuille de
n'importe quel classeur , dès que tu cliques sur une cellule, la ou les
lignes correspondantes se colore (ent) en cyan. Attention, cette procédure
ne gère pas lors du changement de feuille ou de classeur la coloration
automatique car elle est basée sur un selectionchange. Il te faut cliquer sur
la cellule (différence entre le select et le activate dans le modèle Excel).
Si tu veux que ca se fasse tout seul, il te faut gérer l' evenement
Sheetactivate selon le même principe .
Enfin, tu peux remplacer le code que je t'ai porté comme exemple par celui
de ton choix dans la procédure Appl_SheetSelectionChange.
A+
Boooonsoar à toutes zéa tous !
Voilà mon problème :
J'ai un code qui surligne en rouge toute ligne active de ma feuille. le code
qui fait cela ne peut qu'être dans le code de la feuille elle-même, pas
moyen d ele mettre dans un module.
Or, je voudrais pourvoir intégrer ce code dans un xla, afin que, quelle que
soit la feuille du fichier utilisant les macros somplémentaires du xla,
elles aussi intégrent cette fonction.
Le but étant, bien sur, de na pas avoir à rajouter à chaque feuille de
chaque fichier le code en question.
Or, ça ne marche pas si je l'intègre simplement à la feuille principale de
mon xla.
Comment faire ?
Un grand merci d'avance
Serge
Placer dans ton xla un module de classe p.e appelé AppEventClass
et écrire dans celui-ci
Public WithEvents Appl As Application
Private Sub Appl_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
Set Sh = ActiveWorkbook.ActiveSheet
Set rng = Sh.Range(Target.Address)
rng.EntireRow.Interior.ColorIndex = 8
End Sub
Puis dans le module Thisworkbook de ton xla Ecrire dans la section déclarations
Dim ApplicationClass As New AppEventClass
Puis écrire dans le module Thisworkbook de ton xla
Private Sub Workbook_Open()
Set ApplicationClass.Appl = Application
End Sub
Enregistrer ton xla et ensuite le déclarer dans les macros complémentaires à charger à l'ouverture d'Excel.
A partir de là dans l'exemple ci-dessus, quelle que soit la feuille de n'importe quel classeur , dès que tu cliques sur une cellule, la ou les lignes correspondantes se colore (ent) en cyan. Attention, cette procédure ne gère pas lors du changement de feuille ou de classeur la coloration automatique car elle est basée sur un selectionchange. Il te faut cliquer sur la cellule (différence entre le select et le activate dans le modèle Excel). Si tu veux que ca se fasse tout seul, il te faut gérer l' evenement Sheetactivate selon le même principe . Enfin, tu peux remplacer le code que je t'ai porté comme exemple par celui de ton choix dans la procédure Appl_SheetSelectionChange.
A+
Boooonsoar à toutes zéa tous ! Voilà mon problème : J'ai un code qui surligne en rouge toute ligne active de ma feuille. le code qui fait cela ne peut qu'être dans le code de la feuille elle-même, pas moyen d ele mettre dans un module. Or, je voudrais pourvoir intégrer ce code dans un xla, afin que, quelle que soit la feuille du fichier utilisant les macros somplémentaires du xla, elles aussi intégrent cette fonction. Le but étant, bien sur, de na pas avoir à rajouter à chaque feuille de chaque fichier le code en question. Or, ça ne marche pas si je l'intègre simplement à la feuille principale de mon xla. Comment faire ? Un grand merci d'avance Serge
Gaenonius
Une solution en trois étapes :
1 Créer un nouveau classeur (il s'appelle disons Classeur1), y ajouter un module standard dans lequel copier cette procédure (à titre d'exemple) :
Sub Message() MsgBox ActiveWorkbook.Name & " " & _ ActiveSheet.Name & " " & ActiveCell.Address End Sub
2 Enregistrer ce classeur comme macro complémentaire, sous le nom par ex de ClasseurTest.xla, fermer sans l'enregistrer le classeur créé en 1, puis installer la macro complémentaire par Outils -> Macros complémentaires et utiliser le bouton Parcourir pour aller chercher la macro complémentaire dans le dossier où elle a été enregistrée.
3 Ouvrir le classeur qui doit utiliser le code de la macro complémentaire. Dans son module ThisWorkbook, recopier le code suivant pour lancer la procédure Message chaque fois qu'une cellule quelconque d'une feuille quelconque de ce classeur est sélectionnée :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Range) Application.Run ("classeurtest.xla!Message") End Sub
Retourner dans Excel et cliquer n'importe où.
-- Gaenonius
Boooonsoar à toutes zéa tous ! Voilà mon problème : J'ai un code qui surligne en rouge toute ligne active de ma feuille. le code qui fait cela ne peut qu'être dans le code de la feuille elle-même, pas moyen d ele mettre dans un module. Or, je voudrais pourvoir intégrer ce code dans un xla, afin que, quelle que soit la feuille du fichier utilisant les macros somplémentaires du xla, elles aussi intégrent cette fonction. Le but étant, bien sur, de na pas avoir à rajouter à chaque feuille de chaque fichier le code en question. Or, ça ne marche pas si je l'intègre simplement à la feuille principale de mon xla. Comment faire ? Un grand merci d'avance Serge
Une solution en trois étapes :
1 Créer un nouveau classeur (il s'appelle disons Classeur1), y ajouter un module
standard dans lequel copier cette procédure (à titre d'exemple) :
Sub Message()
MsgBox ActiveWorkbook.Name & " " & _
ActiveSheet.Name & " " & ActiveCell.Address
End Sub
2 Enregistrer ce classeur comme macro complémentaire, sous le nom par ex de
ClasseurTest.xla, fermer sans l'enregistrer le classeur créé en 1, puis
installer la macro complémentaire par Outils -> Macros complémentaires et
utiliser le bouton Parcourir pour aller chercher la macro complémentaire dans le
dossier où elle a été enregistrée.
3 Ouvrir le classeur qui doit utiliser le code de la macro complémentaire. Dans
son module ThisWorkbook, recopier le code suivant pour lancer la procédure
Message chaque fois qu'une cellule quelconque d'une feuille quelconque de ce
classeur est sélectionnée :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Range)
Application.Run ("classeurtest.xla!Message")
End Sub
Retourner dans Excel et cliquer n'importe où.
--
Gaenonius
Boooonsoar à toutes zéa tous !
Voilà mon problème :
J'ai un code qui surligne en rouge toute ligne active de ma feuille. le code
qui fait cela ne peut qu'être dans le code de la feuille elle-même, pas
moyen d ele mettre dans un module.
Or, je voudrais pourvoir intégrer ce code dans un xla, afin que, quelle que
soit la feuille du fichier utilisant les macros somplémentaires du xla,
elles aussi intégrent cette fonction.
Le but étant, bien sur, de na pas avoir à rajouter à chaque feuille de
chaque fichier le code en question.
Or, ça ne marche pas si je l'intègre simplement à la feuille principale de
mon xla.
Comment faire ?
Un grand merci d'avance
Serge
1 Créer un nouveau classeur (il s'appelle disons Classeur1), y ajouter un module standard dans lequel copier cette procédure (à titre d'exemple) :
Sub Message() MsgBox ActiveWorkbook.Name & " " & _ ActiveSheet.Name & " " & ActiveCell.Address End Sub
2 Enregistrer ce classeur comme macro complémentaire, sous le nom par ex de ClasseurTest.xla, fermer sans l'enregistrer le classeur créé en 1, puis installer la macro complémentaire par Outils -> Macros complémentaires et utiliser le bouton Parcourir pour aller chercher la macro complémentaire dans le dossier où elle a été enregistrée.
3 Ouvrir le classeur qui doit utiliser le code de la macro complémentaire. Dans son module ThisWorkbook, recopier le code suivant pour lancer la procédure Message chaque fois qu'une cellule quelconque d'une feuille quelconque de ce classeur est sélectionnée :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Range) Application.Run ("classeurtest.xla!Message") End Sub
Retourner dans Excel et cliquer n'importe où.
-- Gaenonius
Boooonsoar à toutes zéa tous ! Voilà mon problème : J'ai un code qui surligne en rouge toute ligne active de ma feuille. le code qui fait cela ne peut qu'être dans le code de la feuille elle-même, pas moyen d ele mettre dans un module. Or, je voudrais pourvoir intégrer ce code dans un xla, afin que, quelle que soit la feuille du fichier utilisant les macros somplémentaires du xla, elles aussi intégrent cette fonction. Le but étant, bien sur, de na pas avoir à rajouter à chaque feuille de chaque fichier le code en question. Or, ça ne marche pas si je l'intègre simplement à la feuille principale de mon xla. Comment faire ? Un grand merci d'avance Serge