Pb position bouton

Résolu
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 18 mars 2008 à 10:05
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008 - 18 mars 2008 à 12:15
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2008 à 11:16
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2008 à 10:38
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
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
18 mars 2008 à 11:05
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
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
18 mars 2008 à 11:39
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 mars 2008 à 11:40
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
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
18 mars 2008 à 11:42
si tu crois que j'ai aps essayé tu te trompes !! mais on est aps tous doué ! dsl
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2008 à 11:49
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
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
18 mars 2008 à 11:53
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 !
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2008 à 12:03
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
0
audreyOM Messages postés 35 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 7 avril 2008
18 mars 2008 à 12:15
oui au moins un point positif !

bonne journée !

@+

et encore merci
0
Rejoignez-nous