Problème sur boucle for... next

Résolu/Fermé
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 - 7 janv. 2016 à 10:34
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 7 janv. 2016 à 18:24
Bonjour,

J'ai un réel problème avec un bout de code dans lequel il y a plusieurs boucles imbriquées...

Je souhaite que mon Userform propose à l'utilisateur uniquement des boutons d'options qui récupèrent leur libellé dans une matrice.

L'Userform contient 10 OptionButton qui sont par défaut inactifs et doit en activer autant que de libellés dans la matrice.

Mon code compte d'abord le nombre de libellés dans la matrice, puis va tester les contrôles de l'USerform. Au premier OptionButton trouvé, il va y poser le premier libellé
dans son Caption et l'activer. Puis il passe au second libellé et au second OptionButton... et ainsi de suite.

Écrit comme cela ça semble simple, non ? Ben pas pour moi !
Au mieux je parviens à remplir les Caption, mais avec le dernier libellé de la matrice. Au pire, la macro tourne en boucle...

J'ai essayé de décomposer les actions sur papier... J'ai bougé For/Next ou For Each... rien à faire !

Ça fait un bon moment que moi aussi je tourne en boucle !
Je me doute qu'il s'agit d'un mauvais positionnement dans mon code, ou bien qu'il manque un For Exit quelque part...

Quelqu'un ou quelqu'une pourrait-il regarde cela et me donner une piste ?

Ci-dessous mon code. Et, si nécessaire, je peux éventuellement faire passer mon fichier test...

Merci d'avance !

Sub Init_SelFact()
'
Dim Feuille As Worksheet
Dim Matr As Range
Dim Cpt As Long
Dim i As Integer
Dim Ob As Control
Dim c As String
Dim NoCol As Integer
Dim NoLig As Long
'
Set Feuille = Sheets("Param") ' Set de la feuille de travail
Set Matr = Sheets("Param").Range("Matr_ET") ' Set de la matrice contenant les données
Cpt = Application.CountA(Matr) / 2 ' Détermine le nombre d'itérations (égal au nombre de données dans la matrice, celle-ci ayant 2 colonnes il faut diviser par 2)
NoCol = 10 ' Numéro de la colonne sur laquelle récupérer les libellés, soit la deuxième colonne de la matrice
'
Load Sél_Fact ' Charge l'Userform ''Sel_Fact'' en mémoire
'
' Initialisation des boutons options
'
For i = 1 To Cpt
'
For NoLig = 2 To Cpt + 1
MsgBox Feuille.Cells(NoLig, NoCol) ' Un test pour savoir quel est le libellé récupéré...
'
For Each Ob In Sél_Fact.Controls ' Balayage des contrôles de l'Userform
If TypeOf Ob Is MSForms.OptionButton Then ' Si le contrôle actif est du type ''OptionButton''...
c = Mid(Ob.Name, 1, 6) ' Récupère les 6 premiers caractères du name du contrôle
With Sél_Fact(c & "0" & i) ' Incrémente le name du contrôle avec la valeur de i
.Caption = Feuille.Cells(NoLig, NoCol) ' Pose dans le catpion du contrôle actif le libellé en cours dans la matrice
.Enabled = True ' Rend le contrôle actif
End With
End If
Next
'
Next
'
Next
'
Sél_Fact.Show ' Active l'USerform
'
End Sub


A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
7 janv. 2016 à 11:48
Bonjour,

je peux éventuellement faire passer mon fichier test... Ah que oui

Pour transmettre un fichier,
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 13
7 janv. 2016 à 12:36
Bonjour !

Voilà qui est fait ! Merci...

https://www.cjoint.com/c/FAhlI0THdXb
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017
7 janv. 2016 à 13:21
Re,

Vu de ma fenetre, y a quand meme plus simple. Une listbox avec bouton d'options et le remplissage fait avec un code dans l'UF

Quel est le rapport entre le texte des boutons d'option et le message exemple:
le mois selectionne est : bouton option n°2 ???????????????????????
0
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 13 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
7 janv. 2016 à 13:51
Re itou... :)

J'imagine bien qu'il y a(vait) plus simple. Suis pas un spécialiste du VBA, je fais donc selon mes compétences...

Pour ta question, c'est un reste d'un test que j'ai utilisé précédemment. Ça n'a pas d'intérêt en fait.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017
7 janv. 2016 à 13:53
Re,

Je vous fait un exemple ou pas ?????
0
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 13 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
7 janv. 2016 à 14:35
Oups.. oui, oui pardon !
Et encore merci !
0