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

Sondages et Débats Discussion :

Question générale: Macro><VBA


Sujet :

Sondages et Débats

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut Question générale: Macro><VBA
    Bonjour le forum,

    Voilà aujourd'hui pas de problèmes a s'arracher les cheveux!

    Juste de petites questions pour complêter ma formation...

    Je sais déjà que la macro est plus rigide et plus limitée que le code VBA mais
    - au niveau de l'éxécution et du poid d'une BD qu'est ce qui est le plus rapide et le plus léger?

    J'ai des problèmes avec l'installation de l'aide access (F1)
    - seriez-vous m'indiquer un endroit ou je puisse trouver la liste des actions et possibilité des macros?

    - Si vous avez tout autres renseignements sur les avantage et les inconvenients des macro par rapport au VBa je suis preneuse...

    Merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Le gros avantage de la macro est sa facilité de mise en œuvre.

    Supposons que tu aies une application avec des sous modules de saisie, édition, visualisation, traitement, édition, import/export de données.

    Un simple jeu de formulaire faisant appel à un jeu de macro te permet de mettre en œuvre ton application sans une ligne de code (ou un nombre réduit de fonctions personnalisées).

    Un traitement constitué d'une requête création de table, suivi de deux ou trois requêtes mise à jour sera délégué à une macro qui enchaînera les requêtes, l'avantage c'est que les requêtes restent plus faciles à maintenir et à créer que la solution fastidieuse par programmation
    Début en qbe, puis finition en sql, copie sous module, interfacage paramètres fonctions paramètres fonctions, transformation des guillemets et déboguage.

    On peut diviser par cinq ou six le temps de développement.

    La maintenance est aussi très aisée, il suffit de lancer la macro et de repérer le maillon défaillant.

    Les performances sont identiques ou peu altérées.

    Ceci étant c'est une position assez iconoclaste, il est politiquement correct de préférer le développement.
    Elle est pas belle la vie ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    J'ai abondonné les macros depuis longtemps, pour plusieurs raisons :

    1 - pas de gestion d'erreur efficace (voir inexistante).
    2 - ne permet pas de gérer des variables.

    Comme le dit random, l'avantage : simplicité et rapidité, mais hélas beaucoup trop limité.

    Starec

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    - au niveau de l'éxécution et du poid d'une BD qu'est ce qui est le plus rapide et le plus léger?
    N'ayant aucune formation de base en informatique, j'avais commencé par utiliser des macros. J'ai passablement tardé à passer à VBA, et aujourd'hui, je m'en mord un peu les doigts...

    Pour les questions que tu soulèves, je n'ai pas de réponse, mais j'imagine que le VBA est plus rapide... Quant à la question du poids, est-ce que ça a vraiment beaucoup d'importance ?

    Ce que j'en retiens principalement, c'est qu'en plus d'être beaucoup plus limitées, les macros n'autorisent aucune gestion d'erreur... Et ça, pour déployer une application dans un milieu professionnel, j'estime que c'est rédhibitoire... Mais cela n'engage que moi...

    Au niveau de l'aide, il y'a éventuellement possibilité d'utiliser la macro Autokeys.

    J'ai tout de même préféré la solution VBA. Sur chaque formulaire mettre la propriété Aperçu des touches à Oui :

    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
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
     
    On Error GoTo GestionErreurs
     
    'Si la touche F1 est appuyée, on lui attribue 0 afin de ne pas afficher l'aide
    'Access, puis on affiche l'aide de l'application
    If KeyCode = vbKeyF1 Then
     
        KeyCode = 0
     
        'Ici, on affiche l'aide de l'application avec la fonction appropriée
        AfficherAide
     
        End If
     
    Exit Sub
     
    ....
     
    End sub
    Fonction :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Public Function AfficherAide()
    '--------------------------------------------------------------------------------------------
    ' Projet        : Environnement application
    ' Auteur        : Inconnu
    ' Version       : 1.0
    ' Révision      : -
    ' Commentaires  : Permet d'afficher le fichier d'aide dans sa propre fenêtre, et non dans
    '                 celle d'Access (bug reconnu par Microsoft)
    ' Lien          : http://www.france.fast-help.com/AideEnLigne/index.html?MSAccessHelpMixup
    '--------------------------------------------------------------------------------------------
     
        On Error GoTo GestionErreurs
     
        Dim strFichierAide As String
        Dim lngContexteAideId As Long
     
        'Vérification de l'existence du fichier d'aide
        If gobjApplication.NomFichierAide = "" Then
     
            'Affichage d'un message
            strTexteMessage = LoadRTFFile(gobjApplication.RepertoireMessages & "SysFichierAide.txt")
     
            Call MsgBoxEx(strTexteMessage, vbCritical + vbOKOnly, gobjApplication.Nom, , , _
                 RGB(255, 255, 255), 360, , "", False)
     
            'Quitte la fonction
            Exit Function
     
        End If
     
        strFichierAide = CurrentProject.Path & "\Aide\" & gobjApplication.NomFichierAide
     
        'Vérification des contextes d'aide
        If Screen.ActiveForm.ActiveControl.Properties("HelpContextId") > 0 Then
     
            'Si le contexte du contrôle actif > 0, on utilise le contexte du contrôle
            lngContexteAideId = Screen.ActiveForm.ActiveControl.Properties("HelpContextId")
     
        Else
     
            'C'est le contexte du formulaire actif qui est utilisé
            lngContexteAideId = Screen.ActiveForm.Properties("HelpContextId")
     
        End If
     
        Select Case lngContexteAideId
     
            Case 0
     
                hwndHelp = HtmlHelp(Application.hWndAccessApp, strFichierAide, HH_DISPLAY_TOPIC, lngContexteAideId)
     
            Case Else
     
                hwndHelp = HtmlHelp(Application.hWndAccessApp, strFichierAide, HH_HELP_CONTEXT, lngContexteAideId)
     
        End Select
     
        Exit Function
     
    GestionErreurs:
     
        'Récupération du numéro d'erreur et de la description
        intNumeroErreur = Err.Number
        strDescriptionErreur = Err.Description
     
        Err.Raise intNumeroErreur, "clsApplication - AfficherAide", strDescriptionErreur
     
    End Function
    Le code est un petit peu à adapter dans la mesure ou j'utilise une propriété d'une classe et non une variable pour le nom du fichier d'aide...

    Le code original se trouve dans le lien en entête.

    Je cherche encore une possibilité d'intercepter l'appui de la touche F1 n'importe où dans l'application pour éviter d'avoir à coder tous mes formulaires... Ce doit être possible en passant par les API, mais je n'ai encore rien trouvé de satisfaisant...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 265
    Points
    34 265
    Par défaut
    Je vais aussi dans le même sens, pour une raison toute simple, je ne sais pas me servir de l'interface graphique d'access pour créer des macros, rien que du code
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    bonjour Random et Starec,

    Merci pour vos précisions.

    En fait j'ai obtenu une formation en Access avancé et on est en train de voir les macros.
    Je me suis donc rendue compte que certaines des commandes VBA que j'utilisais régulièrement existait sous forme de macro.

    Comme je n'avais pas eu jusqu'a présent de véritable formation et que j'ai appris le plus gros de ce que je sais ici même, j'ai plutot travaillé en VBA mais certaines de mes BD deviennent lourdes. (probablement un manque d'optimisation)

    Je me renseigne donc en vue d'essayer d'alleger celles-ci et d'accélérer leur éxecution.

    Est-ce que vous me conseilleriez de tenter de remplacer mes commande simple (genre bouton impression ou ouverture d'un autre formulaire) par des macros et de garder les commandes plus complexes en VBA?
    Celà pourrait-il m'aider?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Pour la lisibilité d'une application il faut mieux n'utiliser qu'un type Macro ou VBA.

    Pour information tu peux traduire tes macros en VBA (Dans Outils/Macro/Convertir les macros en VBA).

    Starec

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Ok,

    Donc a partir du moment où dans ma BD j'ai du code que je ne sais pas convertir en macro je suis mieux de tout laisser en VBA et de trouver un moyen d'obtenir une formation en VBA pour apprendre a optimaliser mon code.

    merci a tous

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Hé bien,

    C'est pas gagné d'avance que j'arrive à en obtenir une mais bon au moins je sais ce qui me reste a faire.

    Encore un tout grand merci à tous.
    l'équipe est vraiment

    A bientot
    La P'tite Sandrine

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

Discussions similaires

  1. [LDAP] Questions générales sur LDAP
    Par guiguisi dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 25/05/2005, 10h05
  2. VUES : questions générales
    Par Equus dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/10/2004, 10h37
  3. question générale sur les conteneurs
    Par tut dans le forum C++
    Réponses: 6
    Dernier message: 01/09/2004, 10h11
  4. Question générale sur les affectations ?
    Par Clemaster dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2004, 17h03
  5. [SGBD]Questions générales.
    Par Mobaladje dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 21/05/2004, 19h19

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