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 :

evenement changer d'index


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut evenement changer d'index
    Bonjour,

    j'ai un userform où l'utilisateur rempli plusieurs informations.
    Ce que je souhaite faire c'est ne rendre actif le bouton "terminer" que lorsque toutes les infos sont rentrées.
    En fait, je pense qu'il faudrait que je vérifie l'état des cases de mon questionnaire entre chaque passage d'une case à une autre (il n'y a pas d'ordre de remplissage des cases).
    Pour cela il me faut un evenement du type "tabindex_change"...
    Est ce que ça existe ??

    Ou si quelqu'un à une autre idée...

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour

    un petit exemple : tu as 10 lists index, tu geres une variable string (en public) de 10 caracteres " " (espaces)

    a chaque fois que tu effectues une modif, tu met en place un x dans la variable public, à l'endroit que tu as defini (liste 1, caractere 1 etc)

    une fois que ta variable est egal à "xxxxxxxxxx", tous est saisi

    bonne journée

  3. #3
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    d'accord, mais comment savoir si une modif à été effectuée ?
    Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub info1_Exit()
        If info = correct Then
            Cfait = Cfait + 1
        End If
        If Cfait = 12 Then
            terminer.Enabled = True
        End If
    End Sub
    pour chaque case ???

    il n'y aurait pas plus simple???

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour,

    tes cases à remplir ???
    de quel bouton s agit il ? TEXTBOX , chexbox ???

  5. #5
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    en fait un peu de tout :
    combobox, textbox, optionbutton, checkbox, et même une fenêtre annexe avec des listbox.

    cela t'aide pour m'aider ?

  6. #6
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    je ne t'ai pas dit de faire une incrementation sinon ton 12 tu l'auras si tu modifies 12 fois la meme textbox

  7. #7
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    c'est pas faux, je n'y avait pas pensé

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour,

    voila l 'idée :
    ds ton user verifier si les textbox , combo , listbox sont vide ( # "")
    ne pas tenir compte des label et des commandbutton
    j ai fais le test avec un commandbutton, un label , un textbox et une combo

    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
     
    Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call verif_ctrl
    End Sub
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call verif_ctrl
    End Sub
     
    Sub verif_ctrl()
    Dim ctrlvide As Boolean
    ctrlvide = False
    Dim ctrl As Control
    For Each ctrl In Me.Controls
        If InStr(ctrl.Name, "CommandButton") = 0 And InStr(ctrl.Name, "Label") = 0 Then
            If ctrl = "" Then ctrlvide = True
        End If
    Next
    If ctrlvide = False Then CommandButton1.Enabled = True
    End Sub
     
    Private Sub UserForm_Initialize()
    CommandButton1.Enabled = False
    End Sub

  9. #9
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    OK merci,
    je vais tester...

  10. #10
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    J'ai testé et j'ai un problème avec les optionbutton.

    Outre le fait qu'ils ne contiennent jamais de valeur, il y en a toujours dans le groupe qui ne sont pas sélectionné (un seul parmi tous).
    Donc problème...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 66
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim variation as boolean
    If (Optionbutton1.value = true and Optionbutton2.value = False and OptionButton3.value = False) Or  (Optionbutton1.value = False and Optionbutton2.value = False and OptionButton3.value = True) Or  (Optionbutton1.value = False and Optionbutton2.value = True and OptionButton3.value = False) then Variation = True
     
    If textbox1.text <> "" and variation = true then
    Commanbutton1.Locked = true
    End If
    Voila une idée bricole mais qui dépanne on fonctionne comme pour le language numérique à base de ou et de et.

    Bon courage

  12. #12
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Oui pourquoi pas, pour trois optionbutton :
    If (Optionbutton1.value = true and Optionbutton2.value = False and OptionButton3.value = False) Or (Optionbutton1.value = False and Optionbutton2.value = False and OptionButton3.value = True) Or (Optionbutton1.value = False and Optionbutton2.value = True and OptionButton3.value = False) then Variation = True
    mais pour huit ça devient un peu long...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 66
    Par défaut
    Huit alors là tu es dans le vista jusqu'au cou!!
    J'ai une idée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public variation as boolean
    Private Sub OptionButton1_Click()
    variation = true
    End Sub
    Tu remets ce code pour chaques boutons.En toute logique si tu clique sur un bouton c'est qu'il y en a forcément un sur les huit qui est actif(true)
    Et pour remettre en ordre à la fin sur un bouton valider ou quitter:
     
    Private Sub Commandbutton1_Click()
    variation = False
    End Sub
    et tu rajoute la fin du dernier code que je t'ai mis avant
    Oui je sais c'est une strategie un peu étrange

  14. #14
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    perso je ne comprends pas la serie des 3 options boutons, si l'un est true les autres sont false, alors si 1 ou 2 ou 3 est true cela doit suffire non ?

    maintenant regarde un peu plus profondement mon idée, finalement quelque soit le nombre de controle elle fonctionne

    je la detaille

    declaration en public d'une variable (exemple ctrl)
    à l'ouverture de usf (initialize) : mettre autant d'espaces necessaire que de controles à tester (12 contoles ---> 12 espaces)
    à chacun des controles, donner un index et utiliser les interruption de mise à jour
    pour les listbox, combobox, optionbouton les _change, pour les textbox les _exit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mon premier controle est un textbox
    if textbox1 > "" then mid(ctrl,1,1) = "x" else mid(ctrl,1,1) = " "
    if ctrl = string$(12,"x") then  call findesaisie ' tous les controls sont saisie
     
    mon 6 eme controle est un optionbouton
    du moment ou l'interuption est lancée, c'est que le choix est fait
    optionbouton_click ou _change
    mid(ctrl,6,1) = "x"
    if ctrl = string$(12,"x") then  call findesaisie ' tous les controls sont saisie

  15. #15
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    ça reste quand même un peu long (même avec copier/coller).
    je me demandai s'il n'y avait pas plus simple vue que ces optionbutton font partie d'un frame et qu'ils sont donc liés.

Discussions similaires

  1. CHANGER UN INDEX DE TABLESPACE
    Par gallargues dans le forum Administration
    Réponses: 2
    Dernier message: 09/04/2010, 10h45
  2. Dictionnaire : Changer l'index/clé
    Par badthings dans le forum Général Python
    Réponses: 15
    Dernier message: 03/02/2010, 22h02
  3. Changer les index de controles insérés dynamiquement
    Par BM42 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/10/2007, 14h49
  4. changer le index.htm
    Par pharaonline dans le forum Apache
    Réponses: 2
    Dernier message: 16/06/2006, 20h13

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