VBA

Résolu
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   -  
Polux31 Messages postés 7219 Statut Membre -
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 7219 Statut Membre 1 204
 
Bonjour,

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

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

;o)
0
Farfadet88 Messages postés 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
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 7219 Statut Membre 1 204
 
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 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
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 7219 Statut Membre 1 204
 
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 7780 Date d'inscription   Statut Membre Dernière intervention   1 370
 
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 7219 Statut Membre 1 204
 
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