Variables dans Excel Macro pour formulaire

Résolu/Fermé
excelman - 19 juin 2011 à 13:44
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 22 juin 2011 à 18:34
Bonjour à toutes et à tous,

Je suis en train de réaliser un petit programme utilisant différentes variables (qui vont directement chercher leurs valeurs). Je les appelle par :

Dim nb (1 to 4) as long

nb1 = emplacement 1
nb2 = emplacement 2
nb3 = emplacement 3

ensuite => nb4 = nb1 + nb2 * nb3 (exemple de calcul)

Pas de soucis ... jusque la.

Je voulais ensuite faire un joli formulaire qui se remplit directement avec les résultats trouvés .... ainsi

TextBox3 = nb1
TextBox4 = nb2
TextBox5 = nb3
TextBox6 = nb4

Je voulais essayer de faire une boucle style mais elle beugue ... (les chiffres sont nuls dans la boucle alors qu'ils sont corrects dans le premier cas plus longs) ou est le probleme dans ma logique ...

For i = 1 To 4
Controls("TextBox" & i + 2).Value = Clng(nb (i))
Next i



Par avance merci ami(e) informaticien(ne) ou passionné(e) d'Excel comme moi ....


A voir également:

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 juin 2011 à 15:24
Bonjour,

Voilà un exemple a adapter :
Private Sub CommandButton1_Click()
Dim Ctrl As Variant
Dim j As Integer
Dim TabNb(4) As Long

    TabNb(1) = emplacement_1 
    TabNb(2) = emplacement_2 
    TabNb(3) = emplacement_3 
    TabNb(4) = TabNb(1) + TabNb(2) * TabNb(3)
    
    j = 1
    For Each Ctrl In Array(TextBox3, TextBox4, TextBox5, TextBox6)
        Ctrl.Object.Value = TabNb(j)
        j = j + 1
    Next
End Sub


;o)
1
Merci Polux de ta réponse ... ;-)

Elle fonctionne c'est sur mais je cherchais quelque chose de plus simple.

Le problème concerne la fonction ARRAY ... qui revient à ressaisir les numéros des Textbox (comme dans mon cas précédent). Je pensais qu'il était plus simple de les rappeler en automatique sans saisir tous les numéros.

Merci de votre aide ...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
21 juin 2011 à 20:42
Salut,

Tu peux déclarer un tableau qui s'initialise en ouvrant le formulaire, mais quoiqu'il en soit, il te faudra saisir les éléments qui initialiseront le tableau. Comme ça par exemple :

Option Explicit

Private TabTextBox(1 To 4) As msforms.TextBox

Private Sub UserForm_Initialize()
    Set TabTextBox(1) = UserForm1.TextBox3
    Set TabTextBox(2) = UserForm1.TextBox4
    Set TabTextBox(3) = UserForm1.TextBox5
    Set TabTextBox(4) = UserForm1.TextBox6
End Sub

Private Sub CommandButton1_Click()
Dim Ctrl As Variant
Dim j As Integer
Dim TabNb(4) As Long

    TabNb(1) = emplacement_1 
    TabNb(2) = emplacement_2 
    TabNb(3) = emplacement_3 
    TabNb(4) = TabNb(1) + TabNb(2) * TabNb(3)
    
    j = 1
    For Each Ctrl In TabTextBox()
        Ctrl.Object.Value = TabNb(j)
        j = j + 1
    Next
End Sub
0
Bonjour Polux,

Y a rien a dire tu es trop fort ! Je pensais faire une boucle comme celle que tu viens de me donner dans la deuxième réponse mais il me manquait ton petit grain d'épice qui donne tout l'arôme au plat et qui lui permet d'être bon.

A mon niveau, il restait fade et il bogué mais avec toi ... merveilleux, ça marche et il est très bon !

Je te remercie très sincèrement de tes réponses (même si je préfère la seconde ... je ne suis pas assez costaud pour l'avoir conçu moi même ... bravo ! )

A plus et MERCI Polux
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
22 juin 2011 à 18:34
Salut,

De rien, mais je n'ai rien inventé...

Bonne continuation.
0