Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Quelle est la différence entre les contrôles de formulaire et les contrôles OleObject ?
auteur : SilkyRoad
Les objets formulaires sont disponibles depuis la barre d'outils du même nom.
Les contrôles ActiveX (OleObject) sont disponibles depuis la barre d'outils "Boîte à outils contrôles".
Dans Excel 2007, les deux types de contrôles sont dans l'onglet "Développeur", groupe "Contrôles", bouton "Insérer".

Bien que leurs formes soit ressemblantes, ces deux types d'objets ne possèdent pas les mêmes caractéristiques. Les contrôles de formulaire sont issus des versions anciennes d'Excel et sont conservées pour assurer une compatibilité ascendante des classeurs. Les contrôles formulaires sont toujours utilisables dans Excel2007. Toute fois, privilégiez les contrôles ActiveX qui contiennent plus de propriétés, de nombreux évènements et permettent plus de souplesse dans vos projets.



Comment vérifier le statut d'une case à cochée ?
auteur : SilkyRoad
Vba

Sub StatutCheckbox_Formulaire() 
    If Feuil1.Shapes("Check Box 1").ControlFormat.Value = xlOn Then 
        MsgBox "Coché." 
        Else 
        MsgBox "Décoché." 'xlOff 
    End If 
End Sub 



La procédure suivante coche ou décoche la checkbox.

Vba

Sub CocherDecocher_Checkbox_Formulaire() 
    Dim Obj As Object 
    
    Set Obj = Feuil1.Shapes("Check Box 1").OLEFormat.Object 
    
    If Obj.Value = xlOff Then 
        Obj.Value = xlOn 
        Else 
        Obj.Value = xlOff 
    End If 
End Sub

Comment boucler sur les cases à cocher formulaires d'une feuille de calcul ?
auteur : SilkyRoad
Vba

Sub BoucleCheckBoxes_Formulaire() 
    Dim Cb As CheckBox 
    
    'Boucle sur les checkboxes formulaires de la Feuil1 
    For Each Cb In Feuil1.CheckBoxes 
        'si la case est cochée 
        '(utilisez xlOff pour vérifier le statut "décoché") 
        If Cb.Value = xlOn Then 
            Debug.Print Cb.Name 
        End If 
    Next Cb 
End Sub

Comment supprimer tous les contrôles de formulaire contenus dans une feuille ?
auteur : SilkyRoad
Vba

Sub Supprime_ObjetsFormulaires() 
    Dim Obj As Shape 
    
    'Boucle sur les formes de la feuille active 
    For Each Obj In ActiveSheet.Shapes 
        'Identifie les objets formuaires et les supprime 
        If Obj.Type = msoFormControl Then Obj.Delete 
    Next Obj 
End Sub

Comment identifier les lignes sélectionnées dans une Listbox formulaire ?
auteur : SilkyRoad
Cet exemple suppose que la ListBox est paramétrée pour autoriser la mulisélection d'éléments (Type de sélection étendue).

Vba

Sub IdentifieMultiselection_ListBoxFormulaire() 
    Dim i As Integer 
    With Worksheets("Feuil1") 
        For i = 1 To .ListBoxes("List Box 1").ListCount 
            If .ListBoxes("List Box 1").Selected(i) Then 
                MsgBox .ListBoxes("List Box 1").List(i) 
            End If 
        Next i 
    End With 
End Sub

Comment créer des contrôles de formulaire dynamiquement par macro ?
auteur : SilkyRoad
La procédure ajoute un objet combobox (DropDown) dans la feuille de calcul.

Vba

Sub AjouteComboBox_Formulaire() 
    Dim Obj As Object 
    
    'Ajoute le ComboBox dans la feuille 
    '...DropDowns.Add(PositionHorizontale, PositionVerticale, Largeur, Hauteur) 
    Set Obj = Feuil1.DropDowns.Add(295, 150, 170, 15) 
    
    With Obj 
        'Renomme la forme. 
        .Name = "Cible" 
        'Définit la plage de données qui va s'afficher dans le ComboBox 
        .ListFillRange = "Feuil2!A1:A10" 
        'Définit la cellule liée (La cellule affichera l'index de l'élément 
        'sélectionné dans la ComboBox). 
        .LinkedCell = "Feuil1!$H$10" 
        'Nombre d'éléments visibles sans vavoir besoin 
        'd'utilisation la barre de défilement verticale. 
        .DropDownLines = 8 
        .Display3DShading = False 
    End With 
End Sub 


Et si par la suite vous avez besoin de supprimer la forme, il suffit de l'appeler par son nom:

Vba

Feuil1.Shapes("Cible").Delete 



Cet autre exemple insère une série de boutons formulaires dans la plage de cellules B2:B11, et leur associe une macro créée dynamiquement aussi.

Vba

Sub AjouteSerieBoutonsFormulaires()
    Dim i As Byte
    Dim x As Integer
    Dim Code As String
    Dim S As Shape
    
    For i = 2 To 11
        'création des boutons dans la Feuil1
        With Feuil1
            Set S = .Shapes.AddFormControl(xlButtonControl, .Cells(i, 2).Left, .Cells(i, 2).Top, _
                .Cells(i, 2).Width, .Cells(i, 2).Height)
        End With
        
        'Définit le texte qui va s'afficher dans le bouton.
        S.TextFrame.Characters.Caption = "bouton " & i
        'Attache une macro au bouton
        S.OnAction = "MacroBouton"
    Next i

    'Crée dynamiquement la macro attachée aux boutons.
    Code = "Sub MacroBouton" & vbCrLf
    Code = Code & "MsgBox Application.Caller" & vbCrLf
    Code = Code & "End Sub"
    
    'Insertion de la macro dans le **Module1**.
    '(adaptez le nom du module si nécessaire)
    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
        x = .CountOfLines + 1
        .InsertLines x, Code
    End With

End Sub
lien : Visual Basic Editor

precedent    sommaire    suivant   

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.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com