Richard 58
XLDnaute Nouveau
Bonjour,
J'ai un niveau plus que faible en codage VBA.
J'ai un fichier qui me permet d'inscrire des enfants à des activités pour cette été. Je peux faire la somme des tarifs des différentes activités, bloquer les activités quand elle est pleine, imprimer la liste des participants par activités.
J'ai 104 checkbox pour les activités et 2 autre pour le mode de paiement. Actuellement mon fichier ne fonctionne pas et je ne sais pas pourquoi, j'ai donc besoin de votre aide.
Je met les différentespartie du code ci dessous :
	
	
	
	
	
		
Pour créer le nouvel inscrit :
	
	
	
	
	
		
 Pour le formulaire :
	
	
	
	
	
		
J'ai fait une recherche sur les checkbox avec
	
	
	
	
	
		
Il me dit que la 105 n'existe pas alors qu'elle est bien présente.
Autre problème la textbox21 ne s'affiche pas en case 126
Merci pour votre aide.
	
		
			
		
		
	
				
			J'ai un niveau plus que faible en codage VBA.
J'ai un fichier qui me permet d'inscrire des enfants à des activités pour cette été. Je peux faire la somme des tarifs des différentes activités, bloquer les activités quand elle est pleine, imprimer la liste des participants par activités.
J'ai 104 checkbox pour les activités et 2 autre pour le mode de paiement. Actuellement mon fichier ne fonctionne pas et je ne sais pas pourquoi, j'ai donc besoin de votre aide.
Je met les différentespartie du code ci dessous :
		Code:
	
	
	Private Sub UserForm_Initialize()
  Dim x%, iNb%, sCol$
  Dim I As Integer, M As String
  ' Instancier les évènements des Checkbox
  For I = 1 To 104
    Set Chk(I).Chk = Me("Checkbox" & I)
  Next I
ComboBox1.RowSource = "Menu!A2:A3"
ComboBox2.RowSource = "Menu!B2:B3"
'
With Worksheets("Enfant")
    For x = 1 To 104
        sCol = Split(.Columns(x + 20).Address(ColumnAbsolute:=False), ":")(1)
        iNb = WorksheetFunction.CountIf(.Range(sCol & "3:" & sCol & .Range(sCol & .Rows.Count).End(xlUp).Row), "X")
        Me.Controls("CheckBox" & x).Enabled = IIf(iNb >= .Range(sCol & 3).Value, False, True)
        Me.Controls("CheckBox" & x).Value = False
        Me.Controls("lNb" & x).Caption = CStr(.Range(sCol & 3).Value - iNb)
    Next
End With
End Sub
	Pour créer le nouvel inscrit :
		Code:
	
	
	'Pour le bouton Nouveau contact Enfant
Private Sub CommandButton1_Click()
'
Dim x%, L%, iT%, iC%, iCB%
'
If MsgBox("Confirmez-vous l’insertion de cette nouvelle inscription ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
    With Worksheets("Enfant")
        L = .Range("A" & .Rows.Count).End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
        If L < 5 Then L = 5
        For x = 1 To 128
            Select Case x
                Case 1, 2, 3, 6 To 20, 126
                    iT = iT + 1
                    .Cells(L, x) = Me.Controls("TextBox" & iT).Text
                Case 4, 5
                    iC = iC + 1
                    .Cells(L, x) = Me.Controls("ComboBox" & iC).Text
                Case 21 To 124, 127, 128
                    iCB = iCB + 1
                    .Cells(L, x) = IIf(Me.Controls("CheckBox" & iCB).Value = True, "X", "")
            End Select
        Next
        .Cells(L, 125).FormulaLocal = "=NB.SI(u" & L & ":dt" & L & ";""X"")"
        .Cells(L + 1, 125).Resize(1, 2).Delete shift:=xlUp
        .Cells(L + 2, 125).FormulaLocal = "=SOMME(DU4:DU" & L & ")"
        .Cells(L + 2, 126).FormulaLocal = "=SOMME(DV4:DV" & L & ")"
        .Cells(L + 2, 125).Resize(1, 2).Borders.LineStyle = 1
    End With
    Call InitFormulaire
End If
'
End Sub
	
		Code:
	
	
	Public Sub InitFormulaire()
'
Dim x%, iNb%, iT%, iC%, iCB%, sCol$
With Worksheets("Enfant")
    For x = 1 To 104
        sCol = Split(.Columns(x + 210).Address(ColumnAbsolute:=False), ":")(1)
        iNb = WorksheetFunction.CountIf(.Range(sCol & "3:" & sCol & .Range(sCol & .Rows.Count).End(xlUp).Row), "X")
        Me.Controls("CheckBox" & x).Enabled = IIf(iNb >= .Range(sCol & 3).Value, False, True)
        Me.Controls("CheckBox" & x).Value = False
        Me.Controls("lNb" & x).Caption = CStr(.Range(sCol & 3).Value - iNb)
    Next
End With
 For x = 1 To 128
            Select Case x
                Case 1, 2, 3, 6 To 20, 126
                    iT = iT + 1
                    Me.Controls("TextBox" & iT).Text = ""
                Case 4, 5
                    iC = iC + 1
                    Me.Controls("ComboBox" & iC).Text = ""
                Case 21 To 124, 127, 128
            iCB = iCB + 1
            Me.Controls("CheckBox" & iCB).Value = False
    End Select
Next
Me.TextBox1.SetFocus
'
End Sub
	J'ai fait une recherche sur les checkbox avec
		Code:
	
	
	' en cas d'erreur
  On Error GoTo Erreur_Proc
 
  Erreur_Proc:
  MsgBox "Erreur, le checkbox n° " & I & " n'existe pas !"
  Resume Next
	Il me dit que la 105 n'existe pas alors qu'elle est bien présente.
Autre problème la textbox21 ne s'affiche pas en case 126
Merci pour votre aide.