VBA

Résolu/Fermé
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 - 9 sept. 2009 à 13:52
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 17 sept. 2009 à 14:07
Bonjour,

Je cherche à créer une macro qui permette sur un pannel de case de contrôler que toutes sont bien remplies.

Je veux donc, que si l'une (ou plusieurs) des cases est vide, un msgbox s'affiche et mette fin à la macro.
Si toutes les cases sont pleines, effectuer une autre action (dont la macro est déjà prête)

Pouvez vous m'aider?

7 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
9 sept. 2009 à 14:04
Bonjour,

Ou se trouve le "panel" (feuille Excel, UserForm)?

Quel type de controle est-ce (textbox, combobox, checkbox) ?

;o)
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 365
9 sept. 2009 à 14:34
Alors c'est tout simple, l'ensemble des "ok" s'affichent dans différentes cases sur une feuille excel (disons par exemple, A1, A2 et A3)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
9 sept. 2009 à 14:56
Test ça :

Sub testCellule()
Dim plage As Range
Dim cl

   Set plage = Worksheets(1).Range("A1:A3")

   For Each cl In plage
      If cl.Value = "" Then
         MsgBox "Toutes les cases ne sont pas renseignées !!!"
         Exit Sub
      End If
   Next cl

End Sub

;o)
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 365
9 sept. 2009 à 15:08
voilà ce sur quoi j'étais parti, ca marche mais je n'arrive pas à ne pas réaliser l'action lorsque la msgbox s'affiche

Sub Valider()

Sheets("accueil").Select
If Range("d16").Value <> "OK" Then If Range("d18").Value <> "OK" Then If Range("d20").Value <> "OK" Then If Range("d22").Value <> "OK" Then If Range("H16").Value <> "OK" Then If Range("H18").Value <> "OK" Then If Range("H20").Value <> "OK" Then If Range("H22").Value <> "OK" Then MsgBox ("Veuillez répondre aux questions de l'ensemble des questionnaires") Else
Sheets("Comparatif").Select
ActiveSheet.Unprotect
Range("b65536").End(xlUp).Offset(1, 0) = Range("i2")
Range("b65536").End(xlUp).Locked = True
Range("c65536").End(xlUp).Offset(1, 0) = Range("j2")
Range("c65536").End(xlUp).Locked = True
Range("d65536").End(xlUp).Offset(1, 0) = Range("k2")
Range("d65536").End(xlUp).Locked = True
End Sub


Le problème vient de mon Else je pense mais je ne vois pas comment faire pour ne pas réaliser la partie en gras si la Msgbox s'affiche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
9 sept. 2009 à 15:47
Tu ajoutes Exit Sub juste après MsgBox ...

Tu as trop de If imbriqués, utilise plutôt Or :

If Range("d16").Value <> "OK" Or Range("d18").Value <> "OK" Or Range("d20").Value <> "OK" ... Then
MsgBox ("Veuillez répondre aux questions de l'ensemble des questionnaires")
Exit Sub
Else
.....
End If

;o)


--
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.» 
Nicolas Boileau
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 365
17 sept. 2009 à 13:51
Ok merci.

Dernier petit bug de mon outil, j'ai créé une macro qui copie la valeur d'une textbox dans une case excel mais le souci est qu'elle la prends en compte en tant que texte et non en tant que nombre. Du coup tous mes calculs sont faussés. Comment faire pour qu'il détecte automatiquement cette case en tant que nombre?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 sept. 2009 à 14:07
Bonjour,

Essaie en faisant :

Sheets(1).Range("A1").Value = CInt(TextBox1.Text)

Sinon, il faut changer le format de la cellule dans Excel:
Format -> Cellule -> onglet Nombre

;o)
0