Pb position bouton

[Résolu]
Signaler
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008
-
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008
-
bonjour,

j'ai un petit soucis que je n'arrive pas à résoudre et sur lequel je me suis penchée cette nuit sans résultats ! c'est pourquoi j'ai besoin de votre aide pour ne pas perdre la tête lol

voila mon pb:
je génére dynamiquement des boutons à partir d'un bouton qui va parcourir un tableau excel qui contient des données. chaque données correspond à des caractériqtiques du bouton et en fonction d'elles le bouton est généré de telle ou telle couleur.
mon souci est que j'aimerai que les bouton générés se place de la même facon que le contenu du tableau. c'est à dire que pour la L1 les boutons associés à cette ligne seront alignés sur le userform sur une ligne 1 .
mon problème et que je ne vois aps du tout comment coder cette histoire.

si quelqu'un peut m'éclairer se sera avec grand plaisir et soulagement surtout.

merci

10 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
a adapter...

Dim Bouton As CommandButton
Const EspaceX = 5 '# Espace horizontal entre deux boutons
Const EspaceY = 5 '# Espace vertical entre deux boutons
Const BaseX = 20 '# Coordonnée X du bouton en haut a gauche
Const BaseY = 20 '# Coordonnée Y du bouton en haut a gauche
   Set Auto = New Classe2
   For lig = 1 To 2
       For col = 1 To 5
           Set Bouton = AutoBe.Controls.Add("Forms.CommandButton.1", "Bouton" & lig & col, True)
           With Bouton
               .Left = (40 + EspaceX) * (lig - 1) + BaseX
               .Top = (40 + EspaceY) * (col - 1) + BaseY
               .Height = 40
               .Width = 40
                 
               Select Case Cells(lig, col).Value
                   Case "base"
                       .BackColor = RGB(0, 255, 255)
                   Case "optionnel"
                       .BackColor = RGB(255, 0, 255)
                   Case "perso"
                       .BackColor = RGB(255, 255, 0)
               End Select
           End With
           Auto.Add Bouton
       Next col
   Next lig, ----
By Renfield

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
rien de bien complexe...

quel est le code de cette boucle qui te génère tes boutons ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

salut,
merci pour ta réponse si rapide !

ma boucle est comme ca :  lig étant mes ligne du tab excel avec mes trois cas possible (du contenu des cellules tableau) : base, optionnel, perso

Dim Bouton As CommandButton
Set Auto = New Classe2 'collection de bouton AutoBe



For lig = 1 To 2
   For col = 1 To 5
    If Cells(lig, col).Value = "base" Then
           deport = deport + 20 * deportinit
           Set Bouton = AutoBe.Controls.Add("Forms.CommandButton.1", "Bouton" & lig & col, True)
           MsgBox ("colbase" & col)
           MsgBox ("ligbase" & lig)
           MsgBox Bouton.Name
           With Bouton
                 .Left = deportinit + deport
                 .Top = 10
                 .BackColor = RGB(0, 255, 255)
                 .Height = 40
                 .width = 40
           End With
          Auto.Add Bouton, col
    End If
            
    If Cells(lig, col).Value = "optionnel" Then
           deport = deport + 20 * deportinit
           Set Bouton = AutoBe.Controls.Add("Forms.CommandButton.1", "Bouton" & lig & col, True)
           MsgBox ("coloptio" & col)
           MsgBox ("ligoptio" & lig)
           With Bouton
                 .Left = deportinit + deport
                 .Top = 20
                 .BackColor = RGB(255, 0, 255)
                 .Height = 40
                 .width = 40
           End With
         Auto.Add Bouton, col
    End If
            
    If Cells(lig, col).Value = "perso" Then
           Set Bouton = AutoBe.Controls.Add("Forms.CommandButton.1", "Bouton" & lig & col, True)
           MsgBox ("colperso" & col)
           MsgBox ("ligperso" & lig)
           With Bouton
                .Left = deportinit + deport
                .Top = 45
                 .BackColor = RGB(255, 255, 0)
                 .Height = 40
                 .width = 40
           End With
           Auto.Add Bouton, col
    End If
   
   Next col
Next lig
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

effectivement le code me semble moins long et moins complexe! j'ai aps pensais au case !
quel soulagement tu peux pas savoir !!!!!!

je te remercie énormément pour ton aide, grâce à toi je passer à la résolution de mes autres problèmes lol !

comme quoi l'apprentissage d'un langage se fait petit à petit !!

je te remercie de tout coeur pour ta grande aide !!

PS: pour que mes boutons s'alignent à l'horizontale plustot qu'à la verticale faut changer au niveau du left ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

>[auteur/AUDREYOM/1312921.aspx audreyOM] : le mieux reste encore d'essayer par toi même non?
Si problème résolu  Pensez: Réponse acceptée
@+: Ju£i?n
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

si tu crois que j'ai aps essayé tu te trompes !! mais on est aps tous doué ! dsl
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
j'ai pas compris la question:

"pour que mes boutons s'alignent à l'horizontale plustot qu'à la verticale faut changer au niveau du left ?"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

c'est bon j'ai trouvé en fait avec le code que tu m'as donné les bouton étaient à la verticale. et en changeant dans le left lig par col et le top l'inverse ca me met bien les boutons comme je souhaite.

encore merci pour tout, et ta gentillesse !

t'as mis peu de temps à résoudre mon pb alors que moi j'y suis depuis hier sans résultats lol ! j'ai encore du chemin à faire !!

un grand merci à TOI !!!

cordialement,
audrey !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
exact, j'avais inversé,

.Left = ( 40 + EspaceX) * (lig - 1) + BaseX
.Top = (40 + EspaceY) * (col - 1) + BaseY

au lieu de

.Left = ( 40 + EspaceX) * ( col - 1) + BaseX
.Top = (40 + EspaceY) * (lig - 1) + BaseY

inattention, quand tu nous tiens...
enfin, t'as trouvé seule, c'est un point positif

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

oui au moins un point positif !

bonne journée !

@+

et encore merci