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 :

Aide sur l'organisation d'une base de données comportant des macros


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Aide sur l'organisation d'une base de données comportant des macros
    Bonjour à vous,

    Je vous remercie d'ores et déjà du temps que vous accorderez à ce post émis par un non initié au langage VBA et aux macros.

    Je souhaite mettre en place une base de données qui recenserait l'ensemble des travaux élaborés sur différents niveaux du collège, alliant des disciplines différentes. Je suis persuadé que pour vous cela est d'une facilité déconcertante.

    J'aimerais que cette BD dispose d'un formulaire (ne connaissant pas les méandres de Useform j'ai préféré poser ce formulaire dans un onglet intitulé "rentrée des données". Dans mon esprit, après avoir rentré les renseignements, je souhaiterais que ceux-ci soient copiés dans un onglet intitulé "général" (dans cet onglet "général", un tableau réunissant les différentes données) en appuyant sur un bouton nommé "Enregistré et nouveau". "Nouveau" dans le sens où les données qui auront été placées dans l'onglet "général" depuis le formulaire seront effacées de ce formulaire après l'opération. Il faudrait qu'à la suite de cette action enregistrement, qu'une nouvelle colonne dans le tableau de l'onglet général se prépare à réceptionner les données des nouveaux enregistrements.

    Je sais au combien le temps est précieux. Je ne demande pas à ce que tout me soit mâché, mais quelques clefs qui me permettront de mieux appréhender les Macros et le langage VBA.

    Vous remerciant encore une fois pour l'aide apportée.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Points : 195
    Points
    195
    Par défaut
    Bonjour,

    Nous sommes nombreux à avoir lu ce post pour le moment, et, si aucune réponse ne t'est faite, c'est que si tu veux utiliser les userforms, et que nous devons t'apprendre tout... on a du boulot !

    Sinon, dans un premier temps tu peux te servir de ton formulaire actuel.
    J'ai noté que tu maitrisais les listes déroulantes, c'est déjà une bonne chose. Après si les listes sont liées les unes aux autres, il faut faire du code... soit rattaché à ton onglet actuel, soit effectivement en passant par un USF... ce que je vais éviter... faire simple ds un premier temps...

    Au plus simple,
    1) ta base de données d'atterrissage doit se présenter par LIGNE et non par COLONNE ...
    Car plus facile à terme à utiliser (tri, filtre, tableau croisé dynamique, les limites d'enregistrement sont plus grandes, ... ou tout simplement, parce que c'est comme ça qu'il faut le faire)
    D'ailleurs, pourquoi veux-tu numéroter les oeuvres ? oeuvre 1, 2, ... est-ce vraiment nécessaire ?

    2)tu vas dans l'éditeur Visual Basic, tu ajoutes un module, et tu copies le texte ci-dessous.
    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
     
    sub EnregistrementOeuvre
     
    'calcul le nb de ligne de ta bdd afin de connaitre la prochaine ligne vierge
    i = thisworkbook.worksheets("général").currentregion.rows.count + 1
     
    'en supposant qu'en "A1" de Général tu aies "année scolaire"
    'enregistrement de la donnée
    thisworkbook.worksheets("général").range("A" & i) = thisworkbook.worksheets("rentrée des données").range("B4") 
     
    'mise à vide de la case existante
    thisworkbook.worksheets("rentrée des données").range("B4") =""
     
    'en supposant qu'en "B1" de Général tu aies "Niveau"
    'enregistrement de la donnée
    thisworkbook.worksheets("général").range("B" & i) = thisworkbook.worksheets("rentrée des données").range("F4") 
     
    'mise à vide de la case existante
    thisworkbook.worksheets("rentrée des données").range("F4") =""
     
    end sub
    3) tu cliques droit sur ton bouton "enregistrer" et tu "affectes une macro" => celle que tu viens d'écrire... et tu adaptes en fonction de tes cellules

    4) attention : ton fichier devra être un .xlsm pour supporter les macros


    Je n'ai pas écrit tout le code... mais après, il faut juste dupliquer... et, avec cela, tu devrais déjà avoir qq chose de probant

    Bon courage

    A+
    Elise
    Sinon... le site propose de nombreux tutoriels afin de monter en compétences sur VBA

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci à toi Lilou51 pour ces éléments me permettant d'avancer dans la compréhension du langage, encore nébuleux pour moi, de la programmation VBA.
    Tes explications ont été très claires, merci.

    Malheureusement, la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = thisworkbook.worksheets("général").currentregion.rows.count + 1
    refuse de s'exécuter. Excel m'affiche une
    "erreur d'exécution 438. Propriété ou méthode d'exécution non gérée par cet objet"

    s'affiche à l'exécution de la macro.

    Sinon, j'arrive à comprendre, d'une manière assez grossière, les quelques lignes de codes de cette BDD.

    Merci encore une fois pour ton aide passée et je l'espère à venir.

    A bientôt,

    Lilian

  4. #4
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Points : 195
    Points
    195
    Par défaut
    Bonjour Lilian,

    Désolée pour cette étourderie de ma part, la ligne a pour objectif de savoir le nb d'enregistrements actuels avant d'en rajouter un... et j'ai oublié de cibler la cellule de départ (en haut à gauche de la BDD): range("A1")

    Ce qui nous donne en annule et remplace du précédent :


    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
    sub EnregistrementOeuvre
    'calcul le nb de ligne de ta bdd afin de connaitre la prochaine ligne vierge
    i = thisworkbook.worksheets("général").range("A1").currentregion.rows.count + 1
     
    'en supposant qu'en "A1" de Général tu aies "année scolaire"
    'enregistrement de la donnée
    thisworkbook.worksheets("général").range("A" & i) = thisworkbook.worksheets("rentrée des données").range("B4") 
     
    'mise à vide de la case existante
    thisworkbook.worksheets("rentrée des données").range("B4") =""
     
    'en supposant qu'en "B1" de Général tu aies "Niveau"
    'enregistrement de la donnée
    thisworkbook.worksheets("général").range("B" & i) = thisworkbook.worksheets("rentrée des données").range("F4") 
     
    'mise à vide de la case existante
    thisworkbook.worksheets("rentrée des données").range("F4") =""
     
    end sub
    Ca devrait aller mieux
    Elise

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour Elise,

    Ça fonctionne parfaitement. Je te remercie de ton aide rapide et efficace.

    Dommage, tu n'habites pas dans le coin, je t'aurais bien proposé de prendre un pot. Cela dit si tu passes dans le Nord, t'es la bienvenue.

    Merci encore pour le temps passé.

    À bientôt

    Lilian

  6. #6
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Points : 195
    Points
    195
    Par défaut
    Hello Lilian !

    Ravie d'avoir pu te rendre service !

    N'oublie pas de renseigner ta discussion comme "résolue"

    Tant pis pour le pot :-) suis un peu loin effectivement !

    Bon courage,

    Elise

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2014, 13h10
  2. [2008R2] aide urgente sur la connexion d'une base de donnée sql server et phpadmin dans Xampp
    Par mvictorinesonia dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/08/2014, 09h04
  3. [AC-2000] Aide sur le départ d'une base de données Access
    Par zanou666 dans le forum Modélisation
    Réponses: 1
    Dernier message: 27/01/2010, 20h25
  4. Réponses: 6
    Dernier message: 06/07/2009, 09h33
  5. Aide sur divers problèmes dans une base
    Par flower dans le forum Access
    Réponses: 10
    Dernier message: 08/06/2006, 18h25

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