Boucle plusieurs textbox

Dennnisss

XLDnaute Occasionnel
Bonsoir a tous

J'ai un userform et il doit repeter plusieurs fois des textbox et labels
J,ai coder ce user et bien entendu il ne transfere pas ces donnees sur la feuille
il efface au lieu de copier

mon code est le suivant mais je vous envoie un petit test en meme temps
pour mieux me comprendre


alors merci de votre et elle tres apprecier
denis:):)

Private Sub CommandButton1_Click()
Dim I As Integer, J As Integer, K As Integer
'--------- Les Textbox-----------------
With Feuil3

For I = 10 To 25 ' J'utilise cellule B10 a P25
For J = 1 To 165 Step 11 ' il y a 11 textbox par rangee et 15 rangee dans userform
For K = 1 To 60 Step 4 ' il y a 4 label par rangee et bien entendu 15 rangee dans le userform

.Range("B" & I) = Me.Controls("TextBox" & J)
.Range("C" & I) = Me.Controls("TextBox" & J + 1)
.Range("D" & I) = Me.Controls("TextBox" & J + 1)
.Range("E" & I) = Me.Controls("Label" & K)
.Range("F" & I) = Me.Controls("TextBox" & J + 1)
.Range("G" & I) = Me.Controls("TextBox" & J + 1)
.Range("H" & I) = Me.Controls("TextBox" & J + 1)
.Range("I" & I) = Me.Controls("TextBox" & J + 1)
.Range("J" & I) = Me.Controls("Label" & K + 1)
.Range("K" & I) = Me.Controls("TextBox" & J + 1)
.Range("L" & I) = Me.Controls("TextBox" & J + 1)
.Range("M" & I) = Me.Controls("TextBox" & J + 1)
.Range("N" & I) = Me.Controls("TextBox" & J + 1)
.Range("O" & I) = Me.Controls("Label" & K + 1)
.Range("P" & I) = Me.Controls("Label" & K + 1)

Next K
Next J
Next I
end with
end sub
 

Pièces jointes

  • boucle textbox.zip
    18.9 KB · Affichages: 89

PMO2

XLDnaute Accro
Re : Boucle plusieurs textbox

Bonjour,

Un piste avec l'exemple de code ci-dessous.

Code à copier dans la fenêtre de code du UserForm (Ronde)
Code:
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub UserForm_Activate() '### Flag pour faciliter le développement. Rétablir par la suite ###
'Dim hWnd As Long, exLong As Long
'hWnd = FindWindowA(vbNullString, Me.Caption)
'exLong = GetWindowLongA(hWnd, -16)
'If exLong And &H880000 Then
'SetWindowLongA hWnd, -16, exLong And &HFF77FFFF
'Me.Hide: Me.Show
'End If
End Sub

Private Sub CommandButton1_Click()
Dim C As Control
For Each C In Ronde.Controls
  If TypeName(C) <> "CommandButton" Then
    If C.Tag <> "" Then
      If TypeName(C) = "Label" Then
        Sheets("Feuil3").Range(C.Tag) = C.Object.Caption
      ElseIf TypeName(C) = "CheckBox" Then
        Sheets("Feuil3").Range(C.Tag) = Abs(CInt(C.Object.Value))
      Else
        Sheets("Feuil3").Range(C.Tag) = C.Object.Value
      End If
    End If
  End If
Next C
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim C As Control
For Each C In Ronde.Controls
  If TypeName(C) <> "CommandButton" Then
    If C.Tag <> "" Then
      If TypeName(C) = "Label" Then
        C.Object.Caption = Sheets("Feuil3").Range(C.Tag)
      Else
        C.Object.Value = Sheets("Feuil3").Range(C.Tag)
      End If
    End If
  End If
Next C
End Sub

Code à copier dans un module standard
Code:
Sub VerifierLesTags()
Dim C As Control
Dim couleur&
Ronde.Show
For Each C In Ronde.Controls
  If TypeName(C) <> "CommandButton" Then
    couleur& = C.Object.BackColor
    C.Object.BackColor = RGB(0, 255, 0)
    Debug.Print C.Name & vbTab & "Range " & C.Tag
Stop
    C.Object.BackColor = couleur&
  End If
Next C
End Sub

L'idée est d'exploiter la propriété Tag de chaque contrôle (hormis les CommandButton qui sont statiques).
Dans la propriété Tag on inscrit l'adresse de la cellule Excel à laquelle se rapporte le contrôle (ex : B10).
Comme vous avez de nombreux contrôles dans votre UserForm cela semble fastidieux mais, par la suite, quel confort !
Pour faciliter la manœuvre j'ai quoté momentanément le contenu de Private Sub UserForm_Activate
(il suffira de retirer les quotes à la fin du développement) et j'ai fabriqué la routine VerifierLesTags.
Cette routine permet de visualiser chaque contrôle et d'afficher sa propriété Tag dans la fenêtre d'exécution (on l'obtient par Ctrl + G).

D'autre part, j'ai mis des formules dans la feuille Excel pour les cellules qui correspondent aux contrôles Label.
A vous de rectifier selon votre vouloir.

Cordialement.

PMO
Patrick Morange
 

Dennnisss

XLDnaute Occasionnel
Re : Boucle plusieurs textbox

Salut PMO2


Je viens juste de prendre note de ton code , je l'ai integrer dans mon programme reel , pour l'instant il me donne une erreur , mais je te revient la dessus , la je viens juste de terminer mon quart de travail , je travail de nuit et j'ai hate d'aller me coucher , mais soit sur que je communique avec toi le plus vite possible , car ton code j'apprecie et on apportera les correctifs
alors passe une belle journee je te reviens
et je^prendre des explication en meme temps


dennnisss;);)
 

Dennnisss

XLDnaute Occasionnel
Re : Boucle plusieurs textbox

Salut PMO2

Je travaille presentement sur le code que tu m'a creer , je cherche maintenant a comprendre ou faire la correction pour qu'il reconnaisse plus de ligne , il travaille tres bien sur les deux premiere ligne aussitot que j'inscrit sur la troisieme , que j'inscrire un autre nom et prenom alors il ne tiens pas conte de mon ajout , je lit et relie tes notes qui on accompagne le code et je ne reussi pas a trouver ou identifier plus de ligne car dans le userform que je monte il a en tous 15 ligne qui sont bien identifier sur ton programme test

alors j'aurais besoin de ton aide svp ou un autre acros qui peut prendre la releve

dennniss ;);)
 

PMO2

XLDnaute Accro
Re : Boucle plusieurs textbox

Bonjour,

Allez dans le VBE et faites
1) Ctrl + R pour afficher la fenêtre Projet - VBAProject (si elle n'est pas déjà visible)
2) double clic sur le UserForm Ronde pour l'afficher en mode création
3) F4 pour afficher la fenêtre de Propriétés
4) clic sur le 1er contrôle qui doit être TextBox1
5) dans la fenêtre de Propriétés cherchez la propriété Tag dont la valeur doit être B10 (pour TextBox1)

J'ai renseigné la propriété Tag des 2 premières lignes de contrôles du UserForm
si bien que la 3ème ligne et les suivantes ne le sont pas. Vous pouvez le vérifier. Je vous laisse le soin de renseigner ces lignes. Vous pouvez vous aider de la feuille "Adresse des cellules" présente dans le classeur que j'ai précédemment envoyé.

J'espère être compréhensible.

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Réponses
11
Affichages
321

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2