IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insérer un bouton excel par cellule


Sujet :

Macros et VBA Excel

  1. #1
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut Insérer un bouton excel par cellule
    Bonjour,


    Je cherche à insérer un bouton par ligne de mon tableau et chaque bouton activerait un lien hypertexte.

    Actuellment j'ai un lien hypetexte basé sur la fonction LIEN_HYPERTEXTE (). Vu que mon tableau contient beaucoup de ligne la lisibilité n'est pas au RDV. Du coup, je voudrais remplacer la mise en forme du lien hypertexte pa r un bouton.

    Donc pour résumé

    Pb 1 est-il possible de créer un bouton dans une cellule
    Pb 2 est-il possible d'automatiser ça,
    Pb 3 est-il possible que chaque bouton active un lien hypertexte.

    Merci cordialement

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir


    Pb 1 est-il possible de créer un bouton dans une cellule
    Pb 2 est-il possible d'automatiser ça,
    cet exemple ajoute des boutons au dessus de chaque cellule de la plage A1:A5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Option Explicit
     
    Sub AjoutCommandButton_Feuille()
        Dim Ws As Worksheet
        Dim Obj As OLEObject
        Dim Cell As Range
     
        'Définit la feuille qui va contenir les boutons
        Set Ws = ActiveSheet
     
        'Boucle sur la plage de cellule qui va contenir les boutons
        For Each Cell In Range("A1:A5")
            'Ajout CommandButton dans la feuille
            Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
            With Obj
                .Left = Cell.Left 'position horizontale
                .Top = Cell.Top 'position verticale
                .Width = Cell.Width 'largeur
                .Height = Cell.Height 'hauteur
                .Object.Caption = Cell.Value
            End With
     
        Next Cell
    End Sub



    Ensuite, on pourrait imaginer qu'à chaque fois que tu ouvres le classeur, un module de classe gère tous les boutons de la feuille.
    Il te restera à indiquer l'action de chaque bouton dans le module de classe comme par exemple déclencher le lien hypertexte contenu dans une cellule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cellule.Hyperlinks(1).Follow NewWindow:=True


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    '--------------------------------------
    'dans un module standard
    Option Explicit
     
    Public Collect As Collection
    '--------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    '--------------------------------------
    'dans un module de classe nommé "Classe1"
    '
    Option Explicit
     
    Public WithEvents CmdGroup As MSForms.CommandButton
     
     
    Private Sub CmdGroup_Click()
        'Exemple qui renvoie le nom du bouton,
        'le nom de la feuille et la position.
        MsgBox CmdGroup.Name & vbCrLf & _
            CmdGroup.Parent.Name & vbCrLf & _
            CmdGroup.TopLeftCell.Address
     
    End Sub
     
    '--------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    '--------------------------------------
    'à placer dans le module objet ThisWorbook pour que la classe
    'soit initialisée lors de l'ouverture du classeur.
     
    Option Explicit
     
    Private Sub Workbook_Open()
        Dim Obj As OLEObject
        Dim Cl As Classe1
        Dim Ws As Worksheet
     
        Set Collect = Nothing
        Set Collect = New Collection
     
        'Boucle sur les feuilles du classeur
        For Each Ws In ThisWorkbook.Worksheets
            'boucle sur les objets de la Feuil1
            For Each Obj In Ws.OLEObjects
                'verifie s'il s'agit d'un CommandButton
                If TypeOf Obj.Object Is MSForms.CommandButton Then
     
                    Set Cl = New Classe1
                    Set Cl.CmdGroup = Obj.Object
                    Collect.Add Cl
                End If
            Next Obj
        Next Ws
    End Sub
    '--------------------------------------



    bonne soirée
    michel

Discussions similaires

  1. JTable : comment insérer un bouton dans une cellule ?
    Par donyas dans le forum Composants
    Réponses: 2
    Dernier message: 08/08/2006, 15h54
  2. [excel] nombre de caractères par cellule
    Par arcane dans le forum Excel
    Réponses: 2
    Dernier message: 25/04/2006, 11h44
  3. Réponses: 2
    Dernier message: 16/02/2006, 22h20
  4. Insérer automatiquement des boutons dans des cellules excel
    Par Oaurelius dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/11/2005, 18h38
  5. Récupérer la couleur d'une cellule excel par Delphi
    Par teamsebracing dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 05/06/2003, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo