comprehension de code

sabrina64

XLDnaute Occasionnel
bonjour
j 'ai trouvé un code permettant de creer autant de textbox que de cellules selectionnées sur un efeuille excel et de remplir ces textbox avce les valeurs des cellules...
or je ne comprends pas les dernieres lignes du code.

de plus mes textbox s inscrivent horizontalement les unes à la suite des autres..
T1 T2 T3.....

et j aimerais qu elles s'inscrivent verticalement :
T1
T2
T3
....

pourriez vous m expliquer?
je travaille avec excel 97

Je vous remercie.
voici le code




Code:
Public Sub ctbox()

Dim i As Integer, j As Integer, x As Integer, y As Integer
Dim TxtB As Control
'
y = 1

For Each cell In Selection
Set TxtB = Me.Controls.Add("forms.Textbox.1")
With TxtB
.Left = x * 36
.Top = 10 + ((y - 1) * 20)
.Width = 30
.Height = 15
.Text = cell.Value & "        "
End With


'c'est c derniers lignes que je ne comprend pas
x = x + 1
If x = tsval Then
x = 0
y = y + 1
End If

Set TxtB = Nothing
Next cell

End Sub

dans l attente d une reponse, bonne journee à tous
 

sabrina64

XLDnaute Occasionnel
Re : comprehension de code

Bonjour chti160,

N'ayant internet qu'au travai, je n aipu voir que vous m aviez répondu à temps
Suite à votre aide la dernière fois , je n arrive plus à associer une action à mes checkbox, alors que vous m'aviez donné un code qui le faisait...

j'aimerais que quand je coche une checkbox i un userform apparait...
cet userform serait un formulaire de saisie qui me rempliriat la textbox i associée

puis en validant j aimerais que l ensemble des valeurs des textbox se recopie dan sune ligne donné de ma feuille excel
et que mes textbox uniquement se réinitialise afin que j entre de nouvelles valeurs...

je vous joins mon fichier.

merci.

bonne journée
 

Pièces jointes

  • classeurdele creation.zip
    41.5 KB · Affichages: 19
  • classeurdele creation.zip
    41.5 KB · Affichages: 15
  • classeurdele creation.zip
    41.5 KB · Affichages: 16

sabrina64

XLDnaute Occasionnel
Re : comprehension de code

Code:
ActiveSheet.Range(Cells(5, 1), Cells(5, 1).Offset(0, (n * 2) - 2)).Select
For Each cell In Selection

je selecionne un ensemble de cellules sur ma feuille excel afin de creer autant de label, textbox et checkbox que de cellules sélectionnées

pour la fonction appelée ce n'esr que de la mise en forme...
 

ChTi160

XLDnaute Barbatruc
Re : comprehension de code

Salut sabrina64
Bonjour le fil
Bonjour le Forum

Arffffffff franchement je n'y comprends rien car je ne sais même pas comment tout cela fonctionne(il faudrait mettre un fichier où ce qui est déjà fonctionnel ,le soit Lol)
tu mets la sélection des cellules qui doivent servir à créer les différents Objets dans la procèdure qui doit les vérifier alors qu'il ne sont pas encore crées ai je compris ????(d'ou ma question à quoi sert la boucle For Each cell In Selection ............Next cell 'elle ne crée rien
Quel rapport entre la Boucle et la recherche des Objets
For Each cell In Selection
et
For Each ctrl In Me.Controls
Code:
Private Sub UserForm_initialize()
MsgBox n
ActiveSheet.Range(Cells(5, 1), Cells(5, 1).Offset(0, (n * 2) - 2)).Select
[COLOR=blue]For Each cell In Selection[/COLOR]
Dim I As Byte
Dim ctrl As Control, ctrl2 As Control
For Each ctrl In Me.Controls
    If TypeName(ctrl) = "CheckBox" Then
       If ctrl = True Then
                  It = ctrl.Tag
         For Each ctrl2 In Me.Controls
             If TypeName(ctrl2) = "TextBox" Then
                If ctrl2.Tag = It Then
                   [COLOR=blue]Userform1.Show 0[/COLOR]  'pour afficher un Userform si le ChectBox est coché je ferai comme cela (on récupe au passage le TextBox [COLOR=blue]Ctrl2[/COLOR] ou sera mis la Saisie)
                End If
             End If
         Next
       End If
    End If
Next
Set ctrl = Nothing
Set ctrl2 = Nothing
[COLOR=blue]Next cell
[/COLOR]Call ctboxfunction(Me)
End Sub
Non testé
Explique nous
Merci D'avance
Bonne Journée
 

sabrina64

XLDnaute Occasionnel
Re : comprehension de code

excusez moi j ai bougé la phrase
ActiveSheet.Range(Cells(5, 1), Cells(5, 1).Offset(0, (n * 2) - 2)).Select

elle se trouve sur valider du formulaire precedent

mon fichier marche ainsi
1.phase identification : mot de passe admin. (permet de creer un nouveau classeur)
2.creation du metier : on entre le nom et les champs, kan on valide, on choisis la couleur de chaque champs et la feuille excel se forme, intitulé des colonne et evntuellement des lignes si interdépendance cochée...
et le formulaire 3 apparait
3.les noms des champs s inscrivent ; et l utilisateur entre une valeur pour chaque champs

jusque la ca marche

par contre, kan je coche mes checkbox rien ne se passe...
 

sabrina64

XLDnaute Occasionnel
Re : comprehension de code

losque mon formulaire se charge ils est initialisé ainsi

Code:
Private Sub UserForm_initialize()
   
Dim I As Integer, j As Integer, x As Integer, y As Integer
Dim Lbl As Control
Dim TxtB1 As Control
Dim chk As Control
'
y = 1

For Each cell In Selection
Set Lbl = Me.Controls.Add("forms.Label.1")
Set TxtB1 = Me.Controls.Add("forms.Textbox.1")
Set chk = Me.Controls.Add("forms.CheckBox.1")

With Lbl
.Left = 10
.Top = (y * 20) + 3
.Width = 70
.Height = 15
.Caption = cell.Value
End With

With chk
.Left = 80
.Top = (y * 20) + 3
.Width = 10
.Height = 10
.Caption = y
.Tag = y
MsgBox .Name
End With

With TxtB1
.Left = 100
.Top = y * 20
.Width = 100
.Height = 15
.Tag = y
End With

y = y + 1
Set Lbl = Nothing
Set TxtB1 = Nothing
Set chk = Nothing
Next cell

End Sub

puis pour dire que lorsqu je coche une case i alors la textbox i se remplit avec "tot" j 'ecris ceci

Code:
Private Sub act()
Dim ctrl As Control, ctrl2 As Control
For Each ctrl In Me.Controls
    If TypeName(ctrl) = "CheckBox" Then
       If ctrl = True Then
          It = ctrl.Tag
         For Each ctrl2 In Me.Controls
             If TypeName(ctrl2) = "TextBox" Then
                If ctrl2.Tag = It Then
                    ctrl2.Text = "tot"
                     'UserForm1.Show
                End If
             End If
         Next
       End If
    End If
Next
Set ctrl = Nothing
Set ctrl2 = Nothing

End Sub

depusi toute la matinée je me perds à essayer , à modifier...mais en vain........
pourriez vous m aiguiller

merci
 

Discussions similaires

Réponses
29
Affichages
966

Statistiques des forums

Discussions
312 336
Messages
2 087 389
Membres
103 534
dernier inscrit
Kalamymustapha