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   


Comment afficher le contenu d'une cellule dans une forme automatique ?
auteur : SilkyRoad
Sélectionnez votre forme automatique.
Saisissez la référence de la cellule dans la barre de formules.
Par exemple =Cible!A1
Désormais le contenu de la cellule A1, de le Feuille nommée "Cible", s'affiche dans la forme.



Comment récupérer le nom de la forme sur laquelle j'ai cliqué ?
auteur : SilkyRoad
Si plusieurs formes sont placées dans votre feuille, attribuez leurs la même macro ci dessous:
(Clic droit dans chaque forme puis sélectionnez l'option "Affecter une macro".

Vba

Sub Test()
    MsgBox Application.Caller
End Sub


Le nom de la forme s'affiche lorsque vous cliquez dessus.


La procédure suivante permet de récupérer le texte contenu dans la forme.

Vba

MsgBox ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text

Comment récupérer l'emplacement de la forme automatique dans la feuille ?
auteur : SilkyRoad
Cette macro récupère l'adresse des cellules placées sous la 1ere forme automatique de la Feuil1.

Vba

Sub PositionFormeAutomatique()
    Dim Shp As Shape
    
    'Spécifie la 1ere forme dans la Feuil1
    Set Shp = Feuil1.Shapes(1)
    MsgBox Shp.TopLeftCell.Address & ":" & Shp.BottomRightCell.Address
End Sub

Comment ajouter une forme automatique dans la feuille ?
auteur : SilkyRoad
Vba

'Ajoute une forme automatique (Rectangle) dans la feuille
    'Position horizontale - Left = 40
    'Position verticale - Top = 80
    'Largeur - Width = 140
    'Hauteur - Height = 50
With Worksheets("Feuil1").Shapes.AddShape(msoShapeRectangle, 40, 80, 140, 50)
    .Name = "NomForme"
    .TextFrame.Characters.Text = "Le texte dans la forme"
End With

Comment boucler sur les formes contenues dans une feuille et renvoyer leur nom et leur type ?
auteur : SilkyRoad
Vba

Dim Obj As Shape

'Compte le nombre de formes dans la feuille
MsgBox "Nombre de formes dans la feuille: " & Worksheets("Feuil1").Shapes.Count

'Boucle sur les formes contenues dans la feuille
For Each Obj In Worksheets("Feuil1").Shapes
    Select Case Obj.Type
        '--- MsoShapeType peut être une des constantes suivantes ---
        '-----------------------------------------------------------
        
            'Consultez aussi les constantes AutoShapeType pour identifier les différents
            'types de formes automatiques msoAutoShape.
        Case msoAutoShape: MsgBox "Forme automatique: " & Obj.Name
        'Case msoCallout
        Case msoChart: MsgBox "Graphique: " & Obj.Name
        Case msoComment: MsgBox "Commentaire: " & Obj.Name
        Case msoDiagram: MsgBox "Diagramme/Organigramme: " & Obj.Name
        Case msoEmbeddedOLEObject: MsgBox "Objet incorporé: " & Obj.Name
            'Nota:
            'Chaque bouton des filtres automatiques est considéré
            'comme un objet formulaire (zone de liste/DropDown).
        Case msoFormControl: MsgBox "Objet formulaire: " & Obj.Name
        Case msoFreeform: MsgBox "Forme libre: " & Obj.Name
        Case msoGroup: MsgBox "Groupe: " & Obj.Name
        Case msoLine: MsgBox "Ligne: " & Obj.Name
        Case msoLinkedOLEObject: MsgBox "Objet incorporé lié au fichier: " & Obj.Name
        Case msoOLEControlObject: MsgBox "Objet de la boîte à outils Contrôle: " & Obj.Name
        Case msoPicture: MsgBox "Image: " & Obj.Name
            'msoShapeTypeMixed permet de vérifier si une plage de formes contient
            'des types d'objets différents:
            'Par exemple: If Selection.ShapeRange.Type = msoShapeTypeMixed Then
        'Case msoShapeTypeMixed: MsgBox "Combinaison de formes"
        Case msoTextBox: MsgBox "Zone de texte: " & Obj.Name
        Case msoTextEffect: MsgBox "WordArt: " & Obj.Name
    End Select
Next Obj

Comment supprimer toutes les formes dans la feuille ?
auteur : SilkyRoad
3 exemples:

Vba

Dim Sh As Shape

For Each Sh In ActiveSheet.Shapes
    Sh.Delete
Next
Vba

Do Until ActiveSheet.Shapes.Count = 0
ActiveSheet.Shapes(1).Delete
Loop
Vba

ActiveSheet.Shapes.SelectAll
Selection.Delete

Comment regrouper les formes automatiques ?
auteur : SilkyRoad
Cet exemple boucle sur les formes de la feuille active et enregistre dans un tableau leurs noms, s'ils commencent par la chaîne "Mvt".
Les éléments du tableau sont ensuite utilisés pour regrouper les formes.

Nota:
Cette procédure ne fonctionne pas si deux formes portent le même nom.

Vba

Sub GroupementShapes_Conditionnel()
    Dim Sh As Shape
    Dim Tableau() As String
    Dim i As Integer
    
    'Boucle sur les formes de la feuille active
    For Each Sh In ActiveSheet.Shapes
        'Vérifie si le nom de la forme commence par "Mvt".
        If Left(Sh.Name, 3) = "Mvt" Then
            i = i + 1
            'Redéfinit la taille du tableau et intègre le nom de la forme.
            ReDim Preserve Tableau(1 To i)
            Tableau(i) = Sh.Name
        End If
    Next
    
    'On sort si le tableau est vide.
    If i = 0 Then Exit Sub
    
    'Regroupe les formes dont le nom se trouve dans le tableau
    Set Sh = ActiveSheet.Shapes.Range(Tableau).Group
    'Renomme le groupe.
    Sh.Name = "NomGroupe"
End Sub

Comment insérer une image dans une forme automatique ?
auteur : SilkyRoad
Faites un clic droit sur la forme.
Choisissez l'option "Format de la forme automatique" dans le menu contextuel.
Sélectionnez l'onglet "Couleurs et traits".
Sélectionnez "Motif et texture" dans le champ "Couleur".
Cliquez sur l'onglet "Image",
puis utilisez le bouton "Sélectionner une image".
Validez en cliquant sur le bouton OK dans les différentes fenêtres.


Dans Excel2007:
Faites un clic droit sur la forme.
Choisissez l'option "Format de la forme" dans le menu contextuel.
Cliquez sur le menu "Remplissage".
Sélectionnez l'option "Remplissage avec image ou texture".
Cliquez sur le bouton "Fichier" ou clipArt".
Recherchez sur votre disque dur l'image à insérer.
Cliquez sur le bouton "Fermer".


Pour réaliser cette action par macro:

Vba

Sub InsertionImage_DansShape()
    Dim strImage As String
    Dim Sh As Shape
    
    'Représente la premiere forme de la Feuil1
    Set Sh = Feuil1.Shapes(1)
    
    strImage = "C:\Documents and Settings\mimi\dossier\fourmiz.JPG"
    Sh.Fill.UserPicture strImage
End Sub

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