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] checkbox et sub dans useform


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut [VBA-E] checkbox et sub dans useform
    bonsoir,
    dans un userform je voudrai lors d'un simple click qu'il me lance une inputbox dan mon bout de code il le fait pour la checkbox1 mais n'est il pas possible de faire autrement que de faire 3 sub pour lescheckbox.

    Mais ce que je préfererai c qu'il ouvre un meme userform pour toutes les checkbox





    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
    19
    Private Sub CheckBox1_Click()
    Dim tableauchck(31) 
    Dim i As Integer, DernièreLigne As Integer
     
     DernièreLigne = Range("A1").End(xlDown).Row + 1 ' Première ligne vide
           If CheckBox1.Value = True Then
        tableauchck(29) = InputBox("Saisir le NOMBRE ", "NOMBRE")
     '   ElseIf CheckBox2.Value = True Then
      '  tableauchck(30) = InputBox("Saisir leNOMBRE ", "NOMBRE")
      '  ElseIf CheckBox3.Value = True Then
        'tableauchck(31) = InputBox("Saisir le  NOMBRE ", "NOMBRE")
     
     
     
            End If
     
     
        For i = 29 To 31
            Cells(DernièreLigne, i) = tableauchck(i)

    merci a+

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut
    j'ai pas excel sur cet ordi pour verifier ce que je dis mais tu peux simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub monimputbox
    mavariable =InputBox("Saisir le NOMBRE ", "NOMBRE")
    end sub
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CheckBox2_Click()
    Dim i As Integer, DernièreLigne As Integer
    DernièreLigne = Range("A1").End(xlDown).Row + 1 ' Première ligne vide
    If CheckBox2.Value = True Then
    monimputbox
     Cells(DernièreLigne, 1) = mavariable
    end sub
    et tu en ajoute une comme ça par chekbox
    voila voila

  3. #3
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    bonsoir
    et merci alsimbad j'ai testé mais il ne recopie pas les données qui doivent commencer a la colonne 29 pour la check1


    merci a+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Mais ce que je préfererai c qu'il ouvre un meme userform pour toutes les checkbox
    Un userform ou un inputbox ?
    Je prends ton code
    If CheckBox1.Value = True Then
    Remplace ça par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If CheckBox1.Value or CheckBox2.Value or CheckBox3.Value then
    Tu testes, je crois me souvenir que la value d'un CheckBox1 est true ou false, auquel cas tu n'as même pas besoin de le préciser
    Si c'est Oui ou non, je ne sais pas, tu ajoutes " = True" aux trois checks
    A+

  5. #5
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    bonjour, Ousk

    Je veux qu' a chaque fois que je click sur l'une des chkbox( il y en a 3) il m'ouvre une inputbox que je puisse inscrire un chiffre et le recopier dans les colonnes 29 a 31 de ma bd
    et que la somme des 3 colonnes soient également recopiées dans la colonne "F" de ma feuille BD.

    Par contre c sur je préfererais un meme userform pour faire cela

    je sais (enfin quelqu'un m'a dit ) qu'il faut déclarer une variable public
    je pourrai la mettre dans dans l'auto open par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public myvalchk as integer
    ce ne doit etre que des entiers (je pourrai peut etre mettre byte car si c plus de 255 c des menteurs )

    mais après je coince car je ne sais pas quoi mettre dans l'userform en question qui ne comportera qu'une textbox pour faire la liaison.

    Un début de piste m'aiderait (mais un grand )


    merci a+

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par Tu
    il m'ouvre une inputbox que je puisse inscrire un chiffre et le recopier dans les colonnes 29 a 31 de ma bd
    La même valeur dans les trois colonnes ?
    Si oui, tu affectes cette valeur aux 3 colonnes
    Mais attention à la saisie. Si ce n'est pas une valeur...
    Si tu peux connaître les valeurs possibles que tu dois saisir, plutôt qu'un Inputbox, je lui préfèrerais un userform avec un combo renseigné de ces valeurs. La sélection ne laissant pas lattitude à l'erreur de s'insinuer perfidement dans la saisie
    Pourquoi une variable public ? Si tu traites les valeurs dans l'userform, tu n'en as pas besoin. Par contre, si tu les traites dans l'userform appelant, si. Mais regarde Hide, dans l'aide, qui masque un userform sans le décharger... Mais oublie, je complique...
    Réfléchis, teste, et fais pour le mieux

  7. #7
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    non se ne seront pas les memes valeurs c'est une erreur de ma partchaque ckbox sera renseignait ou pas du tout ou une seule .

    Mais comment je peux faire la liaison entre l'userform appelant et appelé

    si je mets un useform (et jy tiens)!!!!!

    car comment savoir si c la check1, 2 ou 3 ?

    ya peut etre une commande que j'ai trouvé un jour du genre "saisie"(nom de l'userform appelant)

    saisie.checkbox1

    merci a+

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu fais comme tu l'as suggéré, une variable publique déclarée dans Userform1, quand tu "load" userform2, si tu veux masquer Userform1 tu mets Userform1.hide, comme ça tu ne perdras aucune des valeurs contenues dans ses contrôles, et tu pourras saisir tes données dans userform2.
    Maintenant, et si c'est possible, je traiterais les données saisies dans U2, dans U2 plutôt qu'avoir à les rapatrier dans U1 via des variables publiques. Mais là, c'est toi qui vois
    A+

  9. #9
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    ok merci

    je pars me reposer les neurones demain avec un bouquin informatique que j'ai trouvé sur internet

    a lundi bon week end

    merci pour tout a+

  10. #10
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    coucou je suis de retour

    bon j'ai décla ré ma varaible dans mon userf "saisie"

    public varchk as integer

    mais comment faire pour qu'il sache que c la chekbox 1 2 ou 3

    merci a+

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    varchk n'est pas un integer, même pas encore un contrôle, pour le moment (!!!) c'est encore un string "varchk" auquel tu vas ajouter un index... Si je me souviens bien... (je n'ai pas relu mais un nom pareil, ça s'oublie pas )
    A+

  12. #12
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    bon je continue l'exploration

  13. #13
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    bon j'ai fait ca dans l'userform7 mais il recopie les données uniquement dans la colonne 29
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Private Sub CommandButton1_Click()
     Dim i As Integer, DernièreLigne As Integer
     
        Sheets("bd").Activate
     
     
        Dim tableauchck(29 To 31)
         DernièreLigne = Range("A1").End(xlDown).Row + 1 ' Première ligne vide
     
        For Each lecontrole In saisie.Controls
     
        Select Case lecontrole.Name
     
       Case "CheckBox1"
        tableauchck(29) = UserForm7.TextBox1
        Unload UserForm7
        UserForm7.Hide
        saisie.Show
     
     
          Case "CheckBox2"
        tableauchck(30) = UserForm7.TextBox1
        Unload UserForm7
        UserForm7.Hide
        saisie.Show
     
         Case "CheckBox3"
        tableauchck(31) = UserForm7.TextBox1
        Unload UserForm7
        UserForm7.Hide
        saisie.Show
     
        For i = 29 To 31
            Cells(DernièreLigne, i) = tableauchck(i)
     
         Next
          End Select
     
    Next
     
    End Sub
    en le lancant de l'userf "saisie"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
    saisie.Hide
           UserForm7.Show
    end if

  14. #14
    Membre éclairé Avatar de lio62
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 472
    Par défaut
    bonsoir
    J'ai trouvé cela ca marche mais je voudrais pouvoir afficher si je reclicke sur la checkbox la valeur recopiée et la modifiée si nécessaire


    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    Private Sub CommandButton1_Click()
    Dim noligne As Long
     
    Sheets("bd").Select
     noligne = Range("A1").End(xlDown).Row + 1
     
     
    If Cells(noligne, 29) = "" Then
    If saisie.CheckBox1.Value = True Then Cells(noligne, 29) = TextBox1
     
     
    If Cells(noligne, 30) = "" Then
     If saisie.CheckBox2.Value = True Then Cells(noligne, 30) = TextBox1
     
     
    If Cells(noligne, 31) = "" Then
     If saisie.CheckBox3.Value = True Then Cells(noligne, 31) = TextBox1
     
     
    Unload UserForm7
     
    UserForm7.Hide
     
     
    saisie.Show
    merci a+

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

Discussions similaires

  1. Comment arreter une Sub dans VBA apres une erreur
    Par deubelte dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/08/2007, 16h13
  2. [VBA-E] checkbox dans une boucle
    Par richou dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/05/2006, 14h59
  3. [VBA-E] Effacer les doubles dans 1 colonne grace à une macro
    Par Stef.proxi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/08/2004, 15h44
  4. [VBA] Les propriétés de cellule dans Excel
    Par Kylen dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 05/07/2004, 23h02
  5. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2004, 01h18

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