Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Code dans la feuille via un xla ?

2 réponses
Avatar
Serge Hipontoise
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

2 réponses

Avatar
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





Avatar
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