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 :

Cases à cocher automatiques [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 46
    Par défaut Cases à cocher automatiques
    Bonjour à tous,

    Je débute dans l'utilisation de VBA pour Excel et des macros et j'ai d'ores et déjà quelque chose qui me semble complexe à réaliser.

    Je souhaite qu'à l'ouverture de mon fichier automatiquement le premier onglet se remplisse de cases à cocher correspondants chacune à un fichier Excel annexes.
    En pratique je souhaite que le fichier effectue une recherche de tous les classeurs commençant par "blabla" dans le dossier toto et crée la case à cocher correspondante.

    Est-ce que cela vous parait faisable?
    Si oui pourriez vous m'orienter sur les techniques à utiliser car je suis un peu perdu!

    Merci d'avance

    gbbtt

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    oui c'est tout à fait faisable. En procédant par étape, tu pourras le faire. Les pistes pour l'instant :
    - exécution à l'ouverture du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    'code à l'ouverture
    End Sub
    - parcours des fichiers d'un répertoire
    http://access.developpez.com/faq/?pa...ep#contenu_rep
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    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 Workbook_Open()
        Dim Fich As String, Ctr As Long
        With Sheets(1)
            'boucle sur les fichiersFich = Dir("C:\toto\blabla*.xls")
            Do While Fich <> ""
                'on va en mettre toutes les deux cellules
                Ctr = Ctr + 2
                'Création de la case à cocher (largeur 100, hauteur 20, à 10 points du bord)
                Set cb = .CheckBoxes.Add(10, .Cells(Ctr, 1).Top, 100, 20)
                    'l'étiquette est le nom du fichier
                    cb.Caption = Fich
                    'la valeur est vide
                    cb.Value = xlOff
                    'la cellule liée est en colonne C
                    cb.LinkedCell = .Cells(Ctr, 3)
                Fich = Dir
            Loop
        End With
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 46
    Par défaut
    Merci pour les réponses Daniel et jpcheck.

    J'avais effectivement trouvé la fonction Workbook_Open mais la suite se compliquait je m'étais embarqué dans beaucoup trop compliqué!

    J'avais deux petites questions:

    - dans un premier temps je dois supprimer l'intégralité des objets de la page car si je laisse comme ca, à la réouverture si j'ai supprimer ou ajouter des fichiers les cases à cocher s'écrivent par dessus les précédentes.
    Je vois bien comment effacer les données (worksheet clear mais ça fonctionne pas pour les objets)


    - A quoi correspond la cellule liée?

    Merci encore pour votre aide


    Edit: J'ai trouvé comment supprimer les objets de la feuille. J'ai cependant un autre souci, la routine ne se lance pas au moment de l'ouverture. Je suis obligé de la lancer manuellement alors que lors de tests précédent cela fonctionnait. C'est peut être (surement?) dû au fait que je doive cliquer sur autoriser les macros au moment de l'ouverture non?

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'ai ajouté la suppression des checkboxes avant recréation. Elle fonctionne correctement :

    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
    Private Sub Workbook_Open()
        Dim Fich As String, Ctr As Long, Sh As Shape
        With Sheets(1)
            'suppression des checkboxes
            On Error Resume Next
            For Each Sh In .Shapes
                If Sh.FormControlType = xlCheckBox Then
                    Sh.Delete
                End If
            Next
            On Error GoTo 0
            'boucle sur les fichiers
            'Fich = Dir("C:\toto\blabla*.xls")
            Fich = Dir("C:\Users\Daniel\Documents\Donnees\Daniel\*.xls")
            Do While Fich <> ""
                'on va en mettre toutes les deux cellules
                Ctr = Ctr + 2
                'Création de la case à cocher (largeur 100, hauteur 20, à 10 points du bord)
                Set cb = .CheckBoxes.Add(10, .Cells(Ctr, 1).Top, 100, 20)
                    'l'étiquette est le nom du fichier
                    cb.Caption = Fich
                    'la valeur est vide
                    cb.Value = xlOff
                    'la cellule liée est en colonne C
                    cb.LinkedCell = .Cells(Ctr, 3).Address
                Fich = Dir
            Loop
        End With
    End Sub
    La cellule liée contient l'état du checkbox : VRAI si le checkbox est coché, FAUX dans le cas contraire. Elle n'est pas obligatoirement renseignée, mais permet parfois d'éviter du code en se servant de sa valeur pour tester l'état du checkbox dans une formule.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 46
    Par défaut
    Merci beaucoup Daniel

    C'est ce qu'il me semblait pour la cellule liée et je vais effectivement en avoir besoin pour la suite de mon travail.

    Reste le problème du lancement de Workbook_Open mais je crois que je pourrais pas passer outre le message d'activation des macros qui semble bloquer la fonction.
    S'il y a une solution je suis preneur, sinon tant pis je passe par un bouton c'est pas bien grave!

    gbbtt

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2014, 11h36
  2. [AC-2007] Case à cocher automatique?
    Par Joze28 dans le forum IHM
    Réponses: 39
    Dernier message: 13/02/2014, 21h06
  3. [AC-2010] Case à cocher automatique
    Par Kevin80 dans le forum IHM
    Réponses: 2
    Dernier message: 02/05/2011, 10h36
  4. Cocher automatiquement une case suivant une autre
    Par Noline dans le forum Access
    Réponses: 16
    Dernier message: 26/07/2006, 18h17
  5. peut on cocher, une case a cocher, automatiquement ?
    Par MCarole dans le forum Access
    Réponses: 19
    Dernier message: 17/07/2006, 14h25

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