Bonjour à tous,
J'ai une userform avec 20 lignes de 4 boutons radio chacune (OptionBouton).
Sur chaque ligne j'ai crée un label et dedans mis les 4 boutons radio de la ligne.
Lorsque je clique sur mon bouton Valider, le code va chercher la feuille qui correspond à la date en allant chercher celle-ci dans une textbox dédiée.
Ca c'est pour planter le décor.
Mon code qui est le suivant fonctionne très bien :
Lorsque je valide, le bouton radio coché d'une ligne renvoie VRAI et ceux non cochés renvoie FAUX.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 'Pour mes boutons radio Private Sub ExporterFormBouton() Dim feuille As Worksheet Set feuille = Worksheets(CStr(NouvelleJournée.Controls("TextBox193"))) Call CopierTextboxDansFeuilleBouton(feuille) End Sub Private Function ChercherDerniereLigneBouton(feuille As Worksheet) As Integer Dim ligne As Integer Dim colonne As Integer Dim trouve As Boolean Dim ligneRemplie As Boolean ligne = 3 'Parcours des lignes jusqu'à trouver la première vide While Not trouve ligneRemplie = False 'Parcours des colonnes pour tester le remplissage même partiel d'une ligne For colonne = 8 To 12 If feuille.Cells(ligne, colonne).Value <> "" Then ligneRemplie = True End If Next If ligneRemplie Then 'La ligne est remplie : il faut continuer la recherche ligne = ligne + 1 Else 'Première ligne vide atteinte trouve = True End If Wend ChercherDerniereLigneBouton = ligne End Function Private Sub CopierTextboxDansFeuilleBouton(feuille As Worksheet) Dim ligneT As Integer Dim colonne As Integer Dim ligneVideF As Integer ligneT = 1 ligneVideF = ChercherDerniereLigneBouton(feuille) For ligneT = 1 To nbLigneOptionButton For colonne = 1 To 4 feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton)) Next ligneT = ligneT Next End Sub
Jusque là ça me va bien.
Le soucis c'est que lorsque je n'ai coché aucun des 4 boutons radio d'une ligne ça me renvoie la valeur FAUX pour tous. Hors, dans ce cas je voudrais que ça ne me renvoie rien pour avois les cellules correspondantes vide.
Je dois donc insérer une fonction If dans la derniere partie du code qui est la suivante :
[/CODE]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub CopierTextboxDansFeuilleBouton(feuille As Worksheet) Dim ligneT As Integer Dim colonne As Integer Dim ligneVideF As Integer ligneT = 1 ligneVideF = ChercherDerniereLigneBouton(feuille) For ligneT = 1 To nbLigneOptionButton For colonne = 1 To 4 feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton)) Next ligneT = ligneT Next End Sub
J'ai donc essayé cela en insérant un For avant le If (ligne 10 dans le code qui suit) mais j'ai un message qui me dit qu'il y a un Next sans For
Et si je met le For après le If, j'ai une variable non définie en ligne 11, c'est à dire sur le If.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Private Sub CopierTextboxDansFeuilleBouton(feuille As Worksheet) Dim ligneT As Integer Dim colonne As Integer Dim ligneVideF As Integer ligneT = 1 ligneVideF = ChercherDerniereLigneBouton(feuille) For ligneT = 1 To nbLigneOptionButton For colonne = 1 To 4 If NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton)) = "FAUX" Then feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = "" Next ligneT = ligneT Else For colonne = 1 To 4 feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton)) Next ligneT = ligneT End If Next End Sub
Un cerveau surpuissant saurait-il me dire ce que je loupe, re loupe et re re loupe paske là je tourne en rond ? -))
Merci par avance à ceux qui se pencheront sur mon soucis.
Laurent
Partager