Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Sondages et Débats
Sondages et Débats Forum destiné à recevoir les échanges, avis et sondages autour de la technologie Access.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2007, 10h43   #1
Membre actif
 
Sandrine
Inscription : septembre 2006
Messages : 317
Détails du profil
Informations personnelles :
Nom : Sandrine
Âge : 31
Localisation : Belgique

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2006
Messages : 317
Points : 170
Points : 170
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
p'tite Sandrine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h14   #2
Expert Confirmé
 
Inscription : mai 2005
Messages : 3 419
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3 419
Points : 3 768
Points : 3 768
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 ?
random est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h18   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
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
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h32   #4
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 236
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 236
Points : 9 922
Points : 9 922
Envoyer un message via Skype™ à Domi2
Bonjour,

Citation:
- 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 :
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 :
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
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h32   #5
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 884
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 884
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
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
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h52   #6
Membre actif
 
Sandrine
Inscription : septembre 2006
Messages : 317
Détails du profil
Informations personnelles :
Nom : Sandrine
Âge : 31
Localisation : Belgique

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2006
Messages : 317
Points : 170
Points : 170
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?
p'tite Sandrine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h55   #7
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
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
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 12h33   #8
Membre actif
 
Sandrine
Inscription : septembre 2006
Messages : 317
Détails du profil
Informations personnelles :
Nom : Sandrine
Âge : 31
Localisation : Belgique

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2006
Messages : 317
Points : 170
Points : 170
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
p'tite Sandrine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 13h20   #9
Membre actif
 
Sandrine
Inscription : septembre 2006
Messages : 317
Détails du profil
Informations personnelles :
Nom : Sandrine
Âge : 31
Localisation : Belgique

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2006
Messages : 317
Points : 170
Points : 170
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
p'tite Sandrine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h05.


 
 
 
 
Partenaires

Hébergement Web