Renseigner des textbox automatiquement

Bonjour,

le useform est composé d'un multi-page :

page 1 (paramètres généraux) : trois textbox: début / fin / intervalle

page 3 : des champs textbox noté de la forme TB_nbrX ( de 0 a 190)

Quel code puis je utiliser pour que les champs se remplissent automatiquement de la donnée début par intervalle jusquà la fin.

Je vois bien que je dois utiliser une boucle mais mes compétences sont encore trop faibles pour réussir.

Si vus avez la solution, je suis preneur.

Cordialement.

Bonsoir,

ci-joint code

Bonjour et merci pour le code.

Je vois qu'il marche sur toutes les texbox de la page 3 ce qui va créer des conflits par la suite.

Est il possible de préciser que les text box TB_nbrX ( de 0 a 190) sont les seules concernées ?

Cordialement.

Private Sub MultiPage1_Change()
  Dim ctrl As Control
    Dim r As Integer
    Dim i As Integer

    r = 0
    For Each ctrl In Me.MultiPage1.Pages("Page3").Controls
        If Left(ctrl.Name, 6) = "TB_nbr" Then
        i = Right(ctrl.Name, 1)
            If CDec(TB_ntourmin + TB_pasreglage * r) > CDec(TB_ntourmax) Then Exit For
            ctrl.Value = TB_ntourmin + TB_pasreglage * r
            r = r + 1
        End If
    Next ctrl
End Sub

J'ai modifié avec le peu de connaissance le code pour que les chiffres arrivent dans les bons textbox.

ça fonctionne même si je pense que je me suis compliqué la vie mais bon pour le moment c'est le seul truc que j'arrive à faire.

Maintenant j'ai deux nouveaux bugs:

Le premier est que si je clique sur la page 3 et que je reviens sur la page 1 ça plante (c'est normal, j'ai pas rempli le début fin et intervalle). Il vaut mieux mettre un contrôle pour imposer des valeurs dans les trois textbox avant de passer à la page 3 ou annuler l'erreur lorsque je clique d'une page à une autre ?

La deuxième erreur: imaginons que je me suis trompé sur les valeurs début fin intervalle; comment faire pour réinitialiser les valeurs dans le tableau avant recalcul.

Cordialement.

Bonsoir,

Cette version devrait résoudre ton premier bug. Quand au second, il suffit de retourner sur la page "Paramètres" et de changer les valeurs.

Par ailleurs les TextBox 191 à 199, pourquoi ne pas les mettre sur une autre page ?

Le problème est que je ne pouvais pas utiliser le bouton Valider maintenant. je l'ai mis sur l’événement "change multipage 1". Le défaut venait que les valeurs de la première passe restait en mémoire dans les textbox (logique).

J'ai rajouté un rappel de procédure dans mes routines à défaut de connaissances :

Sub initialtext()
 Dim r As Integer
    r = 0
 For r = 0 To 199
A_bibleréglages.MultiPage1.Pages("Page3").Controls("TB_nbr" & r).Value = ""
Next r
End Sub

et en début de procédure je réinitialise par le code

Call initialtext 

désolé pour le défaut des 190, c'est 199 en fait.

Les autres textboxt sont en construction.

Pff c'est vraiment compliqué, A chaque fois que l'on fait un truc, se rajoute un autre truc qui enclenche un truc en conflit avec un autre truc grrrr.

Il existe pas une procédure anti truc ?

Bref mon deuxième défaut est réglé. je vais regarder ta solution pour le premier défaut. je te tiens au jus

Bon et bien merci Thev.

j'ai réadapté ton code avec les environnements du useform. Du coup j'ai un contrôle sur le bouton valider qui dis en gros "Hey toto ta pas oublié quelque chose la dis donc!!!!! va vite me remplir ce champ sinon ça va barder et en passant range ta chambre"

et ton code qui permet de ne pas mettre un bug magistral.

Private Sub MultiPage1_Change()

Call initialtext
  Dim ctrl As Control
    Dim r As Integer
    Dim i As Integer
  For Each ctrl In Me.MultiPage1.Pages("Page1").Controls
        If Left(ctrl.Name, 8) = "TB_ntour" Then
            If ctrl.Value = Empty Then Exit Sub 
        End If
    Next ctrl
    r = 0

    For Each ctrl In Me.MultiPage1.Pages("Page3").Controls
        If Left(ctrl.Name, 6) = "TB_nbr" Then
        i = Right(ctrl.Name, 1)
            If CDec(TB_ntourmin + TB_ntourpas * r) > CDec(TB_ntourmax) Then Exit For
            ctrl.Value = TB_ntourmin + TB_ntourpas * r
            r = r + 1
        End If
    Next ctrl

End Sub

Ce n'est peut être pas très propre mais ça à l'air de fonctionner.

Rechercher des sujets similaires à "renseigner textbox automatiquement"