Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 19h34   #1
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Rwanda

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2011
Messages : 14
Points : 4
Points : 4
Par défaut comment code le checkbox

bonsoir,j'ai un problem avec mon userform que j'ai developé en excel,

donc j'ai 5 textbox avec 5 checkboc, un checkbox devant un textbox,
j'ai codé de façon que si je coche le check box,le textbox correspondat soit desactivé.ça accepte,mais le probleme que j'ai ce que si je coche 4 checkbox pour rester avec un seul textbox qui va remplir seulement un seul colone,dans la collone qui doit être rempli les mots se remplecent, donc le mot que j'entre va remplecer le mot precedent alors que je voulais que ça va dans le deuxieme ligne.

voici mes code for the chaque checkbox:

Code :
1
2
3
4
 
Private Sub Check3_Click()
txtTerm.Enabled = (Check3.Value = vbChecked)
End Sub
jeph.net est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 19h39   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir
Et comment tu rapatrie le texte rentrée dans tes TextBox vers ta feuille Excel?
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 08h32   #3
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Rwanda

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2011
Messages : 14
Points : 4
Points : 4
Par défaut remplecemt d'un entré

voici mes codes
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
 
Private Sub Check1_Click()
txtKiny.Enabled = (Check1.Value = vbChecked)
End Sub
Private Sub Check2_Click()
txtTerm1.Enabled = (Check2.Value = vbChecked)
End Sub
 
Private Sub Check3_Click()
txtTerm.Enabled = (Check3.Value = vbChecked)
End Sub
 
Private Sub Check4_Click()
txtFren.Enabled = (Check4.Value = vbChecked)
End Sub
 
Private Sub Check5_Click()
txtEng.Enabled = (Check5.Value = vbChecked)
End Sub
 
Private Sub cmdAdd_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("PartsData")
 
iRow = ws.Cells(Rows.Count, 1) _
  .End(xlUp).Offset(1, 0).Row
 
 
 
 
ws.Cells(iRow, 1).Value = Me.txtKiny.Value
ws.Cells(iRow, 2).Value = Me.txtTerm1.Value
ws.Cells(iRow, 3).Value = Me.txtTerm.Value
ws.Cells(iRow, 4).Value = Me.txtFren.Value
ws.Cells(iRow, 5).Value = Me.txtEng.Value
 
 
 
 
Me.txtKiny.Value = ""
Me.txtTerm1.Value = ""
Me.txtTerm.Value = ""
Me.txtFren.Value = ""
Me.txtEng.Value = ""
End Sub
 
Private Sub cmdClose_Click()
Unload Me
End Sub
 
Private Sub Label1_Click()
 
Private Sub txtTerm_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Right(txtTerm.Text, 3) <> "tse" Then Cancel = True
 End Sub
 
 
Private Sub txtTerm1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 
 If Right(txtTerm1.Text, 2) <> "ga" Then Cancel = True
 End Sub
 
 
Private Sub UserForm_Click()
 
End Sub
je viens de decouvrir que c'est pas un probleme de check box,mais plutot le probleme de codes au niveau de textbox,parce que lorseque je commence à entrer le données à partir du deuxieme checkbox,les données se remplecent dans mon fillform en excel, donc mon sheet excel je peux pas entrer plus d'un seul ligne à partir d'un userform à moins que je commence par le promier checkbox.
jeph.net est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 11h23   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub cmdAdd_Click()
Dim Txt As Variant
Dim iRow As Long
Dim c As Range
Dim i As Byte
 
Txt = Array("Kiny", "Term1", "Term", "Fren", "Eng")
With Worksheets("PartsData")
    Set c = .UsedRange.Find("*", , , , xlByColumns, xlPrevious)
    If Not c Is Nothing Then
        iRow = c.Row + 1
        Set c = Nothing
    Else
        iRow = 1
    End If
 
    For i = 0 To 4
        If Not Me.Controls("Check" & i + 1) Then .Cells(iRow, i + 1).Value = Me.Controls("txt" & Txt(i)).Value
        Me.Controls("txt" & Txt(i)).Value = ""
    Next i
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 12h05   #5
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 695
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 695
Points : 1 447
Points : 1 447
Bonjour,

Une petite explication en complément du code de mercatog.
Avec ton code, avant de copier le contenu des TextBox tu recherches le numéro de la ligne où sera effectué l’ajout.
Code :
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cette recherche n’étant effectuée que dans la colonne 1, l’ajout se fait pour toutes les colonnes sur cette même ligne (iRow).
Si la dernière cellule renseignée de la colonne 1 est positionnée en retrait par rapport aux cellules renseignées des autres colonnes, tu écrases les anciennes données de ces colonnes.
Pour que les nouvelles données soient enregistrées systématiquement sur une nouvelle ligne ( en laissant un blanc si la TextBox correspondant à la cellule n’est pas renseignée), il faut déterminer le numéro de la dernière ligne de la plage utilisée (utilisation de la propriété UsedRange proposée par mercatog).
Remarque : pour que chaque nouvelle donnée soit enregistrée directement à la suite de la précédente, il faudrait que tu recherches la dernière cellule renseignée pour chacune des 5 colonnes.

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h24.


 
 
 
 
Partenaires

Hébergement Web