"tapis" de macro

Résolu
Signaler
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour, voilà c'est fais un petit code afin de remplir ma page de CommandButton :

Public i As Integer
Public j As Integer
Public k As Integer


Sub Macro1()


For i = 0 To 5 (i et j pouvant varier jusquà "beaucoup" pour remplir la page excel)
    For j = 0 To 5
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=True _
        , DisplayAsIcon:=False, Left:=0 + 10 * j, Top:=10 * i, Width:=10, Height:=10). _
        Select
    Next j
   
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=True _
        , DisplayAsIcon:=False, Left:=10 * j, Top:=0 + 10 * i, Width:=10, Height:=10). _
        Select
Next i
End Sub

Malheuresement lors de ctte création, les boutons sont gris (de base) et j'aimerais les rendre transparent, à mon avis il faut rajouter quelquechose du genre:

 BackStyle:=0 - fmBackStyleTransparent (c'est ce que j'ai touvé dans les propriété des commandButton) quelque part.

J'ai essayé de le mettre dans


 ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=True _
        , DisplayAsIcon:=False, Left:=10 * j, Top:=0 + 10 * i, Width:=10, Height:=10, BackStyle:=0 - fmBackStyleTransparent ). _
        Select

Mais ca marche pas, quelqu'un aurait t'il une idée.

De plus (pour corser la chose ), j'aimerais que lorsque ce fait la création du bouton un code lui soit assossier : DéfinirCoordonnées "nom du bouton" où DéfinirCoordonnées et un sous prgm dans mon code, pour avoir dans le code de la page un truc du genre :

Private Sub CommandButton1_Click()


DéfinirCoordonnées CommandButton1


End Sub


Private Sub CommandButton2_Click()


DéfinirCoordonnées CommandButton2


End Sub




Private Sub CommandButton3_Click()


DéfinirCoordonnées CommandButton3


End Sub

A chaque fois qu'il créer un CommandButton, il associe DéfinirCoordonnées CommandButtonX (X=1,2,3...)avec le bon X correspondant.

Voilà, en fait j'ai deux question: sur la transparence du bouton et l'aasovciation du code.
Ca fait quelques heures que je "trifouille le code et je suis coincé.......

Je viens de découvrir le bonheur de programmer et le VB me le rend bien

13 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
manipules ton bouton après sa création...

Set Obj = ActiveSheet.OLEObjects.Add(...)
Obj.BackStyle = ...

juste dans l'idée, ce que je te files, pas testé ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut julien,

sous 2003, ça marche nickel :

    Dim Obj As New OLEObject

Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, Left:=50,
Top:=50,
Width:=200,
Height:=40)

Obj.Object.BackColor = vbRed

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Oups autant pour moi.

Je sais pas ce que j'ai fait mais oui ca marche. En revanche il y a truc bizarre.
Il veux placer BackStyle à 0 - fmBackStyleTransparent , mais une fois que tu cliques sur le bouton ajouté, et bien il reprend un BackStyle = 1

Dim Obj As New OLEObject

Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
       , DisplayAsIcon:=False, Left:=50, Top:=50, Width:=200, Height:=40)

Obj.Object.BackStyle = 0, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
l'idée est correcte 

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Bah moi j'ai pas réussi à le testé ainsi...

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Cette propriété ne s'applique pas sur un contrôle positionné sur une feuille, seulement sur un objet container.
Je pense que ça doit être compliquer pour M$ de déterminer le quadrillage des cellules, le texte insérer dedans, tout ça par transparence.
C'est comme tooltiptext, impossible à faire au survol des cellules.

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Mais à l'ajout le bouton est bien transparent pourtant.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Nop, il est pas transparent, il a temporairement le BorderStyle à 0. Sûrement un bug.

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
j'ai dit  Sûrement un bug.

^^  où justement parce qu'il ne sait pas gérer la transparence, il "compense" avec l'autre propriété. Enfin, j'en sais rien en fait

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
Dim Obj As <strike>New</strike>OLEObject



puisque tu fais un Set juste en dessous ^^

enfin, ne change rien au coté non transparent de la chose, ma connaissance de l'environnement ne me permet pas de répondre quoi que ce soit....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Salut,
merci pour va aide je suis enfin arriver à rendre les boutons transparent :
en fait dans ma boucle j'ai rajouter

Selection.Object.BackStyle = 0 - fmBackStyleTransparent
Selection.ShapeRange.Fill.Visible = msoFalse

Merci à tous. Premier problème réglé !

Part contre mon deuxième problème et que j'aimerais copié "automatiquement" dans le code de chaque CommandButton :

DéfinirCoordonnées CommandButtonX (ou X est remplacé automatiquement par le numéro de bouton associé) pour avoir un truc du genre:

Private Sub CommandButton1_Click()
DéfinirCoordonnées CommandButton1

End Sub

En fait j'aimerais faire cela car avec ce"tapis" de boutons, je veux pas copié DéfinirCoordonnées CommandButton des centaines de fois (une fois par commandbutton) tout en changeant le numéro à chaque ( X ) pour que ce soit bien celui du Command Button

Vous semble t-il possible de réaliser un tel "copieur de formule automatique et adaptable au nom deu command button"?

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Renfield,

c'est ce que j'avais fait avant, mais chez moi, sans le New, il m'en crée 2 ??
Celui avec propriété Backcolor au rouge et aux bonnes dimensions, + un au milieu de la feuille de couleur "fond de fenêtre".

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA