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 :

Formulaire à l'ouverture du classeur, cases à cocher


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Points : 163
    Points
    163
    Par défaut Formulaire à l'ouverture du classeur, cases à cocher
    Bonjour,

    A l'ouverture de mon classeur je souhaiterai que les utilisateurs est le choix entre deux activités qui lancera l'ouverture de InputBox afin d'ouvrir les feuilles correspondantes.

    Comment puis-je écrire le code vba pour ce userform ?

    Merci!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bonjour,

    Il faut utiliser l'évenement Workbook.Open :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Workbook_Open()
      UserForm.Show
    End Sub
    Cdt
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Points : 163
    Points
    163
    Par défaut
    Bonjour!

    Merci, donc si j'ai bien compris, ce code sert à afficher l'userform que j'aurai préalablement créé ?
    comment écrire l'userform pour qu'il m'envoie sur une feuille spécifique lorsque j'ai coché une des cases puis appuyé sur un bouton ok ?

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour,
    dans ton userform puisque tu as deux activités, utilises des optionbuttons car il n'y a pas de risque de valider les deux en même temps. c'est soit un, soit l'autre.

    ensuite dans ton userform dans le code du bouton tu met ceci:
    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
    Private Sub CommandButton1_Click()
    'si l'optionbutton 1 est cliqué alors
    If Me.OptionButton1.Value = True Then
     'affiche "Feuil1"
     Sheets("Feuil1").Activate
     
    'si l'option button 2 est cliqué alors
    ElseIf Me.OptionButton2 = True Then
     'affiche Feuil2   
     Sheets("Feuil2").Activate
    End If
     
    'ferme l'userform
    Unload Me
    End Sub
    voilà le principe

    EDIT : à lire pour faire des userforms : tuto 1
    pour utiliser les contrôles dans un userform : tuto 2
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Points : 163
    Points
    163
    Par défaut
    Merci!

    J'étais justement en train de lire ces tutos!
    Si je souhaite mettre un bouton Ok et un bouton annuler, je dois utiliser une condition IF ? dès le départ ?

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Points : 163
    Points
    163
    Par défaut
    Re!

    J'ai réussi à faire mon premier UserForm ("Accueil") qui doit ouvrir les UserForms "Bureau" ou "Employé" selon le choix fait sur l'OptionButton. Mais cela ne fonctionne pas. Puis-je vous demander votre aide ?
    je vous joint mon fichier!

    Merci d'avance
    Fichiers attachés Fichiers attachés

  7. #7
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    re voici comment tu dois présenter tes codes:
    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 Accueil_Initialize()
    Me.OptionButton1.Value = False
    Me.OptionButton2.Value = False
    End Sub
     
    Private Sub CommandButton1_Click()
     'si l'optionbutton 1 (remplir une nouvelle fiche) est coché alors
    If Me.OptionButton1.Value = True Then
        'ferme l'userform
        Unload Me
        'affiche l'UserForm "Employé"
        Employé.Show
     
    'si l'option button 2 (consulter des fiches) est coché alors
    ElseIf Me.OptionButton2 = True Then
        'ferme l'userform
        Unload Me
        'affiche l'UserForm "Bureau"
        Bureau.Show
    End If
    End Sub
     
    Private Sub CommandButton2_Click()
    'ferme le classeur sans sauvegarder
    ThisWorkbook.Close False
    End Sub
    Une remarque évite d'utiliser des noms avec des Accents "employé" c'est parfois cause de problème.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  8. #8
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Points : 163
    Points
    163
    Par défaut
    Merci! ça fonctionne!

    j'aurai une autre question,

    l'userform "employéé demande un mot de passe (j'ai réussi à l'écrire) puis ouvre une InputBox qui demande la date du jour. (varibale DateJour)
    Elle propose par défaut la date du jour de manière à rendre plus rapide l'ouverture de la fiche puis que celle-ci ne se fera qu'une fois par jour.
    Comment faire pour vérifier que la date a été écrite au bon format dans le cas où la personne taperai elle-même la date ?

    Sinon merci beaucoup! je commence à me débrouiller un peu plus toute seule!

  9. #9
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    je ne vois pas l'utilité de proposer de saisir une date si celle-ci doit toujours être la date du jour.
    Tu n'as qu'a mettre cette date directement dans ta variable "DateJour"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DateJour As Date
    DateJour = Date
    Cela évitera bien des erreurs, des lignes de code de contrôle et de formatage et tu peux te servir de ta variable comme tu le souhaites.

    exemple j'affiche la Date du jour dans un msgbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim DateJour As Date
    DateJour = Date
    msgbox "Nous sommes le " & DateJour
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  10. #10
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Points : 163
    Points
    163
    Par défaut
    Re!

    En effet cette une très bonne remarque!
    Je vous joins le code et sa suite qui permet de créer une nouvelle feuille à la fin de classeur dont le nom reprend la date du jour. Je me suis aidée d'un tuto que j'ai trouvé sur internet mais il y a pas mal de code "On Error Go To" et j'aimerai avoir un avis sur la cohérence de l'ensemble!

    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
     Private Sub CommandButtonOK_Click()
    'La personne a appuyé sur le bouton ok
     
        If TextBox1 = "EMPLOYE" Then 'Vérifie le mot de passe tapé
            TextBox1 = "" 'Vide la case de saisie
            Unload Employe 'ferme l'userform "Employe"
     
                Dim DateJour As Date
                DateJour = Format(Date, "dd mmmm yyyy")
                MsgBox "Nous sommes le" & DateJour, vbOKOnly + vbInformation, "Ouverture d'une nouvelle fiche"
                    'La boite de dialogue affiche le message et le titre définit précédemment et donne la date du jour
     
     
                Sheets("Fiche").Copy After:=Sheets(Sheets.Count)
                    'Ajoute une copie de la feuille "Fiche" à la fin du classeur.
     
                On Error GoTo S 'Si une erreur se produit dans la ligne qui _
                    suit, elle est ignorée, et l'exécution continue à la ligne _
                    suivante après le traitement de l'erreur (ligne S).
     
                Sheets(Sheets.Count).Name = Format(DateJour, "dd mm yyyy")
                '...renomme la feuille créée avec la date du jour, contenue dans la variable DateJour _
                Si ce nom existe déjà dans le classeur, une erreur se produit. Grâce à la ligne précédente cette erreur _
                est ignorée et l'exécution du code continue.
     
    E:          On Error GoTo 0 'A partir d'ici, les éventuelles erreurs ne sont plus _
                    ignorées.
     
    Exit Sub
     
          'Suppression de la feuille créée si une erreur survient.
    S:     With Application: .DisplayAlerts = False: Sheets(Sheets.Count).Delete: .DisplayAlerts = True: End With
        Resume Next
     
        Else 'Message d'erreur si le mot de passe tapé est incorrect
            MsgBox "Mot de passe invalide", vbOKOnly + vbExclamation, "ERREUR"
            TextBox1 = "" 'Vide la case de saisie
     
        End If
     
    End Sub

Discussions similaires

  1. Calcul dans un formulaire avec des if et case à cocher
    Par CrasherSEP dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/04/2014, 16h20
  2. [AC-2003] Formulaire listes déroulantes + système de cases à cocher
    Par Skiitle dans le forum IHM
    Réponses: 2
    Dernier message: 16/04/2012, 15h10
  3. Réponses: 4
    Dernier message: 12/12/2008, 07h28
  4. Réponses: 11
    Dernier message: 08/07/2007, 17h32
  5. Mettre plusieurs case à cocher un après l'autre (formulaire)
    Par hstlaurent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 29/06/2005, 08h48

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