Sur condition ne pas excuter la suite de la macro

mgd

XLDnaute Nouveau
Bonjour,

Je cherche à faire un questionnaire simple depuis une feuille excel.
J’utilise des checkbox pour spécifier les réponses et des boutons radio pour affiner la qualité de la réponse. Les users qui renseigneront le formulaire devront choisir une des options dans les boutons radio. Tant que ça n’est pas fait, il ne peut pas passer à la question suivante (c'est-à-dire exécuter la suite de la macro).

Et c’est bien là mon problème, je ne parviens pas à trouver le code qui permette de dire à excel « si aucun bouton radio n’est coché Stoppe la macro et laisse l’utilisateur cocher sinon poursuit ».

Je débute vraiment en vba, il semblerait qu’il faille utiliser For / Next mais je ne vois vraiment pas comment m’y prendre.

Ci-joint un petit extrait de mon fichier et le bout de code ci dessous (fichier trop volumineux sinon). Je suis pas certaine d'être très claire... désolée.

D’avance merci du temps que vous voudrez bien accorder à ma question qui pour la majorité d’entre vous est certainement enfantine.
Bonne fin de journée à tous,
mgd


Sub Passer_Etape_Suivante()

'Si les cellules liées aux boutons radio sont toutes égales à faux, afficher un message
Sheets("Formulaire").Select
If ([D7] = FAUX And [D8] = FAUX And [D13] = FAUX And [D15] = FAUX) Then
MsgBox "Merci de compléter le formulaire, des informations sont manquantes! "
End If
'puis permettre à l'utilisateur de revenir sur le formulaire pour cocher une option

'une fois qu'une des options est cochée passer à la question suivante
'(J'ai un bout de code qui va bien pour remettre toutes les cases à faux,
' et pour copier le tout dans une feuille de résultat avant de passer à la question suivante)
[NumQuestEnCours] = [NumQuestEnCours] + 1

'En fait mon problème réside dans le fait que le passage à la question suivante ne
'doit pas se faire tant qu'au moins un des boutons radio n'aura pas été coché.

End Sub
 

Pièces jointes

  • ClasseurTest.xls
    42 KB · Affichages: 54
  • ClasseurTest.xls
    42 KB · Affichages: 53
  • ClasseurTest.xls
    42 KB · Affichages: 59

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Sur condition ne pas excuter la suite de la macro

bonjour mgd

en fait ton raisonnement est bon
If ([D7] = FAUX And [D8] = FAUX And [D13] = FAUX And [D15] = FAUX)

perso, je mettrais les VRAI FAUX entre guillemets
If ([D7] = "FAUX" And [D8] = "FAUX" And [D13] = "FAUX" And [D15] = "FAUX")

si ça ne fonctione pas après cela, c'est peut-être parce que les mots VRAI et FAUX sont des mots réservés
il serait préférable de mettre 1 ou 0 dans les cellules liées et tester si la somme de D7: D15 est égale ou non à zéro

à+
Philippe
 

tototiti2008

XLDnaute Barbatruc
Re : Sur condition ne pas excuter la suite de la macro

Bonjour à tous,

moi j'essaierais :

Code:
If ([D7] = False And [D8] = False And [D13] = False And [D15] = False)

Mais faut faire gaffe, en Excel, VRAI = 1, FAUX = 0
en VBA, True = -1 et False = 0

ou comment se simplifier la vie ;)
 

jp14

XLDnaute Barbatruc
Re : Sur condition ne pas excuter la suite de la macro

Bonjour à tous

Une autre solution
Modifier le bouton valider en utilisant la barre d'outils "barre d'outils contrôles"

Code:
 Private Sub CommandButton1_Click()
Dim Obj As OLEObject
Dim Ok As Boolean

For Each Obj In Feuil1.OLEObjects
If TypeOf Obj.Object Is MSForms.CheckBox Then
     If Obj.Object.Value = True Then
        Ok = True
        Exit For
    End If
End If
Next Obj
If Ok = False Then
    MsgBox " vous devez faire un choix "
    Exit Sub
End If
' code pour passer à la suivante
End Sub
 

mgd

XLDnaute Nouveau
Re : Sur condition ne pas excuter la suite de la macro

Bonjour à tous,

Tout d'abord je tiens à vous remercier de vos réponses si rapides.

Le test effectué If ([D7] = FAUX And [D8] = FAUX And [D13] = FAUX And [D15]) fonctionne sans aucun problème, j'en déduis de vos réponses qu'il y a bien d'autre méthodes pour écrire ce bout de code, en effet y a plus simple... J'en prend bonne note.

Ceci étant, (j'ai du m'expliqué comme un manche...) mon problème réside dans le fait que je veux stopper la suite de la macro si ces 4 cellules ont la valeur faux. Si ce n'est pas le cas que la macro continue.

Concernant la solution proposée par jp14, certainement très bonne, je ne parviens pas à la mettre en oeuvre. :(

Le "Private Sub" du début de macro m'est totalement inconnu. Jusqu'ici la seule chose dont j'ai été capable c'est de mettre en place des minis macros commençant par "Sub", qui vont s'inscrire automatiquement dans un module.

Dois je comprendre que ce dont j'aurais besoin est une procédure (je perçois juste le concept...) et qu'il faudrait la mettre dans la feuille plus que dans un module?

Si vous avez 2 min pour éclairer ma lanterne, d'avance merci.
mgd
 

mgd

XLDnaute Nouveau
Re : Sur condition ne pas excuter la suite de la macro

Merci beaucoup phlaurent55 :)
Enorme, il manquait 4 + 3 lettres bien positionnées et hop ça roule comme sur des roulettes.

C'est génial merci, après les 5 lettres porte bonheur, les 7 lettres magiques ;)
Bonne fin de journée à tous,
 

Discussions similaires

Statistiques des forums

Discussions
312 245
Messages
2 086 570
Membres
103 247
dernier inscrit
bottxok