MultiPage - checkBox- Boucle : Vba
Résolu
lanetmel
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
lanetmel Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
lanetmel Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous
merci à l'avance de prendre le temps de me lire. J'ai beau lire des forums et faire des recherches, j'ai énormément de difficulté à comprendre les boucles.. Je commence à y arriver pour des choses simples mais là, je dois faire une boucle dans un multi page avec checkBox et je ne sais vraiment pas comment m'y prendre.
J'ai un userform servant à creer une feuille excel. (création fiche client) j'ai fait un multi page (4 pages) avec plusieurs checkBox, mon but est que si la checkBox est cochée (exemple dans la page 1 du multipage), dans ma feuille qui sera créer, qu'à partir de la ligne 13, ça mette le caption de ma checkbox dans la colonne G et en même temps si c'est la page 1 du multipage ça écrive "F" dans la colonne E de la même ligne et que ça fasse le tour des 4 pages et de toutes les checkBox
Je joint un fichier si je ne suis pas clair (ce qui est fort possible :) )
merci beaucoup
https://www.cjoint.com/c/HCddWACFuHm
merci à l'avance de prendre le temps de me lire. J'ai beau lire des forums et faire des recherches, j'ai énormément de difficulté à comprendre les boucles.. Je commence à y arriver pour des choses simples mais là, je dois faire une boucle dans un multi page avec checkBox et je ne sais vraiment pas comment m'y prendre.
J'ai un userform servant à creer une feuille excel. (création fiche client) j'ai fait un multi page (4 pages) avec plusieurs checkBox, mon but est que si la checkBox est cochée (exemple dans la page 1 du multipage), dans ma feuille qui sera créer, qu'à partir de la ligne 13, ça mette le caption de ma checkbox dans la colonne G et en même temps si c'est la page 1 du multipage ça écrive "F" dans la colonne E de la même ligne et que ça fasse le tour des 4 pages et de toutes les checkBox
Je joint un fichier si je ne suis pas clair (ce qui est fort possible :) )
merci beaucoup
https://www.cjoint.com/c/HCddWACFuHm
A voir également:
- MultiPage - checkBox- Boucle : Vba
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
2 réponses
Bonjour,
voir ici pour la boucle sur checkbox:
https://forums.commentcamarche.net/forum/affich-35018919-vba-imprimer-sauf-si-les-lignes-sont-masquees#7
Ce qui donne pour ton cas:
je te laisse faire le reste, il suffit de mettre ton action à la place de:
voilà
voir ici pour la boucle sur checkbox:
https://forums.commentcamarche.net/forum/affich-35018919-vba-imprimer-sauf-si-les-lignes-sont-masquees#7
Ce qui donne pour ton cas:
Dim Ctrl As Control Dim Ctrl_2 As Control 'Boucle sur la collection de contrôles For Each Ctrl_2 In Me.Controls If TypeOf Ctrl_2 Is MSForms.MultiPage Then MsgBox Ctrl_2.Name For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.CheckBox Then If Ctrl.Object.Value = True Then MsgBox Ctrl.Caption End If End If Next Ctrl End If Next Ctrl_2
je te laisse faire le reste, il suffit de mettre ton action à la place de:
MsgBox Ctrl.Caption
voilà
il semble pas déceler les mutlipages :(
d'accord avec toi, j'ai essayé cela:
et cela met des F partout, par contre le reste est conforme, la colonne G se remplie correctement!
d'accord avec toi, j'ai essayé cela:
Dim Ctrl As Control Dim Ctrl_2 As Control Dim i As Integer i = 13 'Boucle sur la collection de contrôles For Each Ctrl_2 In Me.Controls If TypeOf Ctrl_2 Is MSForms.MultiPage Then For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.CheckBox Then If Ctrl.Object.Value = True Then If MultiPage1.Pages(0).Name = "Page1" Then Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "F" End If Sheets(TBOX_NOMCLIENT.Value).Range("G" & i) = Ctrl.Caption i = i + 1 End If End If Next Ctrl End If Next Ctrl_2
et cela met des F partout, par contre le reste est conforme, la colonne G se remplie correctement!
Bonjour
merci encore pour ton aide, je suis désolé mais j'ai encore un problème
la boucle ne s'arrête pas et ma colonne E donne toujours le dernier choix soit : T/S
même si ça me donne la bonne donnée dans la colonne G..J'essaie vraiment de trouver mais je ne comprends pas. Cela peut-il être à cause de ou sont placer les next Ctrl?
merci à l'avance
Sub produits()
Dim Ctrl As Control
Dim Ctrl_2 As Control
Dim i As Integer
i = 13
'Boucle sur la collection de contrôles
For Each Ctrl_2 In Me.Controls
If TypeOf Ctrl_2 Is MSForms.MultiPage Then
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Object.Value = True Then
If MultiPage1.Pages(0).Name = "Page1" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "F"
End If
If MultiPage1.Pages(1).Name = "Page2" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "S"
End If
If MultiPage1.Pages(2).Name = "Page3" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "T/F"
End If
If MultiPage1.Pages(3).Name = "Page4" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "T/S"
End If
End If
End If
Sheets(TBOX_NOMCLIENT.Value).Range("G" & i) = Ctrl.Caption
i = i + 1
End If
End If
Next Ctrl
End If
Next Ctrl_2
End Sub
merci encore pour ton aide, je suis désolé mais j'ai encore un problème
la boucle ne s'arrête pas et ma colonne E donne toujours le dernier choix soit : T/S
même si ça me donne la bonne donnée dans la colonne G..J'essaie vraiment de trouver mais je ne comprends pas. Cela peut-il être à cause de ou sont placer les next Ctrl?
merci à l'avance
Sub produits()
Dim Ctrl As Control
Dim Ctrl_2 As Control
Dim i As Integer
i = 13
'Boucle sur la collection de contrôles
For Each Ctrl_2 In Me.Controls
If TypeOf Ctrl_2 Is MSForms.MultiPage Then
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Object.Value = True Then
If MultiPage1.Pages(0).Name = "Page1" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "F"
End If
If MultiPage1.Pages(1).Name = "Page2" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "S"
End If
If MultiPage1.Pages(2).Name = "Page3" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "T/F"
End If
If MultiPage1.Pages(3).Name = "Page4" Then
Sheets(TBOX_NOMCLIENT.Value).Range("E" & i) = "T/S"
End If
End If
End If
Sheets(TBOX_NOMCLIENT.Value).Range("G" & i) = Ctrl.Caption
i = i + 1
End If
End If
Next Ctrl
End If
Next Ctrl_2
End Sub
La boucle sur le multipage ne fonctionne pas. j'ai donc procédé autrement par le numéro des checkbox. Je viens juste de répondre à ce post. Je m'en suis donc servi:
https://forums.commentcamarche.net/forum/affich-35232189-test-fonction-si#5
ce qui donne:
Voilà c'est simple,
Bon Dimanche
@+ Le Pivert
https://forums.commentcamarche.net/forum/affich-35232189-test-fonction-si#5
ce qui donne:
'http://www.commentcamarche.net/forum/affich-35232189-test-fonction-si#p35237257 Dim Ctrl As Control Dim i As Integer Dim numero As Integer i = 13 If TBOX_NOMCLIENT.Text = "" Then Exit Sub 'Boucle sur la collection de contrôles For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.CheckBox Then If Ctrl.Object.Value = True Then numero = Replace(Ctrl.Name, "CheckBox", "") 'numero checkBox seul Select Case numero Case Is < 32 Sheets(TBOX_NOMCLIENT.Text).Range("E" & i) = "F" Case Is < 63 Sheets(TBOX_NOMCLIENT.Text).Range("E" & i) = "C" Case Is < 72 Sheets(TBOX_NOMCLIENT.Text).Range("E" & i) = "TF" Case Is < 85 Sheets(TBOX_NOMCLIENT.Text).Range("E" & i) = "TC" End Select Sheets(TBOX_NOMCLIENT.Text).Range("G" & i) = Ctrl.Caption i = i + 1 End If End If Next Ctrl
Voilà c'est simple,
Bon Dimanche
@+ Le Pivert
merci beaucoup pour ton aide, j'ai vraiment de la difficulté avec les boucles, voici ce que j'essaie qui ne fonctionne pas. Svp sois indulgent, j'essaie ;)
Sub produits()
Dim x, J As Integer
x = 13
Dim Ctrl As Control
Dim Ctrl_2 As Control
'Boucle sur la collection de contrôles
For Each Ctrl_2 In Me.Controls
If TypeOf Ctrl_2 Is MSForms.MultiPage Then
If Ctrl_2.Name = "FRAIS" Then
Cells(x, 1) = "F"
If Ctrl_2.Name = "CONGELÉ" Then
Cells(x, 5).Value = "S"
If Ctrl_2.Name = "TRANSFORMÉ_FRAIS" Then
Cells(x, 5).Value = "T/F"
If Ctrl_2.Name = "TRANSFORMÉ_CONGELÉ" Then
Cells(x, 5).Value = "T/S"
Sheets("transport DSTJ").Cells(J + 1, 1) = Sheets(i).Cells(x, 2)
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Object.Value = True Then
MsgBox Ctrl.Caption
End If
End If
Next Ctrl
End If
End If
End If
End If
End If
Next Ctrl_2
End Sub
il semble pas déceler les mutlipages :(