Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Sommaire > Les macros VBA
        Comment programmer efficacement en VBA Excel ?
        Comment utiliser l'éditeur de macros ?
        Où peut-on trouver un recensement et des explications sur les syntaxes de base du langage VBA ?
        Comment créer un certificat local pour les macros VBA ?
        Comment utiliser les variables en VBA ?
        Comment manipuler l'éditeur de macros par macro ?
        Comment manipuler les chaînes de caractères en VBA Excel ?
        Comment stopper une macro qui ne veut plus s'arrêter ?
        Comment protéger les macros par mot de passe ?
        Comment vérifier si un projet VBA est protégé ?
        Comment remplacer un mot dans toutes les procédures d'un classeur ?
        Comment supprimer une macro par le code ?
        Comment supprimer tous les modules vides dans le classeur actif ?
        Ou trouver la traduction des mots clés Visual Basic ?
        Quelle est la différence entre ByRef et ByVal ?
        Comment effectuer une temporisation dans une macro ?
        Peut-on appeler une macro d'un autre classeur ?
        Où se trouve l'onglet de gestion des macros, dans Excel 2007 ?
        Comment gérer les macros complémentaires dans Excel 2007 ?
        Comment affecter un caractère guillemet à une variable ?
        Comment tester la présence d'un argument optionnel dans une fonction ?
        Comment importer un module type cls dans un module ThisWorkbook ?
        Comment utiliser les variables tableaux ?
        Quels sont les différents types de boucles utilisables en VBA ?
        Comment lancer une procédure qui contient des arguments lorsque l'on utilise la méthode OnTime ?
        Comment définir une donnée par défaut pour un argument de procédure type Optional ?
        Comment vérifier par le code si l'option 'Faire confiance au projet visual basic' est cochée ?
        Comment vérifier si un classeur contient des macros ?
        Comment suivre l'évolution des variables lorsque je teste mes macros ?
        Comment fonctionnent les APIs ?
        26.1. Les UserForm et les contrôles (33)
                26.1.1. Les UserForms (13)
                        Comment utiliser les UserForm ?
                        Comment trouver le Handle d'une Userform ?
                        Comment inhiber ou masquer le bouton 'Fermer' d'une UserForm ?
                        Comment masquer la barre de titre d'une UserForm ?
                        Comment créer un UserForm dynamiquement ?
                        Comment adapter les dimensions d'un UserForm à la taille de l'écran ?
                        Comment afficher une image PNG dans un UserForm ?
                        Comment ajouter un bouton de réduction dans les UserForms ?
                        Comment appliquer une transparence dans un UserForm ?
                        Comment créer plusieurs instances d'un UserForm ?
                        Est-il possible d'afficher une barre d'outils dans un UserForm ?
                        Comment ajouter un icône dans la barre de Caption ?
                        A quoi sert l'évènement UserForm_Layout ?
                26.1.2. Les contrôles (20)
                        Comment utiliser les contrôles dans les UserForm ?
                        Comment gérer les évènements dans un WebBrowser ?
                        Comment créer une page html dynamiquement dans un WebBrowser et y ajouter une fonction JavaScript ?
                        Comment faire défiler un texte dans un UserForm ?
                        Comment visualiser un graphique dans un UserForm ?
                        Comment afficher le contenu d'une feuille de calcul dans un DataGrid ?
                        Comment utiliser l'objet OWC PivotTable dans un UserForm Excel ?
                        Comment rendre un Frame transparent afin de voir l'image située en arrière plan ?
                        Comment sauvegarder les paramètres des contrôles ?
                        Comment ajouter des contrôles dynamiquement dans un Frame ?
                        Comment remplir une ComboBox sans doublon et trié par ordre croissant ?
                        Comment alimenter rapidement une ComboBox à partir de données contenues sur une ligne de la feuille de calcul ?
                        Comment contrôler un format personnalisé lors de la saisie dans un TextBox ?
                        A quoi correspond la valeur -1 de la propriété ListIndex, pour les ComboBox et ListBox ?
                        Comment créer une boucle directement sur quelques contrôles prédéfinis ?
                        Comment alimenter des ComboBox de manière conditionnelle et en cascade ?
                        Comment adapter automatiquement les colonnes d'une ListBox au contenu d'une plage de cellules ?
                        Comment forcer l'affichage d'un en-tête pour une listBox alimentée à partir de la propriété List() ou AddItem ?
                        Comment spécifier des polices type Symbole par macro ?
                        Comment vérifier si le contenu de deux contrôles Image sont identiques ?
        26.2. Les fonctions aléatoires (7)
                Comment créer une valeur aléatoire ?
                Comment afficher une lettre aléatoire entre A et Z ?
                Comment mélanger de façon aléatoire tous les mots d'une phrase ?
                Comment permuter les données d'une colonne et de façon aléatoire ?
                Comment générer une série de nombres entiers aléatoires sans doublon ?
                Comment créer des groupes de façon aléatoire ?
                Comment insérer un nombre de croix dans des cellules aléatoires d'une plage ?
        26.3. piloter d'autres applications depuis Excel (32)
                Comment activer une référence pour piloter une autre application ?
                Comment extraire l'historique des sites visités par l'explorateur FireFox ?
                Comment créer un fichier PDF en pilotant Acrobat Distiller ?
                Comment fermer une application ?
                Comment ramener une application déjà ouverte au premier plan ?
                Comment piloter OpenOffice depuis Excel ?
                26.3.1. Piloter Access (9)
                        Comment Transférer un fichier CSV vers une nouvelle table Access ?
                        Comment effectuer une requête QueryTable ?
                        Comment vérifier la version MDAC installée sur le poste ?
                        Comment créer une base et une table Access par macro ?
                        Comment ajouter un enregistrement dans une table Access?
                        Comment importer les données d'une table Access dans la feuille de calcul ?
                        Comment appliquer un tri sur une colonne d'une table Access ?
                        Comment lister les utilisateurs connectés à une base de données ?
                        Comment importer les données d'une table Access vers un nouveau classeur Excel ?
                26.3.2. Piloter Word (3)
                        Comment vérifier si un document Word est déjà ouvert ?
                        Comment écrire et lire dans un champ Word ?
                        Comment passer un paramètre d'Excel dans une Variable Word ?
                26.3.3. Les messageries (11)
                        Comment insérer une plage de cellules dans le corps du message ?
                        Comment envoyer un fichier par mail sans Outlook ?
                        Comment envoyer un mail contenant des liens hypertextes dans le corps du message ?
                        Comment indiquer des multi destinataires lors de l'envoi d'un classeur par la méthode SendMail ?
                        Comment définir plusieurs destinataires lorque j'utilise la boîte de dialogue xlDialogSendMail ?
                        Comment créer un message en utilisant Outlook Express ?
                        Comment extraire les pièces jointes de tous les dossiers Outlook ?
                        Comment importer les contacts Outlook dans une feuille Excel, par macro ?
                        Comment effectuer une recherche dans les contacts Outlook ?
                        Comment créer un nouveau rendez vous dans le calendrier Outlook ?
                        Comment créer une nouvelle tâche dans Outlook ?
                26.3.4. Les pages html et Internet (3)
                        Comment créer une page html en VBA ?
                        Comment télécharger un fichier stocké sur le web ?
                        Comment piloter Google Map depuis Excel ?
        26.4. Les répertoires et les fichiers (19)
                Comment vérifier si un fichier existe ?
                Comment vérifier si un dossier existe ?
                Comment retrouver les répertoires parents ?
                Comment créer un dossier ?
                Comment ouvrir l'explorateur Windows sur un répertoire défini ?
                Comment boucler sur les fichiers d'un répertoire ?
                Comment compter le nombre de fichiers dans un répertoire ?
                Comment renommer un fichier ?
                Comment modifier la date de création d'un fichier ?
                Comment envoyer un fichier dans la corbeille ?
                Comment retrouver facilement le chemin des répertoires spéciaux Windows ?
                Comment retrouver la taille des éléments de la corbeille ?
                Comment récupérer des informations sur les applications du PC ?
                Comment lister les fichiers d'un répertoire par ordre décroissant de date de création ?
                Comment lister les fichiers contenus dans un répertoire ainsi que dans tous ses sous-répertoires ?
                Comment copier un fichier vers un autre répertoire ?
                Comment lister les lecteurs en réseau et leur nom UNC ?
                Comment créer un raccourci sur le bureau ?
                Comment vider le répertoire des documents récemment utilisés ?
        26.5. Les modules de classe (2)
                Ou trouver une introduction aux modules de classes ?
                Comment utiliser une classe dans un projet autre que celui dans lequel il est déclaré ?
        26.6. Le PC et le système d'exploitation (6)
                Comment créer une tâche planifiée Windows ?
                Comment forcer l'affichage d'une image dans 'l'aperçu des images et des télécopies Windows', par macro ?
                Comment lister le statut des ports ?
                Comment récupérer des informations sur un exécutable ?
                Comment identifier le système d'exploitation utilisé ?
                A quoi sert la fonction Environ ?

precedent    sommaire    suivant   


Comment créer un certificat local pour les macros VBA ?
auteur : ThierryAIM
Lorsque le niveau de sécurité intrinsèque des documents Office est réglé sur moyen ou élevé, il est alors impossible d'activer automatiquement les macros d'un document.

La première solution consiste à régler le niveau de sécurité sur faible (Menu Outils >> Macros >> Sécurité...), mais ce n'est pas très recommandé.

L'autre solution consiste à auto-certifier les macros d'un document.
Un certificat local, valable uniquement sur la machine sur laquelle il est installé, va vous permettre d'éviter le désagrément d'avoir à confirmer l'activation des macros à l'ouverture d'un document, ou pire, la désactivation systématique des macros.

Comment procéder:

     * Rechercher dans le répertoire d'installation de Microsoft Office (généralement C:\Program Files\Microsoft Office\OfficeXX) le programme SelCert.exe
     * Exécuter SelfCert.exe
     * Renseigner le nom du certificat dans la zone de texte et valider
     * Fermer SelfCert.exe

     * Ouvrir le document Office dont les macros doivent être certifiées
     * Dans l'éditeur VBA (Alt-F11), menu Outils >> Signature électronique ...
     * Cliquer sur "Choisir..." et sélectionner le certificat précédemment créé
     * Enregistrer le document

A la prochaine ouverture du document, une alerte de sécurité va apparaître, cocher alors la case "Toujours faire confiance au macros provenant de... ".

Pour supprimer un certificat existant:

     * Panneau de configuration >> Options Internet
     * Onglet Contenu, cliquer sur Certificats...
     * Sélectionner le certificat et cliquer sur Supprimer



Comment stopper une macro qui ne veut plus s'arrêter ?
auteur : SilkyRoad
Lorsqu'une macro tourne en boucle et ne veut plus s'arrêter, utilisez les touches clavier:

Ctrl + Pause


Vous pouvez aussi essayer la touche ECHAP.



Comment protéger les macros par mot de passe ?
auteur : SilkyRoad
Ouvrez l'éditeur de macros (Alt+F11).
Activez votre projet.
Menu Outils.
Sélectionnez "Propriétés de VBA Project".
Sélectionnez l'onglet "Protection".
Cochez la case "Verrouiller le projet pour affichage".
Indiquez et confirmez un mot de passe.
Cliquez sur le bouton OK pour valider.
Le code VBA sera protégé par mot de passe lors de la prochaine ouverture du classeur.



Comment vérifier si un projet VBA est protégé ?
auteur : SilkyRoad
Vba

Sub Test()
    MsgBox IsProtectedProjetVBE(Workbooks("NomClasseur.xls"))
End Sub


Function IsProtectedProjetVBE(Wb As Workbook) As Boolean
    Dim i As Integer
    
    On Error Resume Next
    i = Wb.VBProject.VBComponents.Count
    On Error GoTo 0
    
    IsProtectedProjetVBE = IIf(i = 0, True, False)
End Function

Comment remplacer un mot dans toutes les procédures d'un classeur ?
auteur : SilkyRoad
Cet exemple remplace la chaîne "Feuil1" par "Feuil3" dans le classeur ouvert nommé "NomClasseur.xls".

Vba

Sub RemplacementMotDansProcedure()
    'Nécéssite d'activer la référence
    '"Visual basic For Application Extensibility 5.3"
    '
    Dim Ancien As String, Nouveau As String, Cible As String
    Dim VBComp As VBComponent
    Dim i As Integer
    Dim Wb As Workbook
    
    Set Wb = Workbooks("NomClasseur.xls")
    
    Ancien = "Feuil1"
    Nouveau = "Feuil3"
    
    For Each VBComp In Wb.VBProject.VBComponents
        For i = 1 To VBComp.CodeModule.CountOfLines
            Cible = VBComp.CodeModule.Lines(i, 1)
            Cible = Replace(Cible, Ancien, Nouveau)
            VBComp.CodeModule.ReplaceLine i, Cible
        Next i
    Next VBComp
End Sub

Comment supprimer une macro par le code ?
auteur : SilkyRoad
Vous devez connaître le nom de la macro et le nom du module dans lequelle elle se trouve.
Vous devez ajouter la référence "Microsoft visual Basic For Application Extensenbility x.x" à votre projet :

Vba
 
'Supprimer la macro nommée "MaMacro" dans le "module3"
Sub supprimerUneMacroPrecise()
Dim Debut As Integer, Lignes As Integer

    With ThisWorkbook.VBProject.VBComponents("Module3").CodeModule
        Debut = .ProcStartLine("MaMacro", 0)
        Lignes = .ProcCountLines("MaMacro", 0)
        .DeleteLines Debut, Lignes
    End With
End Sub
lien : fr Manipuler l'éditeur de macros par macro

Comment supprimer tous les modules vides dans le classeur actif ?
auteur : SilkyRoad
Vba

Sub supprimerTousModulesVides()
    Dim vbComp As VBComponent
    Dim i As Integer, j As Integer
    
    For Each vbComp In ActiveWorkbook.VBProject.VBComponents
        If vbComp.Type = 1 Then
            i = vbComp.CodeModule.CountOfDeclarationLines + 1
            j = vbComp.CodeModule.CountOfLines
            If j < i Then ActiveWorkbook.VBProject.VBComponents.Remove vbComp
        End If
    Next
End Sub

Ou trouver la traduction des mots clés Visual Basic ?
auteur : SilkyRoad
Recherchez le fichier Excel nommé VBALIST.xls sur votre PC.
Il est généralement stocké à l'emplacement:
C:\Program Files\Microsoft Office\Office10\1036
Ce classeur contient la liste des mots clés Visual Basic et leur traduction Français/Anglais.



Quelle est la différence entre ByRef et ByVal ?
auteur : SilkyRoad
ByRef permet de passer à une procédure l'adresse d'un argument plutôt que sa valeur. La procédure peut ainsi accéder à la variable proprement dite. La valeur réelle de cette dernière peut, de ce fait, être modifiée par la procédure à laquelle elle a été passée. Par défaut, les arguments sont passés par référence.
Si la procédure appelée change la valeur de ces variables, elle changeront au retour dans la procédure appelante.

ByVal permet de passer à une procédure la valeur d'un argument plutôt que son adresse. La procédure peut de ce fait accéder à une copie de la variable. La valeur réelle de cette dernière n'est donc pas modifiée par la procédure à laquelle elle est passée.
Si la procédure appelée change la valeur des variables, elles ne changeront pas dans la procédure appelante.
L'utilisation de ByVal implique un temps de calcul plus long et nécessite un espace mémoire plus important.


Un exemple de mise en application pour montrer les valeurs prises successivement par la variable Donnee, en fonction du passage par des sous procédures ByRef, ByVal, puis non spécifiée.

Vba

Sub Test()
    Dim Donnee As Integer
    
    Donnee = 50
    
    MaProcedure_1 Donnee
    MsgBox Donnee
    
    MaProcedure_2 Donnee
    MsgBox Donnee
    
    MaProcedure_3 Donnee
    MsgBox Donnee
End Sub


'Passe la référence en argument.
Sub MaProcedure_1(ByRef x As Integer)
    x = x * 2
End Sub


'Passe la valeur en argument.
Sub MaProcedure_2(ByVal y As Integer)
    y = y * 2
End Sub


'ByRef est la valeur par défaut si non spécifiée.
Sub MaProcedure_3(z As Integer)
    z = z * 2
End Sub

Comment effectuer une temporisation dans une macro ?
auteur : SilkyRoad
Voici 3 exemples qui appliquent une temporisation d'une seconde dans la procédure:

Vba

Option Explicit

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub LaMacro_V01()
    'tempo 1 seconde
    Sleep 1000 'pause en millisecondes
    'la suite de la macro
    MsgBox "test"
End Sub
Vba

Sub LaMacro_V02()
    Dim t As Date
    'Tempo 1 seconde
    t = Timer + 1: Do Until Timer > t: DoEvents: Loop
    MsgBox "test"
End Sub
Vba

Sub LaMacro_V03()
    'tempo 1 seconde
    Application.Wait (Now + TimeValue("0:00:01"))
    
    MsgBox "test"
End Sub

Peut-on appeler une macro d'un autre classeur ?
auteur : Bidou
Il faut utiliser Run. Cette méthode permet aussi de passer des paramètres.
Supposons que mon classeur "calcul.xls" contienne une fonction Log10 telle que:
Vba

Public Function Log10(ByVal X As Single) As Single
    Log10 = Log(X) / Log(10#)
End Function

Il est possible de l'utiliser depuis un autre classeur en faisant
Vba

Result = Application.Run("calcul.xls!Log10", 1.2)

Où se trouve l'onglet de gestion des macros, dans Excel 2007 ?
auteur : SilkyRoad
Ouvrez l'onglet Développeur pour atteindre le menu de gestion des macros.


L'onglet Développeur est constitué de 3 groupes:

Le groupe Code:
     * Accéder à l'éditeur de macros (Alt+F11).
     * Afficher la classique boîte de dialogue qui liste les macros exécutables (Alt+F8).
     * Utiliser l'enregistreur de macros.
     * Gérer la sécurité des macros.

Le groupe Contrôles:
     * Insérer des contrôles Formulaires ou ActiveX.
     * Activer ou désactiver le mode création.
     * Afficher la fenêtre Propriétés.
     * Visualiser le code de la feuille active.

Le groupe XML:
     * Importer et exporter des fichiers xml.
     * Actualiser les données.
     * Mapper dans le classeur.


Si l'onglet Développeur n'apparaît pas dans le ruban:
     Cliquez sur le bouton Office,
     puis sur le bouton Options Excel.
     Cliquez sur le menu Standard.
     Cochez l'option Afficher l'onglet Développeur dans le ruban.
     Cliquez sur le bouton OK pour valider.


L'onglet Développeur peut être affiché ou masqué par macro:

Vba

Sub AfficherMasquer_OngletDeveloppeur()
    With Application
        If .ShowDevTools = False Then
            .ShowDevTools = True
            Else
            .ShowDevTools = False
        End If
    End With
End Sub




Comment gérer les macros complémentaires dans Excel 2007 ?
auteur : SilkyRoad
Cliquez sur le bouton Office.
Cliquez sur le bouton Options Excel.
Sélectionnez le menu Compléments.
Choisissez Compléments Excel dans le menu déroulant Gérer (en bas de la fenêtre).
Cliquez sur le bouton Atteindre.



Comment affecter un caractère guillemet à une variable ?
auteur : SilkyRoad
Une première solution consiste à doubler les guillemets:

Vba

Dim MaVariable As String

MaVariable = """"
MsgBox MaVariable



Une autre possibilité consiste à utiliser la fonction Chr et le nombre (34) représentant ce caractère.

Vba

Dim MaVariable As String

MaVariable = Chr(34)
MsgBox MaVariable

Comment tester la présence d'un argument optionnel dans une fonction ?
auteur : SilkyRoad
Le mot-clé Optional permet de spécifier des arguments facultatifs dans une fonction. Ces arguments doivent être placés en dernière position dans la liste des paramètres.

Attribuez le type Variant aux paramètres optionnels. Ainsi la fonction IsMissing permettra d'identifier les données omises, en renvoyant True si l'argument n'est pas indiqué.

Vba

Sub test()
    NomFonction Arg1:=0, Arg2:=56765765
    NomFonction Arg1:=453
    NomFonction Arg2:=56765765
    NomFonction
End Sub


Function NomFonction(Optional Arg1 As Variant, Optional Arg2 As Variant) As Variant
    MsgBox "Arguments manquants:" & vbCrLf & _
        IsMissing(Arg1) & " / " & IsMissing(Arg2)
End Function

Comment importer un module type cls dans un module ThisWorkbook ?
auteur : SilkyRoad
Il est possible de sauvegarder la procédure d'un module objet ThisWorkbook en l'enregistrant sur le disque dur (extension de fichier .cls). Vous pouvez ensuite réimporter ce fichier dans un autre classeur, pour par exemple effectuer la mise à jour d'une procédure. Lors de l'import, le fichier va être créé comme un module de classe et non en lieu et place du module ThisWorkbook.

La procédure suivante permet d'automatiser le chargement du fichier .cls et le remplacement des macros dans le module objet ThisWorkbook.

Vba

'Nécessite d'activer la référence "Microsoft Visual Basic for Applications Extensibility 5.3"
Dim Wb As Workbook
Dim oModule As CodeModule
Dim VbComp As VBComponent
Dim x As Integer
Dim Cible As String

Cible = "NomModule"
'Définit le classeur de destination (qui doit être préalablement ouvert).
Set Wb = Workbooks("NomClasseur.xls")

'Charge le module dans le classeur
Set VbComp = Wb.VBProject.VBComponents.Import("C:\ThisWorkbook.cls")
'Le renomme (pour le supprimer plus facilement ultérieurement
VbComp.Name = Cible

Set oModule = VbComp.CodeModule

'Transfère les données chargées dans ThisWorkbook.
'Attention les données existantes dans "ThisWorkbook" sont écrasées.
With Wb.VBProject.VBComponents("ThisWorkbook").CodeModule
    x = .CountOfLines
    .DeleteLines 1, x
    .InsertLines 1, oModule.Lines(1, oModule.CountOfLines)
End With

'Suppression du module précédemment chargé
With Wb.VBProject.VBComponents
    .Remove .Item(Cible)
End With

Comment lancer une procédure qui contient des arguments lorsque l'on utilise la méthode OnTime ?
auteur : SilkyRoad
Vous pouvez utiliser cette syntaxe:

Vba

Sub Test()
    Application.OnTime Now + TimeValue("00:00:03"), "'NomMacro ""mimi"", 50'"
End Sub


Sub NomMacro(Arg1 As String, Arg2 As Integer)
    MsgBox Arg1 & vbCrLf & Arg2
End Sub

Comment définir une donnée par défaut pour un argument de procédure type Optional ?
auteur : SilkyRoad
C'est possible en utilisant la syntaxe:

Optional [NomVariable] As [TypeVariable] = [Donnée par défaut]

Vba

Sub Test()
    'Renvoie tous les arguments spécifiés
    MsgBox MaProcedure(5, "fifi")
    'Renvoie 5 et "mimi" car l'argument Optional (strPrenom) n'est pas précisé
    MsgBox MaProcedure(5)
End Sub


Function MaProcedure(lngValeur As Long, Optional strPrenom As String = "mimi")
    MaProcedure = lngValeur & vbCrLf & strPrenom
End Function

Comment vérifier par le code si l'option 'Faire confiance au projet visual basic' est cochée ?
auteur : Tirex28
Vba

Private Sub Workbook_Open()
    Dim vbpName As String
    
    On Error Resume Next
    
    vbpName = ThisWorkbook.VBProject.Name
    If vbpName = vbNullString Then MsgBox "Veuillez cocher ..."
End Sub

Comment vérifier si un classeur contient des macros ?
auteur : SilkyRoad
Cette fonction renvoie Vrai ou Faux.
Le classeur à tester doit être ouvert:

Vba

'Nécessite d'activer la référence:
'Microsoft Visual Basic for Applications Extensibility 5.3
Function ContientMacro(Wb As Workbook) As Boolean
    Dim VbComp As VBComponent
    
    For Each VbComp In Wb.VBProject.VBComponents
        With VbComp.CodeModule
              ContientMacro = .CountOfDeclarationLines + 1 < .CountOfLines
        End With
        
        If ContientMacro Then Exit For
    Next VbComp
End Function



Dans Excel 2007, vous pouvez utiliser directement la propriété HasVBProject de l'objet Workbook. La propriété renvoie VRAI si le classeur testé contient du code, et FAUX dans le cas contraire.

Vba

'le fichier "NomClasseur.xls" doit être préalablement ouvert.
MsgBox Workbooks("NomClasseur.xls").HasVBProject

Comment suivre l'évolution des variables lorsque je teste mes macros ?
auteur : SilkyRoad
Vous pouvez afficher la fenêtre "Variables locales" afin de suivre les différentes valeurs prises par les variables de la procédure en cours d'exécution.
Dans l'éditeur de macros:
Menu Affichage
Sélectionnez "Fenêtre variables locales".

Ensuite exécutez votre code en mode pas à pas (F8).
La valeur des variables s'affiche dans la fenêtre.



La fenêtre est vidée lorsque la procédure est terminée.

Nota:
Vous pouvez accéder à la pile des appels depuis cette fenêtre, en cliquant sur le bouton de droite (...).
La pile énumère les procédures dont l'exécution est en cours.


Une autre solution consiste à utiliser la méthode Debug.Print pour envoyer le contenu des variables dans la fenêtre d'exécution (Ctl+G).

Vba

Sub NomMacro()
    Dim x As Integer
    
    x = 7
    x = x * 3
    Debug.Print "premier calcul: " & x
    
    x = x + 4
    Debug.Print "deuxième calcul: " & x
End Sub

Comment fonctionnent les APIs ?
auteur : Bidou
On entend par API (Application Programming Interface), l'ensemble des fonctions systèmes de l'OS qui peuvent être appelées à partir du code Visual Basic.
Elles se trouvent dans des fichiers DLL du répertoire système. Par extension, on peut de la même façon utiliser des fonctions se trouvant dans des DLL non-système.

Consultez le tutoriel de Jean-Marc Rabilloud. L'article vous permettra de comprendre comment utiliser les APIs, les avantages et les risques potentiels.



precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com