VBA

Résolu
Farfadet88 Messages postés 19 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?
--
Thor tue

7 réponses

  1. 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
  2. Farfadet88 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   1 402
     
    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
  3. 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
  4. Farfadet88 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   1 402
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. Farfadet88 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   1 402
     
    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
  8. 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