debidebo67
XLDnaute Nouveau
Bonjour,
Je m'adresse aux experts VBA, je n'arrive pas à trouver la solution depuis 2 jours :
contexte : Useform avec un multipage qui se rempli tt seul...en créant des checkbox(1 à X) à partir de la pages(1) (la 0 est une page d'accueil) puis recopie le caption des chexbox cochés dans un tableau
Dysfonctionnement : mes variables début et nbr sont fausses : leur n° doit correspondre au 1er numéro et au dernier des Chexckbox(x) à Chexckbox(y) en fonction le la pages(n) du multipage1 : .je n'arrive pas à lui faire compter le nombre de cellules non vide dans une plage de colonnes: il ne comprend pas problème la syntaxe !
j'ai essayer plusieurs solutions comme vous pouvez le constater plus bas :
Voici le code :
Private Sub CommandButtonRésultat_Personnalité_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'copie des caractéristiques coché
Dim début As Integer, nbr, f, dernier
Dim y As String
dernier = Sheets("Plages_Nommées").Range("D65536").End(xlUp).Row
For n = 1 To dernier - 1
With UserForm1.MultiPage1.Pages(n)
u = 2
If n = 1 Then
début = 1
nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Columns(u)) - 1
ElseIf n = 2 Then
début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u) + ":" + Columns(n + 1))) - (1 * n)
nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u) + ":" + Columns(n))) - (1 * n)
'début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Columns(u, n + 1)) - (1 * n)
'début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n + 1)) - (1 * n)
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n)) - (1 * n)
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Columns(u, n)) - (1 * n)
Else
début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u), Columns(n))) - (1 * n - 1)
nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u), Columns(n + 1))) - (1 * n)
'début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n)) - (1 * n - 1)
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n + 1)) - (1 * n)
'debut = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(u & ":" & n - 1)) - 1 * n
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(u & ":" & n)) - 1 * n
End If
For f = début To nbr
If .Controls("CheckBox" & f) Then
y = Controls("CheckBox" & f).Caption 'extraire le caption
Sheets("Résultat_Personnalité").Cells(100000, 4).End(xlUp).Offset(1, 0).Value = y
End If
Next f
End With
Next n
Unload Me
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Merci à ceux qui voudront bien m'aider ...
Je m'adresse aux experts VBA, je n'arrive pas à trouver la solution depuis 2 jours :
contexte : Useform avec un multipage qui se rempli tt seul...en créant des checkbox(1 à X) à partir de la pages(1) (la 0 est une page d'accueil) puis recopie le caption des chexbox cochés dans un tableau
Dysfonctionnement : mes variables début et nbr sont fausses : leur n° doit correspondre au 1er numéro et au dernier des Chexckbox(x) à Chexckbox(y) en fonction le la pages(n) du multipage1 : .je n'arrive pas à lui faire compter le nombre de cellules non vide dans une plage de colonnes: il ne comprend pas problème la syntaxe !
j'ai essayer plusieurs solutions comme vous pouvez le constater plus bas :
Voici le code :
Private Sub CommandButtonRésultat_Personnalité_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'copie des caractéristiques coché
Dim début As Integer, nbr, f, dernier
Dim y As String
dernier = Sheets("Plages_Nommées").Range("D65536").End(xlUp).Row
For n = 1 To dernier - 1
With UserForm1.MultiPage1.Pages(n)
u = 2
If n = 1 Then
début = 1
nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Columns(u)) - 1
ElseIf n = 2 Then
début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u) + ":" + Columns(n + 1))) - (1 * n)
nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u) + ":" + Columns(n))) - (1 * n)
'début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Columns(u, n + 1)) - (1 * n)
'début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n + 1)) - (1 * n)
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n)) - (1 * n)
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Columns(u, n)) - (1 * n)
Else
début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u), Columns(n))) - (1 * n - 1)
nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(Columns(u), Columns(n + 1))) - (1 * n)
'début = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n)) - (1 * n - 1)
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range("$" & u & ":" & "$" & n + 1)) - (1 * n)
'debut = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(u & ":" & n - 1)) - 1 * n
'nbr = Application.WorksheetFunction.CountA(Sheets("Caractéristiques_Catégories").Range(u & ":" & n)) - 1 * n
End If
For f = début To nbr
If .Controls("CheckBox" & f) Then
y = Controls("CheckBox" & f).Caption 'extraire le caption
Sheets("Résultat_Personnalité").Cells(100000, 4).End(xlUp).Offset(1, 0).Value = y
End If
Next f
End With
Next n
Unload Me
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Merci à ceux qui voudront bien m'aider ...