| auteur : SilkyRoad |
Les contrôles sont disponibles dans la barre d'outils "Boîte à outils contrôles" (ou onglet Développeur/groupe
"Contrôles/Insérer/"Contrôles ActiveX", pour Excel2007).
Après avoir ajouté l'objet dans la feuille de calcul, vérifiez que vous êtes bien en mode création.
Faites un clic droit sur le contrôle que vous venez d'insérer dans la feuille et sélectionnez l'option "Visualiser le code" dans
le menu contextuel (ou double cliquez sur le contrôle).
Vous atteignez ainsi le module de la feuille qui contient votre objet.
Le menu déroulant de droite, en haut de la fenêtre de code, liste les évènements utilisables par cet objet.
Les contrôles de la feuille de calcul fonctionnent (pratiquement) de la même manière que ceux
utilisés dans les UserForm.
Il faut simplement faire précéder l'objet par le nom de la feuille:
Vba |
Option Explicit
Private Sub CommandButton1_Click ()
Worksheets (" Feuil1 " ). TextBox1 . Value = 10
End Sub
|
|
| auteur : SilkyRoad | Vba |
Dim Obj As OLEObject
Set Obj = Feuil1. OLEObjects . Add (" Forms.Label.1 " )
With Obj
. Top = 140
. Left = 360
. Name = " NomLabel "
. Width = 60
. Height = 40
. Object . Caption = " DVP "
. Object . BackStyle = 0
. ShapeRange . Fill . Transparency = 1 #
End With
|
|
| auteur : SilkyRoad |
Cette première version boucle sur tous les contrôles de la feuille active et vérifie s'il s'agit d'une case à cocher.
Vba |
Sub BoucleCheckBox_V01 ()
Dim Obj As OLEObject
For Each Obj In ActiveSheet. OLEObjects
If TypeOf Obj. Object Is MSForms. CheckBox Then _
MsgBox Obj. Name & " : " & Obj. Object . Value
Next Obj
End Sub
|
Vous pouvez aussi utiliser cette deuxième procédure si vous connaissez le nom des CheckBox:
(CheckBox1 à CheckBox3 dans cet exemple)
Vba |
Sub BoucleCheckBox_V02 ()
Dim i As Byte
For i = 1 To 3
MsgBox ActiveSheet. OLEObjects (" CheckBox " & i). Name & " : " & _
ActiveSheet. OLEObjects (" CheckBox " & i). Object . Value
Next i
End Sub
|
Vous pouvez bien entendu adapter les procédures pour boucler sur les autres types de contrôles.
|
| auteur : SilkyRoad |
La procédure boucle sur les cellules de la plage A1:A20 et alimente la ComboBox de la Feuil1, sans doublon.
Vba |
Dim Cell As Range
Feuil1. ComboBox1 . Clear
For Each Cell In Feuil1. Range (" A1:A20 " )
Feuil1. ComboBox1 = Cell
If Feuil1. ComboBox1 . ListIndex = - 1 Then _
Feuil1. ComboBox1 . AddItem Cell
Next Cell
|
|
| auteur : SilkyRoad | Vba |
Sub TriAlpha_ComboBox ()
Dim i As Integer, j As Integer
Dim strTemp As String
Feuil1. ComboBox1 . Clear
Feuil1. ComboBox1 . List () = Array (" mimi " , " nono " , " bibi " , " fifi " , " lolo " )
With Feuil1. ComboBox1
For i = 0 To . ListCount - 1
For j = 0 To . ListCount - 1
If . List (i) < . List (j) Then
strTemp = . List (i)
. List (i) = . List (j)
. List (j) = strTemp
End If
Next j
Next i
End With
End Sub
|
|
| auteur : SilkyRoad |
La procédure déclenche le code (évènement Click) d'un CommandButton, placé dans la Feuil1.
Vba |
Application. Run (" Feuil1.CommandButton1_Click " )
|
|
| auteur : SilkyRoad |
La macro cherche un document Word sur le PC, puis l'insère à l'emplacement de la cellule B10 dans la feuille active.
Vba |
Sub InsertionDocument_Feuille ()
Dim OleObj As OLEObject
Dim Fichier As Variant
Dim PosHori As Double, PosVerti As Double, Largeur As Double, Hauteur As Double
Fichier = Application. GetOpenFilename (" Documents Word (*.doc), *.doc " )
If Fichier < > False Then
PosHori = Range (" B10 " ). Left
PosVerti = Range (" B10 " ). Top
Largeur = Range (" B10 " ). Width
Hauteur = Range (" B10 " ). Height
Set OleObj = ActiveSheet. OLEObjects . Add (Filename:= Fichier, _
Link:= False , displayAsIcon:= True , iconIndex:= 0 , iconLabel:= Fichier)
With OleObj
. Left = PosHori
. Top = PosVerti
. Width = Largeur
. Height = Hauteur
End With
End If
End Sub
|
Indiquez la valeur True pour l'argument Link afin que le document ne soit pas physiquement inséré dans la feuille.
L'icône pointera vers le fichier du disque, sous forme de lien, ce qui limitera la taille de votre classeur.
|
| auteur : SilkyRoad | Vba |
Sub Verifier_Si_DocumentWord_Vide ()
Dim WordApp As Object
Dim WordObj As Shape
Set WordObj = Worksheets (1 ). Shapes (1 )
WordObj. OLEFormat . Activate
Set WordApp = WordObj. OLEFormat . Object . Object . Application
WordApp. Visible = False
If WordApp. Selection . Document . Words . Count = 1 Then
MsgBox " Vide "
Else
MsgBox " Non vide " & vbCrLf & vbCrLf & _
WordApp. Selection . Document . Content
End If
Range (" A1 " ). Select
End Sub
|
|
| auteur : SilkyRoad | Vba |
Sub LancePresentation_Feuille ()
Dim appPPT As Object
Dim Obj As Shape
Set Obj = Worksheets (" Feuil1 " ). Shapes (1 )
Obj. OLEFormat . Activate
Set appPPT = Obj. OLEFormat . Object . Object . Application
appPPT. ActivePresentation . SlideShowSettings . Run
End Sub
|
|
| auteur : SilkyRoad |
Utilisez le menu Insertion/Objet/Onglet "Nouvel objet".
Sélectionnez "Son wave" dans la liste des types d'objets.
Cliquez sur le bouton OK pour valider.
Effectuez un clic droit sur le nouvel objet inséré.
Sélectionnez l'option "Objet Document Magnétophone".
Puis Ouvrir.
Dans la fenêtre qui s'affiche, utilisez le menu Edition/Insérer un fichier.
Choisissez le fichier wave à insérer dans la feuille.
(Attention à la taille du fichier qui risque d'alourdir votre classeur)
Refermez les boîtes de dialogue.
Un exemple de macro pour déclencher l'objet inséré dans la feuille de calcul.
Vba |
Sub DeclencheSonWave ()
Worksheets (" Feuil1 " ). OLEObjects (" objet 1 " ). Verb
End Sub
|
|
| auteur : SilkyRoad |
Lorsque vous avez plusieurs contrôles de même type dans une feuille, et qui effectuent la même opération,
il est possible d'écrire une seule procédure qui va gérer toutes les actions.
Les modules de classes permettent de gérer les groupes de contrôles et d'identifier les évènements qui sont appliqués sur ces objets.
Cet exemple gère les CheckBox placées dans la feuille de calcul "Feuil1".
Une action est déclenchée dès que l'utilisateur clique sur une des cases à cocher.
Vba |
Option Explicit
Private Sub Workbook_Open ()
Dim Obj As OLEObject
Dim Cl As Classe1
Set Collect = New Collection
For Each Obj In Feuil1. OLEObjects
If TypeOf Obj. Object Is MSForms. CheckBox Then
Set Cl = New Classe1
Set Cl. CheckBoxGroup = Obj. Object
Collect. Add Cl
End If
Next Obj
End Sub
|
Vba |
Option Explicit
Public Collect As Collection
|
Vba |
Option Explicit
Public WithEvents CheckBoxGroup As MSForms. CheckBox
Private Sub CheckBoxGroup_Click ()
MsgBox CheckBoxGroup. Name & " : " & CheckBoxGroup. Value
Cells (CheckBoxGroup. TopLeftCell . Row , 1 ) = CheckBoxGroup. Value
End Sub
|
|
| auteur : SilkyRoad |
Vous pouvez intégrer un module de classe qui va prendre en charge le transfert du curseur vers la TextBox suivante,
lors de l'utilisation des tabulations:
Vba |
Option Explicit
Private Sub Workbook_Open ()
Dim Obj As OLEObject
Dim Cl As Classe1
Set Collect = New Collection
For Each Obj In Feuil1. OLEObjects
If TypeOf Obj. Object Is MSForms. TextBox Then
Set Cl = New Classe1
Set Cl. TexteGroup = Obj. Object
Collect. Add Cl
End If
Next Obj
End Sub
|
Vba |
Option Explicit
Public Collect As Collection
|
Vba |
Option Explicit
Public WithEvents TexteGroup As MSForms. TextBox
Private Sub TexteGroup_KeyUp (ByVal KeyCode As _
MSForms. ReturnInteger , ByVal Shift As Integer)
Dim Valeur As Byte
Valeur = TexteGroup. Index
If KeyCode = 9 Then
If Valeur < > Collect. Count Then
With Collect (Valeur + 1 ). TexteGroup
. Activate
End With
Else
With Collect (1 ). TexteGroup
. Activate
End With
End If
End If
End Sub
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2008
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|