Déclaration de variables en VBA

Bonjour,

Je me heurte à un problème concernant la déclaration des variables.

En effet, dans l'exemple suivant : https://www.excel-pratique.com/fr/vba/controles.php chapitre Les boutons d'option (OptionButton), concernant donc le fichier userform3b.xls (joint en PJ), je ne comprends pas d'où viennent les variables bouton_colonne et bouton_ligne auxquelles sont associées des .Caption et des .Value.

Les fonctions ligne() et colonne() y font référence cependant je ne parviens pas à comprendre leur origine et la manière dont elles ont été crées, je saisi bien leur utilité, elles représentent les valeurs sélections à l'aide des boutons, mais comment apparaissent-elles ?

Private Function colonne()
'La fonction renvoie comme valeur le texte du bouton choisi (colonne)
    For Each bouton_colonne In Frame_colonne.Controls
        If bouton_colonne.Value Then
            colonne = bouton_colonne.Caption
        End If
    Next
End Function

Private Function ligne()
'La fonction renvoie comme valeur le texte du bouton choisi (ligne)
    For Each bouton_ligne In Frame_ligne.Controls
        If bouton_ligne.Value Then
            ligne = bouton_ligne.Caption
        End If
    Next
End Function

Je souhaite vraiment comprendre ce fonctionnement car j'ai une macro en attente, dont le principe reprend presque à l'identique ce fonctionnement (choix entre deux séries de variables (choix par boutons-options qui serviront à la recherche dans une liste).

Merci de bien vouloir éclairer ma lanterne.

Cordialement

crissc

18userform3b.zip (12.87 Ko)

Bonjour,

d'après ce que je comprends, il s'agit d'une définition implicite, puisque je ne trouve pas d'instruction DIM correspondant à ces variables.

donc ces variables sont définies automatiquement et implicitement comme type "variant" dès le moment où tu les utilises.

bouton_ligne et bouton_colonne auraient pu s'appeler bl et bc.

Dans ce cas de figure.,ces variables permettent d'identifier les objets (ici des objets de type "control") qui font partie de l'objet de type "frame")

Bonjour

Compliqué à expliquer mais simple à comprendre

La macro énumère tous les contrôles dans la frame

Et pour désigner le 1er, le 2ème, le 3éme on utilise une variable (bouton_colonne ou bouton_ligne) afin de savoir à quel contrôle on se réfère

Pour faire une analogie simple (un peu idiote)

Imagines une salle remplie de gens et que tu veux rechercher l'individu avec des cheveux noirs

Tu marquerais

Pour chaque personne dans la salle

For Each bouton_colonne In Frame_colonne.Controls

Si la personne à les cheveux noirs

If bouton_colonne.Value Then

identité = personne avec les cheveux noirs

colonne = bouton_colonne.Caption

Je ne sais pas si tu comprendras cette explication

Merci h2so4 et Banzai64,

Sur le principe, j'avais en effet compris le principe, mais lorsque j'essaye de reproduire ce schéma adapté à mes besoins (les modifications ne sont pas énormes), je n'y parviens pas. Les variables en apparence sont "vides".

Je vais essayer de poster une partie qui devrait être fonctionnelle de mon code (mais qui ne fonctionne pas). Je rencontre ce même problème sur deux projets différents.

De retour rapidement avec mon bout de code.

Cdlt

crissc

Voici le fichier avec l'exemple de la macro que je cherche à faire fonctionner, ayantt à priori recopié à l'identique (quoique adapté) le code de la macro modèle, la mienne ne fonctionne pas. J'ai vraiment l'impression que les variables ne prennent aucune valeur, voire n'existent pas.

J'espère que des yeux neufs trouveront ce qui ne va pas !

Merci par avance.

Cordialement

crissc

19test-boutons.xlsm (21.77 Ko)

Bonsoir

Je t'ai marqué quelques commentaires dans le code

Merci Banzai64,

Je n'avais pas compris le fonctionnement réel d'une fonction, qui en fait "devient/est" une variable.

Merci pour ton aide.

Crissc

Rechercher des sujets similaires à "declaration variables vba"