Liaison Combobox avec un module

Bonjour,

Je souhaite ajouter une combobox pour définir la valeur de P.

Actuellement P est la valeur inscrite dans le cellule Cells(77, 2)

j'ai créer le combobox mais je n'ai pas su comment le lier avec le module.

Je pourrais renseigner la valeur du combobox dans une cellule puis tirer cette valeur depuis la cellule vers le module mais ça serait pas professionnel

Code du module:

Sub gg()
Dim C(1 To 12)
R = 2
S = 31

Do While R < 6
Z = 79
For x = S To S + 4
y = 2

C(1) = Cells(x, y)
C(2) = Cells(x, y) + Cells(x, y + 1)
C(3) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2)
C(4) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3)
C(5) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4)
C(6) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4) + Cells(x, y + 5)
C(7) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4) + Cells(x, y + 5) + Cells(x, y + 6)
C(8) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4) + Cells(x, y + 5) + Cells(x, y + 6) + Cells(x, y + 7)
C(9) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4) + Cells(x, y + 5) + Cells(x, y + 6) + Cells(x, y + 7) + Cells(x, y + 8)
C(10) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4) + Cells(x, y + 5) + Cells(x, y + 6) + Cells(x, y + 7) + Cells(x, y + 8) + Cells(x, y + 9)
C(11) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4) + Cells(x, y + 5) + Cells(x, y + 6) + Cells(x, y + 7) + Cells(x, y + 8) + Cells(x, y + 9) + Cells(x, y + 10)
C(12) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2) + Cells(x, y + 3) + Cells(x, y + 4) + Cells(x, y + 5) + Cells(x, y + 6) + Cells(x, y + 7) + Cells(x, y + 8) + Cells(x, y + 9) + Cells(x, y + 10) + Cells(x, y + 11)

P = Cells(77, 2)
Cells(Z, R) = C(P)
Z = Z + 1
Next
R = R + 1
S = S + 9
Loop
 

Code du Combobox

Private Sub CommandButton1_Click()
Cells(77, 2) = ComboBox1.Value
End Sub

Private Sub UserForm_Initialize()
  ComboBox1.AddItem "1"
  ComboBox1.AddItem "2"
  ComboBox1.AddItem "3"
  ComboBox1.AddItem "4"
  ComboBox1.AddItem "5"
End Sub

Bonjour,

Je tente une réponse car sans fichier et avec une vue parcellaire du code, plus difficile de répondre correctement ...

Si tu places l'instruction UserForm.Show juste avant P = Cells(77, 2) tu récupèreras la valeur. Si tu n'est pas obligé de stocker la valeur tu pourrais aussi faire directement P = UserForm.ComboBox1.Value , par contre il ne faut pas que tu aies une instruction UnLoad UserForm dans le module associé à UserForm (si c'est le cas, déplaces là après l'affectation de la valeur du ComboBox1 à P.

Sinon, je me trompe peut-être mais

C(1) = Cells(x, y)
C(2) = Cells(x, y) + Cells(x, y + 1)
C(3) = Cells(x, y) + Cells(x, y + 1) + Cells(x, y + 2)
' etc.

' cela donne le même résultat que
C(1) = Cells(x, y)
For nI = 2 to 12
    C(nI) = C(nI - 1) + nI - 1
Next

Bonjour,

j'ai pas vraiment compris ce que tu voulais faire !

ComboBox1.List=Array(1,2,3,4,5)

@dysorthographie, c'est ce que Cyflo a proposé, il m'a compris

@Cyflo je vois que vous m'avez compris

Pour le Userform ça fonctionne, par contre après avoir choisi la valeur, quand je clique sur le bouton il se passe rien, que ce que je dois faire pour que le bouton redirige le code vers le module après l'insertion de la valeur pour P.

Sinon merci pour l'astuce concernant le cumul

peut-être rajouter Me.Hide après avoir mis à jour la cellule avec la valeur P, voir ci-dessous.

Private Sub CommandButton1_Click()
    Cells(77, 2) = ComboBox1.Value
    Me.Hide
End Sub

mais tu t'avances quand tu dis que je t'ai compris car je rejoins @dysorthographie, je ne comprends pas vraiment ce que tu veux faire d'où mes précautions dans mes réponses. Au niveau optimisation, ce qu'il propose est aussi à retenir

Bonjour a tous

bon j'avance, mais je suis bloqué sur un petit quelque chose, j'ai désigné P comme la valeur du combobox, mais une fois que le code quitte la combobox et retourne au module la valeure de P de vient vide.

je vous joint le fichier pour mieux comprendre ce que je fait.

Bonjour,

La variable P n'existe qu'au niveau des procédures où tu l'utilises, P dans gg() n'est pas le même P que dans le code de CommandButton1_Click().

Soit tu la déclares en public au début du Module2 pour qu'elle soit visible / utilisable dans tous les modules "Public P [as ...], soit tu affectes directement ComboBox1.Value à la cellule Cells(77, 2) dans CommandButton1_Click().

Attention, les objets xxxText (TextBox, ComboBox, ...) comme leur nom l'indique manipule du texte donc quand tu affectes une valeur de ces objets à une cellule, tu affectes du texte même si il a l'apparence d'un autre type (date, numérique, ...). Pour affecter la valeur correctement typée, il faut utiliser une fonction de conversion CDate(), CLng, etc ...

trés bien,

l'option d'affecter la valeur à une cellule me parrait un peu du bricolage, c'est pour ça que la premiére option de décalrer P en public est plus interessante, mais je n'ai pas saisie la synthaxe complétte pour ça, vous m'avait dit

 Public P [as ...]

que ce que je dois mettre à la place des points ?

c'est pour le cas où tu voudrais définir P avec un type précis sinon il est du type par défaut Variant

"Public P" est identique "Public P As Variant" par contre si tu veux déclarer explicitement P d'un certain type, exemple entier long, il faudra déclarer "Public P as Long".

j'ai fait comme tu m'a dit, j'ai déclaré "Public P" dans le début du module mais j'ai un message d'erreur

Attribut incorrect dans une procédure Sub ou Function

à priori non , je t'ai dit au début du module pas au début de la procédure ... donc avant "Sub gg()"

J'ai testé, cela fonctionne bien.

oui ça fonctionne, c'est parce que je l'ai placé aprés Sub, merci beaucoup

Rechercher des sujets similaires à "liaison combobox module"