Position bouton

Résolu
Bonjour,

j'ai encore des soucis avec mes boutons :

mes boutons sont générés automatiquement à partir d'un bouton qui va parcourir un fichier excel dans lequel se trouve un tableau. ce tableau à un certains nombres de cases remplies avec des caractéristiques. suivant ces caractéristiques le bouton est de vouleur différente = ca c'est fait.

mon pb est que j'aimerai qu'en fonction de la ligne du tableau les boutons se place sur le userform en fonction de ce tableau.
c'est à dire si L1 posséde 4 boutons avec des caractéristiques différentes mais étant sur la L1 les mettrent sur la même rangée du userform.

pour l'instant je fais un truc qui me les mets tous les uns à la suite des autres et je ne sais pas comment faire pour changer celà.

est ce quelqu'un pourrait m'éclairer sur ce point ??

merci
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. Re,

    If faut calculer leur postion à chaque création
    Admettons que tu veuilles placer 10 boutons et qu'une rangée ne puisse contenir plus de 3 boutons

    dh=20 ' décalage initial par rapport au bord gauche
    dv=20 ' décalage initial par rapport au haut de feuille
    ih=60 ' intervalle horizontal entre les points d'insertion de 2 boutons sur la meme rangée
    iv=30 ' intervalle vertical entre les points d'insertion de 2 boutons sur la meme colonne
    maxb=3 ' nbre maxi de boutons par rangées
    nb=10 ' nbre de boutons à placer

    ib=1 'indice bouton
    ir=0 'compteur de rangée
    'ic compteur de colonnes

    do
    for ic=0 to maxb-1
    if ib>nb then exit for
    left = dh+(ic*ih)
    top = dv+(ir*dv)
    'definir le bouton
    '
    '
    ib=ib+1
    next
    ir=ir+1
    loop until ib>nb

    Sauf erreur, cette procedure crée 3 rangées de trois boutons + i rangée de 1 bouton.

    Salut.
    1. merci ,

      je vais essayer d ele mettre dans mon code , je te tiens au courant si j'ai un problème.

      merci @+
    2. @niny@en fiat j'avais fait un truc comme ca, mais mon pb vient de mes cas différents, ca m'embrouille !
      dsl te t'embeter autant, e n plus c'est pas la première fois que j'ai besoin de tes connaissances.

      je ne sais pas ou mettre els boucles dans mon code :

      Dim deport As Integer
      Dim inter As Integer
      deportinit = 4

      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

      j'ai bien mais différents cas possible, mais le fait que ceux ci peuvent se trouver à n'importe quel endroit du tableau je ne vois pas ou mettre la boucle .
    3. @niny@en fait c'est bon du coup ,

      fallait juste faire des case avec un select pour améliorer le code et faire en sorte qu'il n'y est plus de problème avec la position des boutons !

      merci @µ+