VBA
Résolu
Farfadet88
Messages postés
7780
Date d'inscription
Statut
Membre
Dernière intervention
-
Polux31 Messages postés 7219 Statut Membre -
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?
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
Bonjour,
Ou se trouve le "panel" (feuille Excel, UserForm)?
Quel type de controle est-ce (textbox, combobox, checkbox) ?
;o)
Ou se trouve le "panel" (feuille Excel, UserForm)?
Quel type de controle est-ce (textbox, combobox, checkbox) ?
;o)
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)
Test ça :
;o)
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)
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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?
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?