IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Probleme checkbox qui reste cochée


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut [VBA-E]Probleme checkbox qui reste cochée
    coucou,

    j'ai un petit souci avec une chexkbox (enfin je pense qu'il vient de là).

    Voici le pb :

    je cherche à modifier des infos stockées. Pour cela lorsque l'utilisateur choisi un element d'une combobox, les infos (contenues dans une feuille excel) sont affichées sur l'userform.

    voici le code qui permet de récupérer les infos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If (Cells(NumLigne, 4) = "") Then
         MenuGeneral.CheckBox1 = True
         MenuGeneral.TextBox2 = ""
    Else
         MenuGeneral.CheckBox1 = False
         MenuGeneral.TextBox2 = Cells(NumLigne, 4)
    End If
    Je vais l'expliquer un peu pour que ce soit clair. L'utilisateur a le choix, pour un nom de fichier qu'il ajoute, il peut choisir une option "convertir" ou non.
    Si il coche la checkbox, alors il ne veut PAS convertir et donc il n'y a pas de nom du fichier converti à fournir.

    Le code qu'il y a au dessus sert à voir les info (récupérer les info stockées avant modif). Donc si la case qui doit contenir le nom du fichier converti est vide, c'est qu'il n'a pas voulu cette option et donc la checkbox "ne pas convertir" est cochée et le textbox contenant le nom est vide. Sinon la case n'est pas cochée et on a le nom...

    le souci est que dans ma Sub qui doit enregistrer (le code d'avant vien de celle qui récupere les info) ne fait pas ce que je veux !!
    Lorsque je décoche la checkbox et met un nom (initialement elle est cochée et il n'y a pas de nom) et que je veux energistrer les changements, ca laisse l'orignal (cochée sans nom). De meme pour une case non coché avec un nom, si je supprime le nom et que je la coche, ca ne retiens pas...

    Voici le code (qui ne fonctionne donc pas )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If MenuGeneral.TextBox2 <> "" Then
         MenuGeneral.CheckBox1 = False
         Cells(NumLigne, 4).Value = MenuGeneral.NomExcel.Value
    Else
         MenuGeneral.CheckBox1 = True
         Cells(NumLigne, 4).Value = ""
    End If
    Si la textbox est vide alors je veux quil retiennent la checkbox cochée et qu'il n'y ai pas de nom stocké, sinon l'inverse

    Si il y a des survivant apres la elcture merci de leur aide

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Avant ton If tu as qu'a mettre par défaut la case cochée et ta cellule vide comme ça tu n'a pas besoin de ton Else
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Bof,

    là ta solution si je met la case coché par "défaut", ca me sauve toujours avec la case cochée et le nom vide quelque soit la valeur initiale...

    De plus je pense pas que ce soit intelligent comme solution. Il fait au minimum 1 des 2 actions voire les 2 si le "if" est vérifé alors qu'avec mon code il vérifie et fait toujours 1action au maximum (paraction je veux dire l'une des 2 possibilité qu'il y a).

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Me revla,

    ca m'a donné une idée ta solution en fait.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'on vérifie la cohérence
     If ((MenuGeneral.CheckBox1 = False And MenuGeneral.TextBox2 = "") 
    Or (MenuGeneral.CheckBox1 = True And MenuGeneral.TextBox2 <> "")) Then
     
            MsgBox ("Probleme au niveau du nom de la convertion")
            Exit Sub
     
    End If
     
    Cells(NumLigne, 4).Value = MenuGeneral.TextBox2.Value
    je vérifie dabord que si la case set coché, il n'y a pas de nom ou que si elle est décochée (on ve convertir) il y a un nom.
    Puis j'ajoute automatiquement la valeur qu'il y a dans textbox2 dans ma feuille qui contient les donnée. Si cette valeur est vide alors, lors de la prochaine modif, le code suivant cochera par lui meme la case (code de la sub qui affiche les données stockées)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If (Cells(NumLigne, 4) = "") Then
         MenuGeneral.CheckBox1 = True
         MenuGeneral.TextBox2 = ""
    Else
         MenuGeneral.CheckBox1 = False
         MenuGeneral.TextBox2 = Cells(NumLigne, 4)
    End If

    donc tout va bien maitenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. case à cocher qui reste cochée
    Par hendrix67 dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2010, 15h11
  2. checkbox qui reste actives
    Par Chris_Dupasquier dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/05/2010, 16h31
  3. Réponses: 2
    Dernier message: 16/03/2007, 15h44
  4. Checkbox qui coche toutes les autres!
    Par myomyo dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 30/05/2006, 13h59
  5. quels sont les checkbox qui sont cochés?
    Par debutant.informatique dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 21h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo