[RESOLU] Etendre code à toutes les feuilles

cathodique

XLDnaute Barbatruc
Bonjour,

Avec ce code (classe+code dans thisworkbook), au passage de la souris sur les boutons de la feuille1, ces derniers changent de couleur.
Je voudrais que ce code agisse sur les boutons de n'importe quelle feuille (feuille active). J'ai modifié le code sans succès, le code n'agit que sur la feuille1.
VB:
Option Explicit
Dim MesBoutons() As New Classe1
Private Sub Workbook_Activate()
    Dim OleObj As OLEObject
    Dim I As Integer
    'For Each OleObj In Me.Sheets(1).OLEObjects
     For Each OleObj In ActiveSheet.OLEObjects
        If TypeName(OleObj.Object) = "CommandButton" Then
            I = I + 1
            ReDim Preserve MesBoutons(1 To I)
            Set MesBoutons(I).Bouton = OleObj.Object
        End If
    Next OleObj
End Sub

'code du module de classe
Option Explicit
Public WithEvents Bouton As MSForms.CommandButton
Private Sub Bouton_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    With Bouton
        If X < 5 Or X > .Width - 5 Or Y < 5 Or Y > .Height - 5 Then .BackColor = &H8000000F Else .BackColor = &HFF&
    End With
End Sub
En vous remerciant.
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Etendre code à toutes les feuilles

Bonjour cathodique

A tester:

Code:
Private Sub Workbook_Activate()
    Dim OleObj As OLEObject
    Dim I As Integer
    'For Each OleObj In Me.Sheets(1).OLEObjects
    For Each Sh In Sheets
      For Each OleObj In Sh.OLEObjects
        If TypeName(OleObj.Object) = "CommandButton" Then
            I = I + 1
            ReDim Preserve MesBoutons(1 To I)
            Set MesBoutons(I).Bouton = OleObj.Object
        End If
     Next OleObj
    Next
End Sub
 

cathodique

XLDnaute Barbatruc
Re : Etendre code à toutes les feuilles

Bonjour Pierrejean,

Merci beaucoup pour ton code. Sh n'était pas définie, je l'ai définie ainsi: Sh as Sheets.
Ensuite, le code plante sur .OLEObjects (juste après Sh).
Le message d'erreur est le suivant: Membre de méthode ou de données introuvable.

Le fichier comporte 4 feuilles sur lesquelles il y a des boutons ActiveX.

Désolé, j'avais omis de joindre le fichier.
 

Pièces jointes

  • RollOver.xlsm
    46.8 KB · Affichages: 33
  • RollOver.xlsm
    46.8 KB · Affichages: 29

cathodique

XLDnaute Barbatruc
Re : Etendre code à toutes les feuilles

Re,

C'est exactement le résultat escompté. Parfait.

Mais je t'avoue ne pas avoir compris pourquoi en déclarant Sh en tant que Sheets ça ne fonctionne pas et en variant ça fonctionne (en mettant juste dim sh, ça veut dire sh est un variant, c'est bien ça?).

Merci de m'éclairer un peu plus.
 

pierrejean

XLDnaute Barbatruc
Re : Etendre code à toutes les feuilles

Re

Shetts est une collection de sheet et il il n'y a pas possibilité de Sh As Sheet

Si tu tiens a déclarer Sh ce serait Sh as object

Pour ma part ,ne travaillant jamais sur des projets importants je me contente des Variant ce qui me permet de ne pas déclarer les variables (n'en déplaise aux ayatollah de l'option Explicit) et j’évite ainsi les désagréments de variables mal déclarées
 

Discussions similaires

Réponses
29
Affichages
975

Statistiques des forums

Discussions
312 368
Messages
2 087 655
Membres
103 630
dernier inscrit
Azashoriu