Sommaire > 2. Exemples de macros commandes

2. Exemples de macros commandes

Une macro commande est une nouvelle commande ajoutée au logiciel. Elle exécute une ou plusieurs actions.

2.1. Microsoft Word

2.1.1. Commande qui permet d'inverser deux caractères

Enregistrement de la macro :

On veut créer une commande qui inverse les caractères qui entourent le curseur. Pour ce faire, on va utiliser l'enregistreur de macro[1]. Celui-ci est un outil intégré qui crée le code (les instructions) VBA. Il enregistre toutes les actions réalisées dans le projet associé au document (ici Normal.dot). Voici la procédure à suivre :

  • 1 Nouvelle macro... / Macro / Outils
    Indiquer le nom de la macro « InverserC » ainsi qu'une brève description de celle-ci :



    Attribuer le raccourci clavier « Alt+i » à la macro :
    Cliquer sur l'icône « Clavier » et choisir le raccourci : « Alt+i »



    Puis les boutons « Attribuer » et « Fermer ».
    L'indicateur « ENR » apparaît dans la barre d'état, et la barre d'outils « Arrêt de l'enregistrement » est affichée :



    ← Début de la macro →
  • 2 Sélectionner le caractère à gauche du curseur (Maj+←)
  • 3 Couper / Edition
  • 4 Se déplacer d'un caractère vers la droite (→)
  • 5 Coller / Edition

    ← Fin de la macro →
  • 6 Arrêter l'enregistrement / Macro / Outils ou le bouton arrêt de la barre d'outils « Arrêt de l'enregistrement ».

Exécution de la macro :

Pour exécuter cette macro, il faut placer le curseur entre les deux caractères à inverser et choisir la commande :

  • 1 Macros... / Macro / Outils puis choisir la macro « InverserC » puis le bouton « Exécuter »
    ou
  • 2 Le raccourci clavier « Alt+i ».

Le code VBA :

Les commandes 2 à 5 ont été traduites en instructions VBA. Pour obtenir le code ainsi généré, on peut procéder de la façon suivante :

  • 1 Macros... / Macro / Outils puis choisir la macro « InverserC » puis le bouton « Modifier »

Voici le texte de la macro :

Sub InverserC()
'
' InverserC Macro
' Inverse les caractères qui entourent le curseur
'                                       (Alt+i).
'
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, _
        Extend:=wdExtend
    Selection.Cut
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.Paste
End Sub

2.1.2. Commande qui permet d'inverser deux mots

Création du code de la macro :

On veut créer une commande qui inverse les deux mots qui entourent le curseur. Pour ce faire, on va utiliser Visual Basic Editor. Voici la procédure à suivre :

  • 1 Visual Basic Editor ... / Macro / Outils
  • 2 Copier puis Coller la macro « InverserC »
  • 3 Modifier le code de la macro comme suit (les modifications sont soulignées) :
Sub InverserM()
'
' InverserM Macro
' Inverse les deux mots qui entourent le curseur
'                                      (Alt+Maj+i).
'
    Selection.MoveLeft Unit:=wdWord, Count:=1, _
        Extend:=wdExtend
    Selection.Cut
    Selection.MoveRight Unit:=wdWord, Count:=1
    Selection.Paste
End Sub

Modification de la description de cette macro et ajout d'un raccourci clavier :

  • 1 Description de la macro :
    Macros... / Macro / Outils, choisir la macro « InverserM », modifier la description : « Inverse les deux mots qui entourent le curseur (Alt+Maj+i). » puis valider (« Return » puis « Annuler »)
  • 2 Raccourci clavier :
    Personnaliser... / Outils et choisir le bouton « Clavier... »
    Choisir « Macros » et « InverserM »,
    puis le raccourci : « Alt+Maj+i ».
    Terminer avec les boutons « Attribuer » et « Fermer ».
    puis de nouveau le bouton « Fermer »


Exécution de la macro :

Pour exécuter cette macro, il faut placer le curseur entre les deux mots à inverser (juste après l'espace) et choisir la commande :

  • 1 Macros... / Macro / Outils puis choisir la macro « InverserM » puis le bouton « Exécuter »
    ou
  • 2 Le raccourci clavier « Alt+Maj+i »

Création d'un bouton

Une autre méthode pour utiliser une macro consiste à utiliser un bouton qui va appeler la macro.

  • 1 Personnaliser... / Outils
  • 2 Créer une nouvelle barre d'outils ou utiliser une barre d'outils existante.
    Pour créer une nouvelle barre d'outils, choisir l'onglet « Barre d'outils », le bouton « Nouvelle... » et valider :


  • 3 Choisir l'onglet : « Commandes », la catégorie « Macros » et la commande « Normal.NewMacros.InverserM »,
  • 4 Faire glisser cette commande dans la barre d'outils, modifier éventuellement le nom du bouton ainsi créé (choisir le bouton « Modifier la sélection... ») et valider :

2.2. Microsoft Excel

2.2.1. Commande qui permet de générer un graphique

Cette macro :

  • Calcule la fréquence d'apparition des âges des personnes du tableau A3:C18 à l'aide d'un tableau croisé dynamique.
  • Représente ces fréquences sous forme d'histogramme.


Version Office 97
Version Office 2000

2.2.2. Enregistrement de la macro (Office 97) :

Voici la marche à suivre :

  • 1 Nouvelle macro... / Macro / Outils
    Indiquer le nom de la macro « Graphique », le raccourci clavier « g » ainsi qu'une brève description de celle-ci, puis valider :



    L'indication « Enregistrement » apparaît dans la barre d'état, et la barre d'outils « Arrêt de l'enregistrement » est affichée :



    ← Début de la macro →
  • 2 Sélectionner la cellule A3
  • 3 Création du tableau croisé dynamique :
    Choisir la commande : Rapport de tableau croisé dynamique... / Données
    à l'aide du bouton « Suivant », aller à l'étape 3
    et glisser les boutons :
    « Age » dans la zone « Ligne » et « Nom » dans la zone « Données »



    passer ensuite à l'étape 4 où il faut choisir : « Feuille existante » et la cellule E1 (« Données!$E$1 »), puis valider (« Fin »)


  • 4 Regroupement des résultats par classe d'âges :
    sélectionneur le bouton « Age »
    choisir le bouton « Grouper » et indiquer 20, 80 comme âges début et fin et 10 comme pas, puis valider (« Fin »).


  • 5 Supression de la ligne « Total » :
    dans la barre d'outils « Tableau croisé dynamique », choisir le menu « Options... » et dans « Mise en forme », supprimer « Totaux des colonnes » (enlever la coche), puis valider (« Ok »).




  • 6 Activer le bouton « Sélectionner un intitulé et des données »


    (dernier bouton de la barre d'outils « Tableau croisé dynamique »).
  • 7 Générer un histogramme : touche (Assistant graphique) :
    à l'étape 1, choisir : « Histogramme »
    à l'étape 3, choisir l'onglet « Titre » et indiquer :
    Titre du graphique : « Histogramme »
    Axe des abscisses : « Age »
    Axe des ordonnées : « Fréquence »
    Choisir l'onglet « Légende » et supprimer la légende
    à l'étape 4, choisir :



    puis valider : bouton « Fin ».
  • 8 Modifier la couleur des séries :
    Sélectionner la série de données (un clic sur la série),
    Série de données sélectionnée... / Format, onglet « Options », cocher la case « Variation de couleurs par point » et valider
  • 9 Sélectionner la cellule A1
    ← Fin de la macro →
  • 10 Arrêter l'enregistrement / Macro / Outils ou le bouton arrêt de la barre d'outils « Arrêt de l'enregistrement ».

Exécution de la macro :

Pour exécuter cette macro, choisir la commande :

  • 1 Macros... / Macro / Outils puis choisir la macro « Graphique » puis le bouton « Exécuter »
    ou
  • 2 Le raccourci clavier « Ctrl+g ».

Le code VBA :

Les commandes 2 à 9 ont été traduites en instructions VBA. Pour obtenir le code ainsi généré, on peut procéder de la façon suivante :

  • 1 Macros... / Macro / Outils puis choisir la macro « Graphique » puis le bouton « Modifier »

Voici le texte de la macro :

Sub Graphique()
'
' Génération d'un graphique
'
' Touche de raccourci du clavier: Ctrl+g
'
    Range("A3").Select
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, _
        SourceData:="Données!R3C1:R18C3", _
        TableDestination:="R1C5", _
        TableName:="Tableau croisé dynamique1"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        AddFields RowFields:="Age"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotFields("Nom").Orientation = xlDataField
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotSelect "Age[Tous]", xlLabelOnly
    Selection.Group Start:=20, End:=80, By:=10
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotSelect "Age[Tous]", xlLabelOnly
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        ColumnGrand = False
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotSelect "Age[Tous]", xlDataAndLabel
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData _
        Source:=Sheets("Données").Range("E2:F6"), _
        PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, _
        Name:="Données"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Histogramme"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle. _
            Characters.Text = "Age"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle. _
            Characters.Text = "Fréquence"
    End With
    ActiveChart.HasLegend = False
    ActiveChart.SeriesCollection(1).Select
    With ActiveChart.ChartGroups(1)
        .Overlap = 0
        .GapWidth = 150
        .HasSeriesLines = False
        .VaryByCategories = True
    End With
    ActiveWindow.Visible = False
    Windows("Histo.xls").Activate
    Range("A1").Select
End Sub

Standardisation de la macro (Office 97) :

  • Si on exécute plusieurs fois cette macro, on aura :
  • plusieurs graphiques superposés. On va donc supprimer le graphique incorporé, avant de générer l'histogramme.
  • le message :


    il faut donc supprimer le tableau croisé dynamique.
  • La macro utilise toujours la plage A3:C18 pour générer le tableau croisé dynamique (SourceData:="Données!R3C1:R18C3").
  • Le graphique sera toujours dessiné à partir des cellules E1:F6 (Source:=Sheets("Données").Range("E2:F6")).
  • Le titre de l'axe des abscisses doit faire référence à la date du traitement (c'est-à-dire le contenu de la cellule A1).

Voici comment procéder :

  • 1 On ajoute les instructions suivantes au début de la procédure :
    ActiveSheet.ChartObjects.Delete
    If ActiveSheet.PivotTables.Count = 1 Then
        ActiveSheet.PivotTables(1).PivotSelect "", _
            xlDataAndLabel
        Selection.Delete Shift:=xlUp
    End If
  • Ces instructions vont supprimer l'histogramme et le tableau croisé dynamique.
  • 2 On adapte les deux premières instructions de la version enregistrée par les lignes suivantes. Ces modifications permettent de sélectionner la zone des données. Si on ajoute ou supprime des lignes, la plage de données, elle aussi, sera adaptée :
    Range("A3").Select
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, _
        SourceData:="Données!R3C1:R18C3", _
        TableDestination:="R1C5", _
        TableName:="Tableau croisé dynamique1"
par
    Range("A3").Select
    Selection.CurrentRegion.Select
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, _
        SourceData:=Selection, _
        TableDestination:="R1C5", _
        TableName:="Tableau croisé dynamique1"
  • 3 Supprimer l'instruction :
    ActiveChart.SetSourceData _
        Source:=Sheets("Données").Range("E2:F6"), _
        PlotBy:=xlColumns
  • 4 Pour modifier le titre de l'axe des abscisses, modifier l'instruction suivante :
    With ActiveChart
        . . .
        .Axes(xlCategory, xlPrimary).AxisTitle. _
            Characters.Text = "Age"
Comme ceci :
    With ActiveChart
        . . .
        .Axes(xlCategory, xlPrimary).AxisTitle. _
            Text = "=Données!R1C1"

Voici le texte de la macro modifiée :

Sub Graphique()
'
' Génération d'un graphique
'
' Touche de raccourci du clavier: Ctrl+g
'
'   Suppression du graphique
    ActiveSheet.ChartObjects.Delete
'   Suppression du tableau croisé dynamique
    If ActiveSheet.PivotTables.Count = 1 Then
        ActiveSheet.PivotTables(1).PivotSelect "", _
            xlDataAndLabel
        Selection.Delete Shift:=xlUp
    End If
'   Création du tableau croisé dynamique
    Range("A3").Select
    Selection.CurrentRegion.Select
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, _
        SourceData:=Selection, _
        TableDestination:="R1C5", _
        TableName:="Tableau croisé dynamique1"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        AddFields RowFields:="Age"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotFields("Nom").Orientation = xlDataField
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotSelect "Age[Tous]", xlLabelOnly
    Selection.Group Start:=20, End:=80, By:=10
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotSelect "Age[Tous]", xlLabelOnly
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        ColumnGrand = False
'   Création de l'histogramme
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotSelect "Age[Tous]", xlDataAndLabel
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.Location Where:=xlLocationAsObject, _
        Name:="Données"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Histogramme"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle. _
            Text = Text = "=Données!R1C1"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle. _
            Characters.Text = "Fréquence"
    End With
    ActiveChart.HasLegend = False
    ActiveChart.SeriesCollection(1).Select
    With ActiveChart.ChartGroups(1)
        .Overlap = 0
        .GapWidth = 150
        .HasSeriesLines = False
        .VaryByCategories = True
    End With
    ActiveWindow.Visible = False
'
    Windows("Histo.xls").Activate
    Range("A1").Select
End Sub
Suite...
Version Office 2000

2.2.3. Enregistrement de la macro (Office 2000) :

Voici la marche à suivre :

  • 1 Nouvelle macro... / Macro / Outils
    Indiquer le nom de la macro « Graphique », le raccourci clavier « g » ainsi qu'une brève description de celle-ci, puis valider :



    L'indication « Enregistrement » apparaît dans la barre d'état, et la barre d'outils « Arrêt de l'enregistrement » est affichée :



    ← Début de la macro →
  • 2 Sélectionner la cellule A3
  • 3 Création du tableau et du graphique croisé dynamique :
    Choisir la commande : Rapport de tableau croisé dynamique... / Données
    à l'aide du bouton « Suivant », aller à l'étape 3 :
    glisser les boutons :
    « Age » dans la zone « Ligne » et « Nom » dans la zone « Données »



    choisir : « Feuille existante » et la cellule E1 (« Données!$E$1 »), puis valider (« Terminer »)


  • 4 Mise en forme du graphique :
    A l'aide de l'assitant graphique :
    à l'étape 1, choisir : « Histogramme »
    à l'étape 3, choisir l'onglet « Titre » et indiquer :
    Titre du graphique : « Histogramme »
    Axe des abscisses : « Age »
    Axe des ordonnées : « Fréquence »
    Choisir l'onglet « Légende » et supprimer la légende
    à l'étape 4, choisir :



    puis valider : bouton « Terminer ».

    Modifier la couleur des séries :
    Sélectionner la série de données (un clic sur la série),
    Série de données sélectionnée... / Format, onglet « Options », cocher la case « Variation de couleurs par point » et valider

  • 5 Regroupement des résultats par classe d'âges :
    sélectionneur le bouton « Age »
    choisir « Grouper / Grouper et créer un plan / Données » et indiquer 20, 80 comme âges début et fin et 10 comme pas, puis valider (« Ok »).


  • 6 Supression de la ligne « Total » :
    dans la barre d'outils « Tableau croisé dynamique », choisir le menu « Options de la table... » et dans « Options de mise en forme », supprimer « Totaux des colonnes » (enlever la coche), puis valider (« Ok »).



  • 7 Sélectionner la cellule A1
    ← Fin de la macro →
  • 8 Arrêter l'enregistrement / Macro / Outils ou le bouton arrêt de la barre d'outils « Arrêt de l'enregistrement ».

Exécution de la macro :

Pour exécuter cette macro, choisir la commande :

  • 1 Macros... / Macro / Outils puis choisir la macro « Graphique » puis le bouton « Exécuter »
    ou
  • 2 Le raccourci clavier « Ctrl+g ».

Le code VBA :

Les commandes 2 à 7 ont été traduites en instructions VBA. Pour obtenir le code ainsi généré, on peut procéder de la façon suivante :

  • 1 Macros... / Macro / Outils puis choisir la macro « Graphique » puis le bouton « Modifier »

Voici le texte de la macro :

Sub Graphique()
'
' Génération d'un graphique
'
' Touche de raccourci du clavier: Ctrl+g
'
    Range("A3").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
        SourceData:= "Données!R3C1:R18C3"). _
        CreatePivotTable TableDestination:=Range("E1"), _
        TableName:="Tableau croisé dynamique1"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        SmallGrid = False
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        AddFields RowFields:= "Age"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotFields("Nom").Orientation = xlDataField
    Charts.Add
    ActiveChart.SetSourceData _
        Source:=Sheets("Données").Range("E1")
    ActiveChart.Location Where:=xlLocationAsNewSheet
    ActiveChart.ChartType = xlColumnStacked
    ActiveChart.Location Where:=xlLocationAsObject, _
        Name:="Données"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Histogramme"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle. _
             Characters.Text = "Age"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle. _
            Characters.Text = "Fréquence"
    End With
    ActiveChart.HasLegend = False
    ActiveChart.SeriesCollection(1).Select
    With ActiveChart.ChartGroups(1)
        .Overlap = 100
        .GapWidth = 150
        .HasSeriesLines = False
        .VaryByCategories = True
    End With
    ActiveWindow.Visible = False
    Windows("Histo.xls").Activate
    Range("E2").Select
    Selection.Group Start:=20, End:=80, By:=10
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        ColumnGrand = False
    Range("A1:C1").Select
End Sub

Standardisation de la macro (Office 2000) :

  • Si on exécute plusieurs fois cette macro, on aura :
  • plusieurs graphiques superposés. On va donc supprimer le graphique incorporé, avant de générer l'histogramme.
  • le message :


    il faut donc supprimer le tableau croisé dynamique.
  • La macro utilise toujours la plage A3:C18 pour générer le tableau croisé dynamique (SourceData:="Données!R3C1:R18C3").
  • Le titre de l'axe des abscisses doit faire référence à la date du traitement (c'est-à-dire le contenu de la cellule A1).

Voici comment procéder :

  • 1 On ajoute les instructions suivantes au début de la procédure :
'   Suppression du GCD et TCD
    ActiveSheet.ChartObjects.Delete
    Columns("E:F").Select
    Selection.Delete shift:=xlToLeft
  • Ces instructions vont supprimer l'histogramme (GCD) et le tableau croisé dynamique (TCD).
  • 2 On adapte les deux premières instructions de la version enregistrée par les lignes suivantes. Ces modifications permettent de sélectionner la zone des données. Si on ajoute ou supprime des lignes, la plage de données, elle aussi, sera adaptée :
    Range("A3").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
        SourceData:="Données!R3C1:R18C3"). _
        CreatePivotTable TableDestination:=Range("E1"), _
        TableName:="Tableau croisé dynamique1"
par
    Range("A3").Select
    Selection.CurrentRegion.Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
        SourceData:=Selection.Address). _
        CreatePivotTable TableDestination:=Range("E1"), _
        TableName:="Tableau croisé dynamique1"
  • 3 Pour modifier le titre de l'axe des abscisses, modifier l'instruction suivante :
    With ActiveChart
        . . .
        .Axes(xlCategory, xlPrimary).AxisTitle. _
            Characters.Text = "Age"
Comme ceci :
    With ActiveChart
        . . .
        .Axes(xlCategory, xlPrimary).AxisTitle. _
            Text = "=Données!R1C1"

Voici le texte de la macro modifiée :

Sub Graphique()
'
' Génération d'un graphique
'
' Touche de raccourci du clavier: Ctrl+g
'
'   Suppression du GCD et TCD
    ActiveSheet.ChartObjects.Delete
    Columns("E:F").Select
    Selection.Delete shift:=xlToLeft

    Range("A3").Select
'   Sélection de la zone en cours et
'     standardisation du TCD et GCD
    Selection.CurrentRegion.Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
        SourceData:=Selection.Address). _
        CreatePivotTable TableDestination:=Range("E1"), _
        TableName:="Tableau croisé dynamique1"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        SmallGrid = False
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        AddFields RowFields:="Age"
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        PivotFields("Nom").Orientation = xlDataField
    Charts.Add
    ActiveChart.SetSourceData _
        Source:=Sheets("Données").Range("E1")
    ActiveChart.Location Where:=xlLocationAsNewSheet
    ActiveChart.ChartType = xlColumnStacked
    ActiveChart.Location Where:=xlLocationAsObject, _
        Name:="Données"
'   Titre de l'axe des abcisses = cellule A1 au lieu de "Age"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Histogramme"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle. _
            Text = "=Données!R1C1"
            .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle. _
            Characters.Text = "Fréquence"
    End With
    ActiveChart.HasLegend = False
    ActiveChart.SeriesCollection(1).Select
    With ActiveChart.ChartGroups(1)
        .Overlap = 100
        .GapWidth = 150
        .HasSeriesLines = False
        .VaryByCategories = True
    End With
    ActiveWindow.Visible = False
    Windows("Histo.xls").Activate
    Range("E2").Select
    Selection.Group Start:=20, End:=80, By:=10
    ActiveSheet.PivotTables("Tableau croisé dynamique1"). _
        ColumnGrand = False
    Range("A1:C1").Select
End Sub
Suite...
Version Office 97

2.2.4. Suite...

Création d'un bouton

Une autre méthode pour utiliser une macro consiste à utiliser un bouton qui va appeler la macro.

  • 1 Formulaires / Barre d'outils / Affichage
  • 2 Choisir le bouton « Bouton »



    et dessiner le bouton, dans la boîte de dialogue « Affecter une macro », choisir la macro « Graphique » et valider :



    modifier ensuite le nom du bouton :

Autre méthode : ajout d'un bouton dans une barre d'outils.

  • 1 Personnaliser... / Outils
  • 2 Créer une nouvelle barre d'outils ou utiliser une barre d'outils existante.
    Pour créer une nouvelle barre d'outils, choisir l'onglet « Barre d'outils », le bouton « Nouvelle... » et valider
  • 3 Choisir l'onglet : « Commandes », la catégorie « Macros » et la commande « Elément de menu personnalisé »,



  • 4 Faire glisser ce bouton dans la barre d'outils, modifier éventuellement le nom du bouton ainsi créé (clic droit sur le bouton), affecter la macro « Graphique » à ce bouton et valider


Exécution de la macro :

  • 1 Macros... / Macro / Outils puis choisir la macro « Graphique » puis le bouton « Exécuter »
    ou
  • 2 Le raccourci clavier « Ctrl+g »
    ou
  • 3 Le bouton « Graphique ».

Microsoft Access

2.3.1. Commande qui permet de modifier un champ dans une table



Lors de la saisie des champs « Nom » et « Prénom », on veut transformer la première lettre de chaque mot en majuscule. Ces macros seront appelées automatiquement lors de la saisie de ces deux zones.

Ecriture de la macro[2] :

Voici la marche à suivre :

  • 1 Modifier le formulaire « frmClients »
    sélectionner l'onglet « Formulaires », « frmClients » et le bouton « Modifier »
  • 2 Sélectionner d'un simple clic la zone « Nom »,
    Propriétés / Affichage et l'onglet « Evénement »
  • 3 Choisir « [Procédure événementielle] » dans la zone « Après MAJ » et puis le bouton :


Le code suivant a été généré :

Private Sub Nom_AfterUpdate()

End Sub

Il suffit de compléter ce code avec l'instruction suivante :

Private Sub Nom_AfterUpdate()
    [Nom] = StrConv([Nom], vbProperCase)
End Sub

La fonction « StrConv (chaîne, vbProperCase) » convertit la première lettre de chaque mot de la chaîne en majuscule. « [Nom] » désigne le champ « Nom » de la table. On procède de la même façon pour le champ « [Prénom] ».

2.3.2. Ajout du bouton « Fermer le formulaire »

Microsoft Access ne dispose pas d'un enregistreur de macros VBA. Cependant, l'outil « Assistant contrôle » permet de générer automatiquement du code VBA. On ajoute un bouton « Fermer le formulaire » à ce formulaire.

Voici la marche à suivre :

  • 1 Modifier le formulaire « frmClients »
    sélectionner l'onglet « Formulaires », le formulaire « frmClients » et le bouton « Modifier »
  • 2 Choisir successivement les boutons « Assistant contrôle » et « Bouton de commande » et dessiner le bouton sur le formulaire.



  • 3 Choisir les différentes options de « l'assistant Bouton de commande »





Cet assistant a généré automatiquement le code VBA suivant, qu'on peut obtenir à l'aide du bouton : .

Private Sub cmdFermer_Click()
On Error GoTo Err_cmdFermer_Click
    DoCmd.Close

Exit_cmdFermer_Click:
    Exit Sub
Err_cmdFermer_Click:
    MsgBox Err.Description
    Resume Exit_cmdFermer_Click

End Sub

[1] Dans ce qui suit, les directives sont données comme suit : ARTICLE / MENU ou SOUS-ARTICLE / ARTICLE / MENU. Exemple : QUITTER / FICHIER ou TOUT / EFFACER / EDITION.

[2] Microsoft Access ne dispose pas d'un enregistreur de macros.

Sommaire - Début de cette page
Page suivante: 3. Exemples de macros fonctions

Imprimer cet article