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 :

Garder CheckBox coché après unload d'userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité(e)
    Invité(e)
    Par défaut Garder CheckBox coché après unload d'userform
    Bonjour à tous !

    Voila, après quelques semaines sur votre forum, qui ma permi de résoudre pas mal de mes problèmes concernant vba excel, je me suis inscrit pour demander de l'aide sur quelque chose ou google ne ma pas donné de réponses satisfaisante.

    Mon problème : je suis en train de créer un fichier excel avec une userform qui apparait dès l'ouverture du document afin de demander à l'utilisateur quelle colonne il désire créer.

    L'userform est constitué de checkbox à cocher et d'un bouton "commencer".

    Si je coche la premier CB la première colonne est renommée en colonne1 par exemple... Ainsi de suite pour une quinzaine de colonnes. Lors de l'appui sur le bouton "commencer", je fais disparaitre les colonnes ou il n'y a rien et fait disparaite l'userform.

    J'ai créé un bouton sur le document excel afin de réactiver l'userform pour ajouter de nouvelle colonne en cour. Le problème est que les checkbox qui devraient être déjà cochées, ne le sont pas...

    Je souhaite donc qu'elle garde la mémoire, ou alors qu'elle recherche si leur colonne est remplie afin de se cocher...

    Ce n'est pas un gros problème en soi, mais c'est le soucis du détail

    J'espère avoir été clair...

    Voici des bouts de codes vba de certains élements :

    Une checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CheckBox2_Click()
        Select Case CheckBox2.Value
            Case True: Range("B1").Value = "Colonne2"
            Case False: Range("B1").Value = ""
            Case Else: CheckBox1.Caption = "Null"
        End Select
    End Sub
    Le bouton "démarrer"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub CommandButton1_Click()
     
    Range("A:IV").Select
    Selection.EntireColumn.Hidden = False
    Range("A1").Select
      Dim I As Long
     
      I = 1
      Do While I < 35
        If Cells(1, I).Value = "" Then
          Cells(1, I).EntireColumn.Hidden = True
        End If
        I = I + 1
      Loop
     
    'Pour que l'userform soit cachée lors du click sur le bouton
    Unload Me
    End Sub
    Le bouton pour rajouter des colonnes en cour de création :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
    Range("A:AI").Select
    Selection.EntireColumn.Hidden = False
    UserForm1.Show
    End Sub
    Merci pour l'aide !

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Un premier "Tips" pour le souci du détaille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A:IV").Select
    Selection.EntireColumn.Hidden = False
    Range("A1").Select
    peux très bien devenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A:IV").EntireColumn.Hidden = False
    Pour ton problème

    Si tu veux que les case soit précoché. Il faudrais a mon avis dans la macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    'ton code
    End Sub
    réaliser plusieur teste pour savoir si les chekbox doivent être coché
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Range("B1").Value = "Colonne2" then
    CheckBox2.Value=true
    end if
    Atention ce type de modification lance la macro liéé au checkbox.
    (pour m'en passer j'utilise une variable global que je teste en début de macro)

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Merci pour ta réponse et pour l'astuce de simplification

    Sinon concernant le dernier code que tu donne, j'ai souhaitais l'intégrer dans mon CommandButton1 afin que la vérif des colonnes se fasse seulement lorsque je souhaite les modifiers, mais dans ce cas la j'obtiens l'erreur :

    Variable non définie, concernant CheckBox2... Est-ce que c'est parce que la checkbox est dans l'userform et le commandbutton est sur feuil1? Je suppose que oui, mais dans ce cas la, quel peut être le "chemin" pour indiquer que c'est dans l'userform?

    [edit] : je remarque que je ne peut pas faire le test au niveau des choeckbox, parce que si j'insère ce code, je ne peut plus décocher la case. Ce que je comprends, mais c'est juste pour indiquer que je penses que la vérification doit se faire au moment d'appuis du CommandButton...
    Dernière modification par Invité(e) ; 07/12/2009 à 15h08.

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je ne suis pas sur de comprendre ce que tu veux vérifier. Mais je te laisse seul juge.

    Pour ton problèmede variable non définie je suppose que tu utilise l'option explicit, je ne peux que te féliciter cela permet de mettre directement le doigt sur le problème.
    Tu as bien compris qu'il faut spécifier de quel cheque box on parle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    usrform1.chekbox1.value
    Par contre uen remarque si tu a fait un unload du userform avant tu perdra toutes les valeurs

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Je viens de trouver la solution, j'ai integret le code que tu ma donné dans le sub de l'userform durant l'activation ce qui me donne par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Activate()
    If Range("B1").Value = "Date" Then
    CheckBox2.Value = True
    End If
    End Sub
    Maintenant il me suffit de multiplier les IF - End If pour avoir toutes mes colonnes et ça sera bon !

    Merci

Discussions similaires

  1. garder la checkbox cochée
    Par choupinou22 dans le forum Langage
    Réponses: 20
    Dernier message: 21/04/2015, 23h40
  2. [PHP 5.3] checkbox garder case cochée
    Par laurentbatch dans le forum Langage
    Réponses: 19
    Dernier message: 30/08/2013, 17h07
  3. checkbox garder la case cochée après validation
    Par laurentbatch dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 08/08/2013, 19h37
  4. garder des checkbox cochés lorsque l'on change de page
    Par barouz dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 29/06/2007, 17h21
  5. Réponses: 3
    Dernier message: 22/06/2006, 23h23

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