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 automatiquement des boutons dans des cellules excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 11
    Par défaut Insérer automatiquement des boutons dans des cellules excel
    Bonjour,

    Petite question...
    Je souhaiterais insérer automatiquement des boutons dans des cellules excel.

    Je m'explique. L'utilisateur selectionne plusieurs cellules d'un fichier excel et lance une macro qui disont change la couleur des cellule en rouge. Je souhaiterais pour toutes les cellules selectionnées qu'un bouton soit intégré a la cellule, et lui soit liée (si la taille de la cellule change, le bouton aussi.) Ceci pour que l'utilisateur si il revient sur le fichier et clic sur le bouton qu'un message apparaisse pour lui dire par exemple que la couleur est rouge.
    J'ai pas la moins petite idée de comment faire....... houps

    Si vous avez des idées elles sont bienvenus

    Merci et Bon WE a tous

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci et Bon WE a tous
    Bref, tu veux qu'on bosse pendant que tu pars en weeck-end...

    Déjà, pour la hauteur et la largeur de ta cellule, tu mets ça dans un module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        With ActiveSheet
            LargeurBouton = Columns(5).Width
            GaucheBouton = Columns(5).Left
            HauteurBouton = Rows(8).Height
            SommetBouton = Rows(8).Top
        End With
        MsgBox LargeurBouton & " * " & HauteurBouton & " * " & SommetBouton & " * " & GaucheBouton
        ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
            , DisplayAsIcon:=False, Left:=GaucheBouton, Top:=SommetBouton, Width:=LargeurBouton, Height:=HauteurBouton).Select
    Pour placer tes boutons, tu places leurs dimensions et positions par rapport à chaque cellule concernée (mesurées comme ci-dessus) dans un tableau (LargeurBouton(1....n), HauteurBouton(...) etc.) et tu places le code précédent dans une boucle "For i to nbboutons"

    Ensuite, tu places le code suivant dans le code de la feuille de calcul concernée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
        If Shapes("CommandButton1").Top = ActiveCell.Top And Shapes("CommandButton1").Left Then
            With Selection.Interior
                If .ColorIndex = 3 Then MsgBox "La-dessous, c'est rouge !"
            End With
        End If
    End Sub

    Enfin, les lignes suivantes ne sont là qu'en cas de besoin... pour la syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        For i = 1 To Worksheets("Feuil1").Shapes.Count
            Set Bouton = Worksheets("Feuil1").Shapes(i)
            With Bouton
                Debug.Print .Name
            End With
        Next
    End Sub
    Comme je n'ai pas envie d'y passer le week-end (malgré la pluie qui vient) je te souhaiterai donc bon courage et je passe la main à qui la voudra.

    A+

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut Re: Insérer automatiquement des boutons dans des cellules ex
    Citation Envoyé par Oaurelius
    Bonjour,

    Petite question...
    Je souhaiterais insérer automatiquement des boutons dans des cellules excel.

    Je m'explique. L'utilisateur selectionne plusieurs cellules d'un fichier excel et lance une macro qui disont change la couleur des cellule en rouge. Je souhaiterais pour toutes les cellules selectionnées qu'un bouton soit intégré a la cellule, et lui soit liée (si la taille de la cellule change, le bouton aussi.) Ceci pour que l'utilisateur si il revient sur le fichier et clic sur le bouton qu'un message apparaisse pour lui dire par exemple que la couleur est rouge.
    J'ai pas la moins petite idée de comment faire....... houps

    Si vous avez des idées elles sont bienvenus

    Merci et Bon WE a tous
    eu... tu ve vraiment rajouter un bouton par cellule? , tu peu aussi utiliser une fonction événemetielle
    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
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Dim r As Range
     
      Set r = Intersect(Target, Range("B3:C10")) 'pour limiter l'action en b3..C10 par exemple..
     
      If r Is Nothing Then Exit Sub   'Cas ou pas d'intersection...
      If r.Cells.Count = 1 Then ' 1 Seule cellule
        If r.Interior.Color = vbRed Then ' Si couleur Rouge
           MsgBox "La cellule " & r.Address & " est déjà rouge"
          Else
          r.Interior.Color = vbRed 'Sinon on passe en rouge
        End If
      End If
     
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je suis évidemment de l'avis de Bbil, je n'aurais jamais fait ce que tu cherches à faire, d'autant que tu n'es pas au bout de tes peines car, pour chaque bouton créé, tu devras créer une macro MonBouton(n)_click, chacune d'elle renvoyant à une seule et même macro effectuant le test que je t'ai passé.

    Voici toujours "trois" lignes pour insérer du code dans un module, gracieusement offert par SilkyRoad le 23/10

    Dans une boucle for i = 1 to NbCellules
    NomBouton = "CommandButton"+cstr(i)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        With Doc.VBProject.VBComponents("Feuil1").CodeModule 
             X = .CountOfLines 
             .InsertLines X + 1, "Sub "+ NomBouton + "_Click()"
             .InsertLines X + 2, "If Shapes(NomBouton).Top = ActiveCell.Top And Shapes(NomBouton).Left Then " 
             .InsertLines X + 3, "     With Selection.Interior" 
             .InsertLines X + 4, "          If .ColorIndex = 3 Then MsgBox "La-dessous, c'est rouge !" 
             .InsertLines X + 5, "     End With" 
             .InsertLines X + 6, "End If" 
             .InsertLines X + 7, "End Sub" 
        End With
    Ce coup-ci, je te laisse avec Bbil

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/01/2014, 09h28
  2. Réponses: 8
    Dernier message: 22/08/2011, 16h56
  3. rajouter des zéros dans une cellule excel
    Par generationnex dans le forum Excel
    Réponses: 2
    Dernier message: 16/06/2010, 11h43
  4. Réponses: 3
    Dernier message: 04/04/2007, 14h18
  5. Insertion des boutons et des images dans une JTable
    Par anouar dans le forum Composants
    Réponses: 2
    Dernier message: 17/11/2005, 20h23

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