none
Problème syntaxe RRS feed

  • Question

  • Bonjour

    J'ai un programme à créer sur VBA et l'on m'a conseiller d'utilisé ceci " set ctrl = Me.Controls("a_cb_"&i) ".

    Je crois que cela sert à donner à une variable une valeur correspondant à une collection d'objet "a_cb_" correspondant à une série de CommandButton (a_cb_1, a_cb_2, a_cb_3,etc jusqu'à 16). Mais je n'en suis pas sûr. Si c'est le cas à quoi cela sert il ? Sinon à quoi correspond cette syntaxe ?

    Merci d'avance :)

    lundi 29 décembre 2014 18:06

Toutes les réponses

  • Bonsoir, 

    sorti du contexte, il est difficile de vous aider.

    Pourriez-vous préciser ce que vous tenter de faire et/ou fournir un peu plus de votre code ?


    Nimzozo, from France.

    lundi 29 décembre 2014 18:35
  • Bonsoir,

    Il s'agit de créer un memorie sur VBA c'est un memorie de 16 cases/cartes. 

    Les règles sont les suivantes : 

    Les 16 cartes sont répartie en un carré de 8 sur 8, en début de partie elles se voient attribuer une couleur aléatoirement, il y a 8 paire de cartes de couleurs différentes. 

    Les joueurs entre leurs noms puis ils appuient sur le bouton lancer la partie : le joueur n°1 retourne une carte puis une deuxième si elles sont identique il gagne un point et rejoue sinon c'est au joueur n°2 de jouer. 

    Il y a un bouton rejouer qui re-répartie les couleurs des cases aléatoirement.

    J'ai déjà réussis à faire en sorte que les couleurs se répartissent aléatoirement lorsque l'on clique sur lancer la partie puis sur rejouer (le bouton lancer la partie se transforme en bouton rejouer)*. J'ai aussi réussis à faire ce "retourner" les cases (qui sont en fait des bouton dont le backcolor change de couleur lorsque l'on clique dessus)**. 

    *

    Private Sub a_cb_lancer_partie_Click()
    Range("A1:D8").Calculate

    'A1:D8 correspond à une plage de cellule sur laquelle j'effectue un tirage aléatoire.

    a_cb_1.BackColor = 16777215
    a_cb_2.BackColor = 16777215
    a_cb_3.BackColor = 16777215
    a_cb_4.BackColor = 16777215
    a_cb_5.BackColor = 16777215
    a_cb_6.BackColor = 16777215
    a_cb_7.BackColor = 16777215
    a_cb_8.BackColor = 16777215
    a_cb_9.BackColor = 16777215
    a_cb_10.BackColor = 16777215
    a_cb_11.BackColor = 16777215
    a_cb_12.BackColor = 16777215
    a_cb_13.BackColor = 16777215
    a_cb_14.BackColor = 16777215
    a_cb_15.BackColor = 16777215
    a_cb_16.BackColor = 16777215

    '16777215 est le code couleur qui correspond au blanc

    a_cb_lancer_partie.Caption = "Rejouer"
    a_couleur_1 = Range("B1").Value
    a_couleur_2 = Range("B5").Value
    a_couleur_3 = Range("D1").Value
    a_couleur_4 = Range("D5").Value
    a_couleur_5 = Range("B2").Value
    a_couleur_6 = Range("B6").Value
    a_couleur_7 = Range("D2").Value
    a_couleur_8 = Range("D6").Value
    a_couleur_9 = Range("B3").Value
    a_couleur_10 = Range("B7").Value
    a_couleur_11 = Range("D3").Value
    a_couleur_12 = Range("D7").Value
    a_couleur_13 = Range("B4").Value
    a_couleur_14 = Range("B8").Value
    a_couleur_15 = Range("D4").Value
    a_couleur_16 = Range("D8").Value

    **

    ' La procédure ce répète pour les 16 bouton

    Private Sub a_cb_1_Click()
         If a_couleur_1 = 1 Then
            a_cb_1.BackColor = 32768
                ElseIf a_couleur_1 = 2 Then
                    a_cb_1.BackColor = 8421631
                ElseIf a_couleur_1 = 3 Then
                    a_cb_1.BackColor = 10040115
                ElseIf a_couleur_1 = 4 Then
                    a_cb_1.BackColor = 52377
                ElseIf a_couleur_1 = 5 Then
                    a_cb_1.BackColor = 16764057
                ElseIf a_couleur_1 = 6 Then
                    a_cb_1.BackColor = 52479
                ElseIf a_couleur_1 = 7 Then
                    a_cb_1.BackColor = 26367
            Else: a_cb_1.BackColor = 255
        End If
    End Sub

     

    Maintenant je n'arrive pas à programmer ce qui ce passe quand le joueur retourne 2 cases (soit les laisser afficher lorsque qu'elles ont la même couleur soit les laisser afficher 4 seconde puis le "retourner" lorsqu'elles sont de différentes couleurs). 

    Pour cela mon prof m'a conseiller d'utilisé " set ctrl = Me.Controls("a_cb_"&i) ".

    lundi 29 décembre 2014 19:00
  • Si je comprends bien a_cb_n représente la cellule numérotée n.

    Votre prof vous a donc conseillé d'utiliser Me.Controls("a_cb_" & i) qui pointe sur la cellule i (i variant de 1 à 16).


    Nimzozo, from France.


    • Modifié Nimzozo lundi 29 décembre 2014 19:51
    lundi 29 décembre 2014 19:50
  • Non désolé j'ai eu un peu de mal a m'exprimer :

    Dans a_cb_i correspond aux boutons en fonction de leur numéro i étant le numéro du bouton allant de un à seize je crois.

    lundi 29 décembre 2014 20:59