boucle for

sabrina64

XLDnaute Occasionnel
Bonjour à tous...et toutes...

une question simple mais à laquelle je ne sai spas répondre

comment peut on traduire

Pour chaque controle et pouri allant de 1 à 20
......blabla.....
ocntrol+1, I+1

bref ca ne marche pas

Code:
 For (Each ctrl In CreerFicheMetier2.Controls) and (i=1to 20)
....
Next ctrl, i

merci
 

Catrice

XLDnaute Barbatruc
Re : boucle for

Bonjour,

C'est quoi i ?

ce que j'ai compris :

For Each ctrl In CreerFicheMetier2.Controls
For i = 1 to 20
'insérer ici mon code
Next i
Next ctrl

ou bien

longeurnom=10 'Nb de caracteres du control sans l'index exemple :OptionButton => 12
For Each ctrl In CreerFicheMetier2.Controls
If Right(ctrl.name,len(ctrl.name)-longeurnom) > 1 or right(ctrl.name,len(ctrl.name)-longeurnom) < 20 then
'insérer ici mon code
End If
Next ctrl
 
Dernière édition:

sabrina64

XLDnaute Occasionnel
Re : boucle for

bonjour....
merci d avori regardé...
c ce que je viens de faire mais ca ne me marche pas...

Code:
Private Sub suivant_Click()
For i = 1 To n
   For Each ctrl In CreerFicheMetier2.Controls
        If TypeName(ctrl) = "TextBox" Then

         If ctrl.Tag = i And ctrl.Text = "" Then

             ctrl.Text = ActiveSheet.Cells(i + 6, 1).Value
           
            

            MsgBox "Vous devez obligatoirement remplir" & vbCr & "le champ <" & ctrl.ControlTipText & "> ", vbInformation


         End If

      End If

   Next ctrl

 Next i

End Sub
 

Chloulou

XLDnaute Occasionnel
Re : boucle for

Si tu a gardé tes controles avec les noms d'origne, du style TextBox1 , ComboBox1, tu pourra boucler sur les varaible Combobox & "i" par exemple, d'après ce que j'ai pu voir sur certains posts

Sinon j'avais codé (cf code ci dessous) pour réinitialiser à 0 les controles groupe d'option ("Frame1") d'un USF :
Code:
Sub RAZ()
For Each Ctrl In Frame1.Controls
    
    If TypeOf Ctrl Is MSForms.TextBox Then
        Ctrl.Object.Value = ""
        
    ElseIf TypeOf Ctrl Is MSForms.ComboBox Then
        Ctrl.Object.Value = ""
    ElseIf TypeOf Ctrl Is MSForms.ListBox Then


        Ctrl.Object.Value = ""
    ElseIf TypeOf Ctrl Is MSForms.CheckBox Then
        Ctrl.Object.Value = False
    ElseIf TypeOf Ctrl Is MSForms.OptionButton Then
        Ctrl.Object.Value = False
    End If
    
Next Ctrl

End Sub
Après, libre à toi de rajouter une boucle imbriquée pour incrémenter ton compteur "i"

Normalement tu peux adapter ca pour tes besoins, ce qu'il manquait dans ton code ce sont les TypeOf et les additifs .MSForms
PS: j'avais galéré pour trouver ca à l'époque
 
Dernière édition:

Chloulou

XLDnaute Occasionnel
Re : boucle for

le typeof, c'est pour définir le type de controle, un controle peut etre une textBox, Combobox..

Sinon pour incrémenter sur les noms du type " combobo & "i", je me souviens plus trop comment on fait car je n'utilise pas cette méthode, va voir sur les post concernant la RAZ (Remise à zéro) d'un USF
 

sabrina64

XLDnaute Occasionnel
Re : boucle for

Code:
Private Sub suivant_Click()

For i = 1 To n
   For Each ctrl In CreerFicheMetier2.Controls
       If TypeOf ctrl Is MSForms.TextBox Then

                If ctrl.Text = "" Then
                    ctrl.Object.Text = ActiveSheet.Cells(i + 6, 1).Value
                End If


            MsgBox "Vous devez obligatoirement remplir" & vbCr & "le champ <" & ctrl.ControlTipText & "> ", vbInformation
         End If

 
   Next ctrl
 Next i

End Sub

cette procedure fonctionne mais mal...

en fait chaque textbox prend la meme valeur...celle de la derniere cellule de la boucle soit i=n?

voyez vous pourquoi?

merci
 

Chloulou

XLDnaute Occasionnel
Re : boucle for

c'est normal, il ne faut pas que tes boucles soient imbriquées en fait, car a chaque nouvelle itération de i tu remplace la valeur de ta textbox, donc normal qu elles finissent toutes à n...

Il faut un seul for, et tu increment manuellement ton i avec une commande avant le next ctrl du type i=i+1 (n'oublie pas d'initialiser le i avant la boucle)
 

pierrejean

XLDnaute Barbatruc
Re : boucle for

Atester

Code:
Private Sub suivant_Click()

  [COLOR=blue] i=1
[/COLOR]   For Each ctrl In CreerFicheMetier2.Controls
       If TypeOf ctrl Is MSForms.TextBox Then

                If ctrl.Text = "" Then
                    ctrl.Object.Text = ActiveSheet.Cells(i + 6, 1).Value
                 [COLOR=blue]if i=n then exit sub[/COLOR]
[COLOR=blue]                 i=i+1
[/COLOR]                End If


            MsgBox "Vous devez obligatoirement remplir" & vbCr & "le champ <" & ctrl.ControlTipText & "> ", vbInformation
         End If

 
   Next ctrl


End Sub
 

sabrina64

XLDnaute Occasionnel
Re : boucle for

bonjour à tous....
précédemment g bien réussit à avoir accès à mes contrôles...mais là je n y arrive pas avec mes checkbox...

Code:
Private Sub checkbox_Click()
Dim ctrl As Control, ctrl2 As Control
i = 1
For Each ctrl In CreerFicheMetier2.Controls
       If TypeOf ctrl Is MSForms.CheckBox Then
                If ctrl.Value = True Then
                    If TypeOf ctrl2 Is MSForms.TextBox Then
                        ctrl2.Text = "hh"
                    End If
                End If

      End If

Next ctrl
End Sub

ya t il une erreur?

merci d avance...
 

Discussions similaires

Réponses
29
Affichages
1 K
Réponses
4
Affichages
192
  • Résolu(e)
Microsoft 365 Boucle FOR
Réponses
7
Affichages
296

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus