Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion zephir94
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zephir94

XLDnaute Impliqué
Bonjour à tous,

J'ai une erreur avec ma petite boucle et je n'arrive pas à trouver pourquoi !
J'ai l'erreur next sans for !

voici mon code :

Code:
Sub valider()
Dim b
Dim nb As Integer
For b = 1 To 109 Step 2
If Me.Controls("checkbox" & b) = True Then
nb = nb + 1
Next
If nb = 55 Then
CommandButton1.Enabled = False
Else
CommandButton1.Enabled = True
End If
End Sub

Merci pour vos aides
 
Dernière édition:
Re : next sans for

Bonjour,

Lorsqu'on code, on essaie de bien "ranger" le code...

On peut appeler ceci l'indentation....

Si tu avais respecté ce mode de saisie, tu aurais obtenu ceci :

Code:
Sub valider()
Dim b
Dim nb As Integer
For b = 1 To 109 Step 2
    If Me.Controls("checkbox" & b) = True Then
        nb = nb + 1
Next
    If nb = 55 Then
        CommandButton1.Enabled = False
    Else
        CommandButton1.Enabled = True
    End If
End Sub

Et là, on peut voir de suite d'où provient l'erreur...

Bon courage
 
Re : next sans for

Bonjour

Il manque le End IF

Soit tu écris IF... sur une seule ligne

Code:
If Me.Controls("checkbox" & b) = True Then nb = nb + 1

Soit tu ajoutes End If
Code:
If Me.Controls("checkbox" & b) = True Then 
nb = nb + 1
End If
 
Re : next sans for

merci à vous deux,

Bien vue ! malgré tout je n'arrive pas au résultat que je souhaite !
J'ai un userform avec 110 checkbox
55 oui et 55 non
elles vont par paires sur des lignes. ( donc soit dans l'état oui ou non )
Je voudrais que le boutton commande1 ne soit actif que quand les checkbox soient toutes renseignées
 
Re : next sans for

Re-,

Gérer 110 CheckBox dans un USF nécessiterait un module de classe, AMHA....

Sinon, le code que tu présentes ne comptabilise qu'une valeur booléenne...(en l'occurence "True")

L'idéal serait donc de dénombrer en temps réel le nombre d'options choisies (soit "oui", soit "non")

En joignant un fichier exemple, ce serait aussi plus simple.

Bon courage

Edit, et toujours AMHA, l'utilisation d'OptionButton serait plus judicieuse...
 
Dernière édition:
Re : next sans for

j'ai changé l'exécution de ma boucle comme ceci :
Code:
Sub valider()
 Dim b
 Dim nb As Integer
 For nb = 1 To 49 Step 2
     If Me.Controls("checkbox" & nb) = True Then
         nb = nb + 1
 End If
     If nb = 55 Then
         CommandButton1.Enabled = False
     Else
         CommandButton1.Enabled = True
     End If
  Next
 End Sub

et je lance l'exécution par l'événement :
Code:
Private Sub CheckBox1_Change()
Call valider
End Sub
dans les checkbox impaires
 
Re : next sans for

Voici un petit fichier exemple

Ce que je voudrais comme résultat, il faut que soit check1 ou chek2 soit sélectée et soit check3 ou check4 pour que le bouton commande1 soit actif dans l'userform

Merci par avance pour le coup de main

Ps : l'option bouton il est vrai aurait été plus adapté mais c'est pas pour moi j'aide un ami et c'est son choix...
 

Pièces jointes

Dernière édition:
Re : next sans for

Ps : l'option bouton il est vrai aurait été plus adapté mais c'est pas pour moi j'aide un ami et c'est son choix...

Re-,

Je n'ai pas encore regardé ton fichier exemple....(je faisais un exemple de ce qu'il est possible de faire...)

Regarde le fichier joint, et propose à ton ami...

Bonne soirée

Edit : je viens de regarder ton fichier exemple...
Euh, 110 codes pour tester tous les CheckBox, bon courage...
 

Pièces jointes

Re : next sans for

Un grand merci pour cet exemple,

Les modules quand j'aurais atteint un niveau acceptable en VBA je m'y pencherais sérieusement, pour l'instant euh trop compliqué pour mon seul neurone !

Son choix c'est arrêté sur les chekbox hélas et je vais devoir me dépatouiller avec cela !
et j'en suis à 80 % du projet, tout changer représenterais un trop long travail

Le fichier exemple contient juste 4 checkbox, je voudrais comprendre le mécanisme et je l'adapterais aux 110 de mon fichier !

Merci pour tout
 
Re : next sans for

J'ai un petit peu avancé.

Je positionne le bouton sur false à l'ouverture de l'userform comme ceci :

Code:
Private Sub UserForm_Initialize()

CommandButton1.Enabled = False

En suite en utilisant ma boucle de tout à l'heure :

Code:
Sub valider()
 Dim b
 Dim nb As Integer
 For b = 1 To 49 Step 2
     If Me.Controls("checkbox" & b) = True Then
         nb = nb + 1
 End If
 Next
     If nb = 55 Then
         CommandButton1.Enabled = False
     Else
         CommandButton1.Enabled = True
     End If
 End Sub

j'appel par

Code:
Private Sub CheckBox1_Change()
Call valider
End Sub

Le bouton se dégrise bien quand il est validé dans la checkbox1 mais quelque soit l'état des autres checkbox hélas ce n'est pas bloquant !
je continu à plancher
 
Re : next sans for

...... j'en suis à 80 % du projet, tout changer représenterais un trop long travail ....

Si tu y arrives, aux 100 %...

Car, comme je te l'ai dit, coder 110 objets, ne serait non plus "un trop long travail", mais surtout une sacré prise de tête...(et un code long comme un jour sans pain....)

Bref...

Et pourquoi, tu fais un "Step 2", dans ta boucle?

Il faut tester TOUS les CheckBox de l'USF, et si tu as la moitié du nombre total, c'est tout bon...

Bon courage
 
Re : next sans for

j'avance lol

Code:
Sub valider()
 Dim b
 Dim nb As Integer
 For b = 1 To 109 Step 2
     If Me.Controls("checkbox" & b) = True Then

         CommandButton1.Enabled = True
     Else
         CommandButton1.Enabled = False
     End If
  Next
 End Sub

J'ai mis un step 2 pour tester uniquement les impaires car sur chaque lignes j'ai oui qui est impaire et non qui est paire
Comme je ne donne qu'une seule valeur de possible par ligne je ne peux pas avoir oui et non de sélectionné en même temps !
mais je dois créer pour chaque CheckBox_Change l'appel de ma macro de boucle ?
 
Re : next sans for

Bon la j'ai trouvé le moyen de tester toutes mes checkbox

Code:
Sub valider()
 Dim b
 Dim nb As Integer
 For b = 1 To 109 Step 2
     If Me.Controls("checkbox" & b) = True Or Me.Controls("checkbox" & b + 1) = True Then

         CommandButton1.Enabled = True
     Else
         CommandButton1.Enabled = False
     End If
  Next
 End Sub

sauf que je déclenche uniquement la vérification avec l'évènement de la check1 change !
quel événement dois-je choisir pour cette vérification soit tout le temps ?
 
Re : next sans for

Euh,

Tu veux que le bouton ne soit valide que si 55 ChkBx ont été choisis?

Ou seulement, si tu n'as que des "Oui"?

Et oui, il faut tester la boucle à chaque validation....

Bon courage
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
533
Réponses
4
Affichages
581
Réponses
5
Affichages
705
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
217
Réponses
7
Affichages
334
Réponses
2
Affichages
427
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
267
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…