#Const, consigne, exemple

Cet exemple utilise la consigne #Const afin de déclarer des constantes de compilation conditionnelle dans le cadre des constructions #If...#Else...#End If.

#Const DebugVersion = 1	' Prendra la valeur true dans le bloc #If


#If...Then...#Else, consigne, exemple

Cet exemple fait référence à des constantes de compilation conditionnelle d'une construction #If...Then...#Else afin de déterminer si certaines instructions doivent être compilées.

' Si Mac prend la valeur true, exécute les instructions suivant le #If.

#If Mac Then

'. Placez uniquement des instructions Mac ici.

'.

'.

' S'il s'agit d'un programme Windows 32 bits, faites ceci:

#ElseIf Win32 Then

'. Placez uniquement des instructions Windows 32 bits ici.

'.

'.

' Si votre programme n'est ni un programme Mac ni un programme Windows 32 ' bits, faites ceci:

#Else

'. Placez les instructions de la plate-forme appropriée ici.

'.

'.

#End If


#Const, consigne

Utilisée pour définir des constantes de compilation conditionnelle pour Visual Basic.

Syntaxe

#Const constname = expression

La syntaxe de la consigne de compilation #Const comprend les éléments suivants :

Élément	Description
constname	Variant (Chaîne). Nom de la constante ; suit les conventions d'affectation des noms de variables.
expression	Caractère littéral, autre constante de compilation conditionnelle, ou toute combinaison qui comprend des opérateurs arithmétiques ou logiques à l'exception de Is.
Remarques

Les constantes de compilation conditionnelle sont toujours de type Private, c'est-à-dire qu'elles appartiennent au module dans lequel elles apparaissent. Il est impossible de créer des constantes de compilation de type Public à l'aide de la consigne #Const. Les constantes de compilation de type Public ne peuvent être créées que dans l'interface utilisateur.

Seuls des constantes de compilation conditionnelle et des caractères littéraux peuvent être utilisés dans expression. L'utilisation d'une constante définie avec Const, ou l'utilisation d'une constante non définie, entraîne une erreur. À l'inverse, les constantes définies à l'aide du mot clé #Const ne peuvent être utilisées que dans le cadre d'une compilation conditionnelle.

Les constantes de compilation conditionnelle sont toujours évaluées au niveau du module, quel que soit leur emplacement dans le code.


#If...Then...#Else, consigne

Effectue une compilation conditionnelle de blocs sélectionnés de code Visual Basic.

Syntaxe

#If expression Then

statements

[#ElseIf expression-n Then

[elseifstatements]]

[#Else

[elsestatements]]

#End If

La syntaxe de la consigne #If...Then...#Else comprend les éléments suivants :

Élément	Description
expression	Toute expression, exclusivement constituée d'une ou de plusieurs constantes de compilation conditionnelle, d'un ou de plusieurs caractères littéraux et opérateurs, qui prend la valeur True ou False.
statements	Lignes de programme ou consignes de compilation Visual Basic évaluées si l'expression associée prend la valeur True.
expression-n	Facultatif. Toute expression, exclusivement constituée d'une ou de plusieurs constantes de compilation conditionnelle, d'un ou de plusieurs caractères littéraux et opérateurs, qui prend la valeur True ou False.
elseifstatements	Facultatif. Une ou plusieurs lignes de programme ou consignes de compilation évaluées si expression-n prend la valeur True.
elsestatements	Facultatif. Une ou plusieurs lignes de programme ou consignes de compilation évaluées si aucune expression ou expression-n précédente ne prend pas la valeur True.
Remarques

Le fonctionnement de la consigne #If...Then...#Else est similaire à celui de l'instruction If...Then...Else, à la différence que les consignes #If, #Else, #ElseIf et #End If n'existent pas sous la forme d'une ligne unique ; autrement dit, aucun autre code ne peut apparaître sur la même ligne que n'importe laquelle de ces consignes. La compilation conditionnelle est généralement utilisée pour compiler le même programme sur différentes plates-formes. Elle est également utilisée pour éviter que le code de débogage apparaisse dans un fichier exécutable. Le code exclu lors d'une compilation conditionnelle est totalement absent du fichier exécutable final, et n'a donc aucune incidence sur la taille de ce dernier ou sur les performances.

Quel que soit le résultat de l'évaluations, toutes les expressions sont évaluées. De ce fait, toutes les constantes utilisées dans les expressions doivent être définies. Toute constante non définie est évaluée comme Empty.

Note   L'instruction Option Compare n'affecte pas les lignes de codes contenues dans #If et #ElseIf. Les expressions d'une consigne de compilation conditionnelle sont toujours évaluées avec Option Compare Text.


Constantes Visual Basic

Visual Basic pour Applications permet de définir des constantes afin de simplifier la programmation. Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constantes de calendrier

CallType, constantes

Constantes de couleurs

Constantes de comparaison

Constantes de compilation

Date, constantes

Constantes de format de date

Dir, GetAttr et SetAttr, constantes

Constantes de type de lecteur

Constantes d'attribut de fichiers

Constantes d'E/S de fichiers

Constantes de feuilles

IMEStatus, constantes

Constantes de code de touches

Constantes diverses

MsgBox, constantes

QueryClose, constantes

Shell, constantes

SpecialFolder, constantes

StrConv, constantes

Constantes Couleurs système

Tristate, constantes

VarType, constantes

Constantes Visual Basic


QueryClose, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbFormControlMenu	0	L'utilisateur choisit la commande Fermeture dans le menu système de la feuille.
vbFormCode	1	L'instruction Unload est invoquée à partir du code.
vbAppWindows	2	La session de l'environnement d'exploitation Microsoft Windows en cours se termine.
vbAppTaskManager	3	Le Gestionnaire de tâches Windows ferme l'application.


Constantes de calendrier

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbCalGreg	0	Indique que le calendrier grégorien est utilisé.
vbCalHijri	1	Indique que le calendrier Hijri est utilisé.


Constantes de compilation

Visual Basic pour Applications définit des constantes exclusivement utilisées avec la consigne #If...Then...#Else. Ces constantes sont fonctionnellement identiques à celles définies avec la consigne #If...Then...#Else, mais ont cependant une portée globale, c'est-à-dire qu'elles s'appliquent à l'ensemble d'un projet.

Sur les plates-formes de développement 16 bits, les constantes de compilation sont définies de la manière suivante :

Constante	Valeur	Description
Win16	True	Indique que l'environnement de développement est en 16 bits.
Win32	False	Indique que l'environnement de développement n'est pas en 32 bits.
Sur les plates-formes de développement 32 bits, les constantes de compilation sont définies de la manière suivante :

Constante	Valeur	Description
Vba6	True	Indique que l'environnement de développement est Visual Basic pour Applications, version 6.0.
Vba6	False	Indique que l'environnement de développement n'est pas Visual Basic pour Applications, version 6.0.
Win16	False	Indique que l'environnement de développement n'est pas en 16 bits.
Win32	True	Indique que l'environnement de développement est en 32 bits.
Mac	False	Indique que l'environnement de développement n'est pas Macintosh.
Win16	False	Indique que l'environnement de développement n'est pas en 16 bits.
Win32	False	Indique que l'environnement de développement est en 32 bits Windows.
Mac	True	Indique que l'environnement de développement est Macintosh.
Note   Ces constantes étant définies par Visual Basic, vous ne pouvez, à aucun niveau, définir des constantes portant le même nom.


Date, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Valeurs des arguments

L'argument firstdayofweek peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utilise le paramètre NLS API.
VbSunday	1	Dimanche (valeur par défaut)
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi
L'argument firstdayofyear peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utilise le paramètre NLS API.
VbUseSystem DayOfWeek	0	Utilise le jour de la semaine spécifié dans les paramètres système comme le premier jour de la semaine.
VbFirstJan1	1	Débute avec la semaine du 1er janvier (valeur par défaut).
VbFirstFourDays	2	Débute avec la première semaine dont au moins quatre jours se trouvent dans la nouvelle année.
VbFirstFullWeek	3	Débute avec la première semaine complète de la nouvelle année.
Valeurs renvoyées

Constante	Valeur	Description
vbSunday	1	Dimanche
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi


Dir, GetAttr et SetAttr, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbNormal	0	Normal (valeur par défaut pour Dir et SetAttr)
vbReadOnly	1	Lecture seule
vbHidden	2	Masqué
vbSystem	4	Fichier système
vbVolume	8	Nom de volume
vbDirectory	16	Répertoire ou dossier
vbArchive	32	Fichier modifié depuis la dernière sauvegarde
vbAlias	64	Sur Macintosh, l'identificateur est un alias.
Seules les constantes VbNormal, vbReadOnly, vbHidden et vbAlias sont disponibles sur le Macintosh.


IMEStatus, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code.

Les constantes concernant les paramètres régionaux japonais sont les suivantes :

Constante	Valeur	Description
vbIMEModeNoControl	0	Ne pas contrôler l'IME (valeur par défaut)
vbIMEModeOn	1	IME actif
vbIMEModeOff	2	IME inactif
vbIMEModeDisable	3	IME désactivé
vbIMEModeHiragana	4	Mode Hiragana à deux octets
vbIMEModeKatakana	5	Mode Katakana à deux octets
vbIMEModeKatakanaHalf	6	Mode Katakana à un octet
vbIMEModeAlphaFull	7	Mode alphanumérique à deux octets
vbIMEModeAlpha	8	Mode alphanumérique à un octet
Les constantes concernant les paramètres régionaux coréens sont les suivantes :

Constante	Valeur	Description
vbIMEModeNoControl	0	Ne pas contrôler l'IME (valeur par défaut)
vbIMEModeAlphaFull	7	Mode alphanumérique à deux octets
vbIMEModeAlpha	8	Mode alphanumérique à un octet
vbIMEModeHangulFull	9	Mode Hangul à deux octets
vbIMEModeHangul	10	Mode Hangul à un octet
Les constantes concernant les paramètres régionaux chinois sont les suivantes :

Constante	Valeur	Description
vbIMEModeNoControl	0	Ne pas contrôler l'IME (valeur par défaut)
vbIMEModeOn	1	IME actif
vbIMEModeOff	2	IME inactif


Constantes de comparaison

Les constantes suivantes sont définies dans la bibliothèque de types de Visual Basic pour Applications et peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbUseCompareOption	-1	Exécute une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare	0	Exécute une comparaison binaire.
vbTextCompare	1	Exécute une comparaison textuelle.
vbDatabaseCompare	2	Avec Microsoft Access (Windows seulement), exécute une comparaison fondée sur les informations d'une base de données.


Constantes diverses

Les constantes suivantes sont définies dans la bibliothèque de types de Visual Basic pour Applications et peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Équivalent	Description
vbCrLf	Chr(13) + Chr(10)	Combinaison des caractères de retour chariot et de saut de ligne
vbCr	Chr(13)	Caractère de saut de paragraphe
vbLf	Chr(10)	Caractère de saut de ligne
vbNewLine	Chr(13) + Chr(10)  ou, sur Macintosh, Chr(13)	Caractère de saut de ligne spécifique à la plate-forme ;choix en fonction de la plate-forme
vbNullChar	Chr(0)	Caractère ayant la valeur 0
vbNullString	Chaîne ayant la valeur 0	Différent d'une chaîne de longueur nulle ("") ; permet l'appel de procédures externes
vbObjectError	-2147221504	Les numéros d'erreur définis par l'utilisateur doivent être supérieurs à cette valeur. Par exemple : Err.Raise Number = vbObjectError + 1000
vbTab	Chr(9)	Caractère de tabulation
vbBack	Chr(8)	Caractère de retour arrière
vbFormFeed	Chr(12)	Inutilisé sous Microsoft Windows  ou sur Macintosh
vbVerticalTab	Chr(11)	Inutilisé sous Microsoft Windows  ou sur Macintosh


MsgBox, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Arguments de MsgBox

Constante	Valeur	Description
vbOKOnly	0	Bouton OK uniquement (valeur par défaut)
vbOKCancel	1	Boutons OK et Annuler
vbAbortRetryIgnore	2	Boutons Abandonner, Répéter et Ignorer
vbYesNoCancel	3	Boutons Oui, Non et Annuler
vbYesNo	4	Boutons Oui et Non
vbRetryCancel	5	Boutons Répéter et Annuler
vbCritical	16	Message critique
vbQuestion	32	Requête d'avertissement
vbExclamation	48	Message d'avertissement
vbInformation	64	Message d'information
vbDefaultButton1	0	Le premier bouton est le bouton par défaut (valeur par défaut)
vbDefaultButton2	256	Le deuxième bouton est le bouton par défaut
vbDefaultButton3	512	Le troisième bouton est le bouton par défaut
vbDefaultButton4	768	Le quatrième bouton est le bouton par défaut
vbApplicationModal	0	Boîte de dialogue modale (valeur par défaut)
vbSystemModal	4096	Boîte de dialogue modale système
vbMsgBoxHelpButton	16384	Ajoute le bouton Aide à la boîte de dialogue
VbMsgBoxSetForeground	65536	Désigne la fenêtre de la boîte de dialogue comme fenêtre de premier plan
vbMsgBoxRight	524288	Le texte est aligné à droite
vbMsgBoxRtlReading	1048576	Indique que le texte doit s'afficher de droite à gauche sur les systèmes en langue arabe et hébraïque
Valeurs renvoyées par MsgBox

Constante	Valeur	Bouton choisi
vbOK	1	Bouton OK
vbCancel	2	Bouton Annuler
vbAbort	3	Bouton Abandonner
vbRetry	4	Bouton Répéter
vbIgnore	5	Bouton Ignorer
vbYes	6	Bouton Oui
vbNo	7	Bouton Non


Shell, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbHide	0	La fenêtre est masquée et reçoit le focus.
vbNormalFocus	1	La fenêtre reçoit le focus et retrouve sa taille et sa position d'origine.
vbMinimizedFocus	2	La fenêtre est affichée sous forme d'icône et reçoit le focus.
vbMaximizedFocus	3	La fenêtre est agrandie et reçoit le focus.
vbNormalNoFocus	4	La fenêtre retrouve sa taille et sa position les plus récentes. La fenêtre active reste active.
vbMinimizedNoFocus	6	La fenêtre est affichée sous forme d'icône. La fenêtre active reste active.
Sur Macintosh, vbNormalFocus, vbMinimizedFocus et vbMaximizedFocus font toutes passer l'application au premier plan ; vbHide, vbNoFocus et vbMinimizedFocus placent l'application à l'arrière-plan.


StrConv, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbUpperCase	1	Convertit la chaîne en majuscules.
vbLowerCase	2	Convertit la chaîne en minuscules.
vbProperCase	3	Convertit en majuscule la première lettre de chaque mot d'une chaîne.
vbWide	4	Convertit les caractères étroits (codés sur un octet) d'une chaîne en caractères larges (codés sur deux octets). Concerne les paramètres régionaux des pays d'Extrême-Orient.
vbNarrow	8	Convertit les caractères larges (codés sur deux octets) d'une chaîne en caractères étroits (codés sur un octet). Concerne les paramètres régionaux des pays d'Extrême-Orient.
vbKatakana	16	Convertit les caractères Hiragana d'une chaîne en caractères Katakana. Ne concerne que le Japon.
vbHiragana	32	Convertit les caractères Katakana d'une chaîne en caractères Hiragana. Ne concerne que le Japon.
vbUnicode	64	Convertit la chaîne en Unicode à l'aide de la page de code par défaut du système. (Non disponible sur Macintosh.)
vbFromUnicode	128	Convertit la chaîne Unicode dans la page de code par défaut du système. (Non disponible sur Macintosh.)


VarType, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbEmpty	0	Non initialisée (valeur par défaut)
vbNull	1	Aucune donnée valide
vbInteger	2	Donnée de type Integer
vbLong	3	Entier de type Long
vbSingle	4	Nombre à virgule flottante en simple précision
vbDouble	5	Nombre à virgule flottante en double précision
vbCurrency	6	Donnée de type Currency
vbDate	7	Donnée de type Date
vbString	8	Donnée de type String
vbObject	9	Objet
vbError	10	Erreur
vbBoolean	11	Donnée de type Boolean
vbVariant	12	Donnée de type Variant (uniquement utilisé dans les tableaux de variants)
vbDataObject	13	Objet de données
vbDecimal	14	Donnée de type Decimal
vbByte	17	Donnée de type Byte
vbUserDefinedType	36	Variants contenant des types définis par l'utilisateur
vbArray	8192	Tableau


Constantes de couleurs

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbBlack	0x0	Noir
vbRed	0xFF	Rouge
vbGreen	0xFF00	Vert
vbYellow	0xFFFF	Jaune
vbBlue	0xFF0000	Bleu
vbMagenta	0xFF00FF	Magenta
vbCyan	0xFFFF00	Cyan
vbWhite	0xFFFFFF	Blanc


Constantes de code de touches

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbKeyLButton	0x1	Bouton gauche de la souris
vbKeyRButton	0x2	Bouton droit de la souris
vbKeyCancel	0x3	Touche ANNULER
vbKeyMButton	0x4	Bouton secondaire de la souris
vbKeyBack	0x8	Touche RET.ARR
vbKeyTab	0x9	Touche TAB
vbKeyClear	0xC	Touche EFFACER
vbKeyReturn	0xD	Touche ENTRÉE
vbKeyShift	0x10	Touche MAJ
vbKeyControl	0x11	Touche CTRL
vbKeyMenu	0x12	Touche MENU
vbKeyPause	0x13	Touche PAUSE
vbKeyCapital	0x14	Touche VERR.MAJ
vbKeyEscape	0x1B	Touche ÉCHAP
vbKeySpace	0x20	Touche ESPACE
vbKeyPageUp	0x21	Touche PG.PRÉC
vbKeyPageDown	0x22	Touche PG.SUIV
vbKeyEnd	0x23	Touche FIN
vbKeyHome	0x24	Touche ORIGINE
vbKeyLeft	0x25	Touche FLÈCHE GAUCHE
vbKeyUp	0x26	Touche FLÈCHE HAUT
vbKeyRight	0x27	Touche FLÈCHE DROITE
vbKeyDown	0x28	Touche FLÈCHE BAS
vbKeySelect	0x29	Touche SÉLECTION
vbKeyPrint	0x2A	Touche IMPR.ÉCRAN
vbKeyExecute	0x2B	Touche EXÉCUTER
vbKeySnapshot	0x2C	Touche SNAPSHOT
vbKeyInsert	0x2D	Touche INSER
vbKeyDelete	0x2E	Touche SUPPR
vbKeyHelp	0x2F	Touche AIDE
vbKeyNumlock	0x90	Touche VERR.NUM
Les touches A à Z sont les mêmes que leurs équivalents ASCII :

Constante	Valeur	Description
vbKeyA	65	Touche A
vbKeyB	66	Touche B
vbKeyC	67	Touche C
vbKeyD	68	Touche D
vbKeyE	69	Touche E
vbKeyF	70	Touche F
vbKeyG	71	Touche G
vbKeyH	72	Touche H
vbKeyI	73	Touche I
vbKeyJ	74	Touche J
vbKeyK	75	Touche K
vbKeyL	76	Touche L
vbKeyM	77	Touche M
vbKeyN	78	Touche N
vbKeyO	79	Touche O
vbKeyP	80	Touche P
vbKeyQ	81	Touche Q
vbKeyR	82	Touche R
vbKeyS	83	Touche S
vbKeyT	84	Touche T
vbKeyU	85	Touche U
vbKeyV	86	Touche V
vbKeyW	87	Touche W
vbKeyX	88	Touche X
vbKeyY	89	Touche Y
vbKeyZ	90	Touche Z
Les touches 0 à 9 sont les mêmes que leurs équivalents ASCII :

Constante	Valeur	Description
vbKey0	48	Touche 0
vbKey1	49	Touche 1
vbKey2	50	Touche 2
vbKey3	51	Touche 3
vbKey4	52	Touche 4
vbKey5	53	Touche 5
vbKey6	54	Touche 6
vbKey7	55	Touche 7
vbKey8	56	Touche 8
vbKey9	57	Touche 9
Les constantes suivantes représentent les touches du pavé numérique :

Constante	Valeur	Description
vbKeyNumpad0	0x60	Touche 0
vbKeyNumpad1	0x61	Touche 1
vbKeyNumpad2	0x62	Touche 2
vbKeyNumpad3	0x63	Touche 3
vbKeyNumpad4	0x64	Touche 4
vbKeyNumpad5	0x65	Touche 5
vbKeyNumpad6	0x66	Touche 6
vbKeyNumpad7	0x67	Touche 7
vbKeyNumpad8	0x68	Touche 8
vbKeyNumpad9	0x69	Touche 9
vbKeyMultiply	0x6A	Touche MULTIPLICATION (*)
vbKeyAdd	0x6B	Touche PLUS (+)
vbKeySeparator	0x6C	Touche ENTRÉE
vbKeySubtract	0x6D	Touche MOINS (–)
vbKeyDecimal	0x6E	Touche POINT DÉCIMAL (.)
vbKeyDivide	0x6F	Touche DIVISION (/)
Les constantes suivantes représentent les touches de fonction :

Constante	Valeur	Description
vbKeyF1	0x70	Touche F1
vbKeyF2	0x71	Touche F2
vbKeyF3	0x72	Touche F3
vbKeyF4	0x73	Touche F4
vbKeyF5	0x74	Touche F5
vbKeyF6	0x75	Touche F6
vbKeyF7	0x76	Touche F7
vbKeyF8	0x77	Touche F8
vbKeyF9	0x78	Touche F9
vbKeyF10	0x79	Touche F10
vbKeyF11	0x7A	Touche F11
vbKeyF12	0x7B	Touche F12
vbKeyF13	0x7C	Touche F13
vbKeyF14	0x7D	Touche F14
vbKeyF15	0x7E	Touche F15
vbKeyF16	0x7F	Touche F16


Constantes Couleurs système

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Description
vbScrollBars	0x80000000	Couleur de la barre de défilement
vbDesktop	0x80000001	Couleur du bureau
vbActiveTitleBar	0x80000002	Couleur de la barre de titre de la fenêtre active
vbInactiveTitleBar	0x80000003	Couleur de la barre de titre de la fenêtre inactive
vbMenuBar	0x80000004	Couleur d'arrière-plan du menu
vbWindowBackground	0x80000005	Couleur d'arrière-plan de la fenêtre
vbWindowFrame	0x80000006	Couleur du cadre de la fenêtre
vbMenuText	0x80000007	Couleur du texte des menus
vbWindowText	0x80000008	Couleur du texte de la fenêtre
vbTitleBarText	0x80000009	Couleur du texte des légendes, de la boîte de dimensionnement et de la flèche de défilement
vbActiveBorder	0x8000000A	Couleur de la bordure de la fenêtre active
vbInactiveBorder	0x8000000B	Couleur de la bordure de la fenêtre inactive
vbApplicationWorkspace	0x8000000C	Couleur d'arrière-plan des applications MDI (multiple-document interface)
vbHighlight	0x8000000D	Couleur d'arrière-plan des éléments sélectionnés dans un contrôle
vbHighlightText	0x8000000E	Couleur du texte des éléments sélectionnés dans un contrôle
vbButtonFace	0x8000000F	Couleur d'ombrage de la surface des boutons de commande
vbButtonShadow	0x80000010	Couleur d'ombrage du bord des boutons de commande
vbGrayText	0x80000011	Texte grisé (désactivé)
vbButtonText	0x80000012	Couleur du texte des boutons poussoir
vbInactiveCaptionText	0x80000013	Couleur de texte d'une légende inactive
vb3Dhighlight	0x80000014	Couleur de surlignage des éléments en trois dimensions
vb3DDKShadow	0x80000015	Couleur de l'ombre la plus sombre des éléments en trois dimensions
vb3Dlight	0x80000016	Couleur de l'ombre intermédiaire des éléments en trois dimensions
vbInfoText	0x80000017	Couleur du texte dans les info-bulles
vbInfoBackground	0x80000018	Couleur d'arrière-plan des info-bulles


CallType, constantes

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Decription
vbMethod	1	Indique qu'une méthode a été appelée.
vbGet	2	Indique une procédure Property Get.
vbLet	4	Indique une procédure Property Let.
vbSet	8	Indique une procédure Property Set.


Constantes de feuilles

Les constantes suivantes peuvent remplacer les valeurs réelles partout dans votre code :

Constante	Valeur	Decription
vbModeless	0	UserForm n'est pas modal.
vbModal	1	UserForm est modal (valeur par défaut).


Call, instruction, exemple

Cet exemple illustre comment l'instruction Call est utilisée pour transférer le contrôle vers une procédure Sub, une fonction intrinsèque et une procédure de bibliothèque de liaisons dynamiques (DLL, Dynamic-Link Library). Les bibliothèques de liaisons dynamiques ne sont utilisées su Machintosh.

' Appelle une procédure Sub.

Call PrintToDebugWindow("Bonjour à tous")

' L'instruction ci-dessus transfère le contrôle à la

' procédure Sub suivante.

Sub PrintToDebugWindow(AnyString)

Debug.Print AnyString	' Affiche dans la fenêtre Exécution.

End Sub

' Appelle une fonction intrinsèque. La valeur renvoyée

' par la fonction est abandonnée.

Call Shell(AppName, 1)	' AppName contient le chemin

' d'accès du fichier exécutable.

' Appelle une procédure DLL Microsoft Windows.

' L'instruction Declare doit être Private dans un

' module de classe, mais pas dans un module standard.

Private Declare Sub MessageBeep Lib "User" _

(ByVal N As Integer)

Sub CallMyDll()

Call MessageBeep(0)	' Appelle une procédure DLL

' Windows.

MessageBeep 0	' Nouvel appel sans le mot clé Call.

End Sub


Choose, fonction, exemple

Cet exemple utilise la fonction Choose pour afficher un nom en réponse à un index transféré vers la procédure dans le paramètre Ind.

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Speedy", "United", "Federal")

End Function


DoEvents, fonction, exemple

Cet exemple utilise la fonction DoEvents afin que l'exécution soit cédée au système d'exploitation une fois toutes les 1000 répétitions de la boucle. La fonction DoEvents renvoie le nombre de feuilles Visual Basic ouvertes uniquement si l'application hôte est Visual Basic.

' Crée une variable pour maintenir le nombre de

' feuilles Visual Basic chargées et visibles.

Dim I, OpenForms

For I = 1 To 150000	' Lance la boucle.

If I Mod 1000 = 0 Then 	' Lorsque la boucle s'est

' répétée 1000 fois.

OpenForms = DoEvents	' Cède le contrôle au

' système d'exploitation.

End If

Next I	' Incrémente le compteur de boucle.


Do...Loop, instruction, exemple

Cet exemple montre comment les instructions Do...Loop peuvent être utilisées. L'instruction interne Do...Loop se répète 10 fois, attribue la valeur False à l'indicateur, puis quitte la boucle prématurément à l'aide de l'instruction Exit Do. La boucle externe s'arrête immédiatement après vérification de la valeur de l'indicateur.

Dim Check, Counter

Check = True: Counter = 0	' Initialise les variables.

Do	' Boucle externe.

Do While Counter < 20	' Boucle interne.

Counter = Counter + 1	' Incrémente le compteur.

If Counter = 10 Then	' Si la condition

' est vraie.

Check = False	' Attribue la valeur False à

' l'indicateur.

Exit Do	' Quitte la boucle interne.

End If

Loop

Loop Until Check = False	' Quitte la boucle externe

' immédiatement.


End, instruction, exemple

Cet exemple utilise l'instruction End pour mettre fin à l'exécution d'un code si l'utilisateur entre un mot de passe incorrect.

Sub Form_Load

Dim Password, Pword

PassWord = "Sésame"

Pword = InputBox("Tapez votre mot de passe")

If Pword <> PassWord Then

MsgBox "Mot de passe incorrect"

End

End If

End Sub


Exit, instruction, exemple

Cet exemple utilise l'instruction Exit pour quitter une boucle For...Next, une boucle Do...Loop et une procédure Sub.

Sub ExitStatementDemo()

Dim I, MyNum

Do	' Définit une boucle infinie.

For I = 1 To 1000	' Effectue la boucle 1000 fois.

MyNum = Int(Rnd * 1000)	' Génère des nombres

' aléatoires.

Select Case MyNum	' Évalue le nombre aléatoire.

Case 7: Exit For	' Si le nombre est 7,

' quitte For...Next.

Case 29: Exit Do	' Si le nombre est 29,

' quitte Do...Loop.

Case 54: Exit Sub	' Si le nombre est

' 54, quitte la

' procédure Sub.

End Select

Next I

Loop

End Sub


For Each...Next, instruction, exemple

Cet exemple utilise l'instruction For Each...Next pour rechercher la chaîne "Bonjour" dans la propriété Text de tous les éléments d'une collection. Dans notre exemple, MyObject est un objet texte de la collection MyCollection. Il s'agit là de noms génériques utilisés à des fins d'illustration uniquement.

Dim Found, MyObject, MyCollection

' Initialise une variable.

Found = False

' Se répète à chaque élément.

For Each MyObject In MyCollection

' Si Text est égal à "Bonjour".

If MyObject.Text = "Bonjour" Then

' Attribue la valeur True à Found.

Found = True

Exit For	' Quitte la boucle.

End If

Next


For...Next, instruction, exemple

Cet exemple utilise l'instruction For...Next pour créer une chaîne contenant 10 occurrences des chiffres de 0 à 9, les chaînes étant séparées par un espace. La boucle externe utilise une variable de compteur de boucle qui est décrémentée à chaque itération de la boucle.

Dim Words, Chars, MyString

For Words = 10 To 1 Step -1 	' Définit 10 répétitions.

For Chars = 0 To 9	' Définit 10 répétitions.

MyString = MyString & Chars	' Ajoute le chiffre

' à la chaîne.

Next Chars	' Incrémente le compteur

MyString = MyString & " "	' Ajoute un espace.

Next Words


GoSub...Return, instruction, exemple

Cet exemple utilise l'instruction GoSub pour appeler une sous-routine au sein d'une procédure Sub. L'instruction Return entraîne la reprise de l'exécution au niveau de l'instruction qui suit immédiatement l'instruction GoSub. L'instruction Exit Sub permet d'empêcher le contrôle de passer accidentellement dans la sous-routine.

Sub GosubDemo()

Dim Num

' Demande à l'utilisateur d'entrer un nombre.

Num = InputBox("Entrez un nombre positif qui " & _

"sera divisé par deux.")

' Utilise la routine uniquement si l'utilisateur entre

' un nombre positif.

If Num > 0 Then GoSub MyRoutine

Debug.Print Num

Exit Sub	' Utilise Exit pour éviter les erreurs.

MyRoutine:

Num = Num/2	' Effectue la division.

Return	' Renvoie le contrôle à l'instruction.

End Sub	' suivant l'instruction GoSub.


GoTo, instruction, exemple

Cet exemple utilise l'instruction GoTo pour se brancher aux étiquettes de ligne indiquées au sein d'une procédure.

Sub GotoStatementDemo()

Dim Number, MyString

Number = 1 	' Initialise la variable.

' Évalue Number et se branche à l'étiquette

' appropriée.

If Number = 1 Then GoTo Line1 Else GoTo Line2

Line1:

MyString = "Number est égal à 1"

GoTo LastLine	' Passe à la dernière ligne.

Line2:

' L'instruction suivante ne peut jamais être

' exécutée.

MyString = "Number est égal à 2"

LastLine:

Debug.Print MyString	' Affiche "Number est

' égal à 1" dans la fenêtre

' Exécution.

End Sub


If...Then...Else, instruction, exemple

Cet exemple illustre l'instruction If...Then...Else sous la forme d'une ligne unique ou d'un bloc. Il présente également l'utilisation de l'instruction If TypeOf...Then...Else.

Dim Number, Digits, MyString

Number = 53	' Initialise la variable.

If Number < 10 Then

Digits = 1

ElseIf Number < 100 Then

' Si la condition prend la valeur True,

' l'instruction suivante est exécutée.

Digits = 2

Else

Digits = 3

End If

' Attribue une valeur en utilisant la syntaxe sur une seule ligne.

If Digits = 1 Then MyString = "Un" Else MyString = "Plusieurs"

Utilisez la construction If TypeOf pour déterminer si le contrôle transféré dans une procédure est une zone de texte.

Sub ControlProcessor(MyControl As Control)

If TypeOf MyControl Is CommandButton Then

Debug.Print "Vous êtes passé dans un contrôle " & TypeName(MyControl)

ElseIf TypeOf MyControl Is CheckBox Then

Debug.Print "Vous êtes passé dans un contrôle " & TypeName(MyControl)

ElseIf TypeOf MyControl Is TextBox Then

Debug.Print "Vous êtes passé dans un contrôle " & TypeName(MyControl)

End If

End Sub


IIf, fonction, exemple

Cet exemple utilise la fonction IIf pour évaluer le paramètre TestMe de la procédure CheckIt et renvoie soit le mot "Grand" si le montant est supérieur à 1000 soit le mot "Petit" s'il est inférieur à 1000.

Function CheckIt (TestMe As Integer)

CheckIt = IIf(TestMe > 1000, "Grand", "Petit")

End Function


On...GoSub, On...GoTo, instructions, exemple

Cet exemple utilise les instructions On...GoSub et On...GoTo pour passer directement à des sous-routines et à des étiquettes de ligne, respectivement.

Sub OnGosubGotoDemo()

Dim Number, MyString

Number = 2	' Initialise la variable.

' Branch to Sub2.

On Number GoSub Sub1, Sub2	' L'exécution

' reprend ici après

' On...GoSub.

On Number GoTo Line1, Line2	' Se branche sur

' Line2.

' L'exécution ne reprend pas ici après On...GoTo.

Exit Sub

Sub1:

MyString = "Dans Sub1" : Return

Sub2:

MyString = "Dans Sub2" : Return

Line1:

MyString = "Dans Line1"

Line2:

MyString = "Dans Line2"

End Sub


Partition, fonction, exemple

Nous supposons que vous disposez d'une table Commandes contenant un champ Port. Dans cet exemple est créée une sélection qui compte le nombre de commandes dont le coût de port est compris dans chacune des plages. La fonction Partition permet de définir ces plages, puis la fonction SQL Count décompte le nombre de commandes dans chaque plage. Dans cet exemple, les arguments de la fonction Partition sont start = 0, stop = 500 et interval = 50. La première plage ira donc de 0 à 49, et ainsi de suite jusqu'à 500.

SELECT DISTINCTROW Partition([Port],0, 500, 50) AS Range,

Count(Commandes.Port) AS Count

FROM Commandes

GROUP BY Partition([Port],0,500,50);


Select Case, instruction, exemple

Cet exemple utilise l'instruction Select Case pour déterminer la valeur d'une variable. La deuxième locution Case contient la valeur de la variable qui est évaluée ; seule l'instruction qui lui est associée est exécutée.

Dim Number

Number = 8	' Initialise la variable.

Select Case Number	' Évalue Number.

Case 1 To 5	' Le nombre est compris entre 1 et 5 inclus.

Debug.Print "Entre 1 et 5"

' La locution Case suivante est la seule qui prend la

' valeur True.

Case 6, 7, 8	' Le nombre est compris entre 6 et 8.

Debug.Print "Entre 6 et 8"

Case 9 To 10	' Le nombre est 9 ou 10.

Debug.Print "Supérieur à 8"

Case Else	' Autres valeurs.

Debug.Print "Non compris entre 1 et 10"

End Select


Shell, fonction, exemple

Cet exemple utilise la fonction Shell pour exécuter une application indiquée par l'utilisateur. Sur Macintosh, le nom de l'unité par défaut est "HD", les éléments constitutifs du chemin d'accès étant séparés par des deux-points au lieu des barres obliques inversées. De même, vous devez remplacer \Windows par des dossiers Macintosh.

' Si vous attribuez la valeur 1 au deuxième argument,

' l'application s'ouvre à sa taille normale

' et devient l'application active.

Dim RetVal

' Exécute la calculatrice.

RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)


Stop, instruction, exemple

Cet exemple utilise l'instruction Stop pour suspendre l'exécution à chaque itération de la boucle  For...Next.

Dim I

For I = 1 To 10	' Lance la boucle For...Next.

Debug.Print I	' Affiche I dans la fenêtre Exécution.

Stop	' S'arrête à chaque itération.

Next I


Switch, fonction, exemple

Cet exemple utilise la fonction Switch pour renvoyer le nom de la langue correspondant au nom d'une ville.

Function MatchUp (CityName As String)

Matchup = Switch( _

CityName = "Londres", "Anglais", _

CityName = "Rome", "Italien", _

CityName = "Paris", "Français")

End Function


While...Wend, instruction, exemple

Cet exemple utilise l'instruction While...Wend pour incrémenter une variable de compteur. Les instructions de la boucle sont exécutées tant que la condition a la valeur True.

Dim Counter

Counter = 0	' Initialise la variable.

While Counter < 20	' Teste la valeur du compteur.

Counter = Counter + 1	' Incrémente le compteur.

Wend	' Met fin à la boucle End While quand Counter > 19.

Debug.Print Counter	' Inscrit 20 dans la fenêtre Exécution.


With, instruction, exemple

Cet exemple utilise l'instruction With pour exécuter une série d'instructions sur un seul objet. L'objet MyObject et ses propriétés sont des noms génériques utilisés à des fins d'illustration uniquement.

With MyObject

.Height = 100	' Similaire à MyObject.Height = 100.

.Caption = "Bonjour à tous" ' Similaire à MyObject.Caption = "Bonjour à tous".

With .Font

.Color = Red  ' Similaire à MyObject.Font.Color = Red.

.Bold = True  ' Similaire à MyObject.Font.Bold = True.

End With

End With


Call, instruction

Transfère le contrôle à une procédure Sub, à une procédure Function ou à une procédure de bibliothèque de liaisons dynamiques (DLL).

Syntaxe

[Call] name [argumentlist]

La syntaxe de l'instruction Call comprend les éléments suivants :

Élément	Description
Call	Facultatif. Mot clé. S'il est indiqué, vous devez placer argumentlist entre parenthèses. Exemple : Call MaProc(0)
	Call MyProc(0)
name	Nom de la procédure à appeler.
argumentlist	Facultatif. Liste, délimitée par des virgules, de variables, tableaux ou expressions à passer à la procédure. La liste argumentlist peut contenir les mots clés ByVal ou ByRef pour décrire comment les arguments sont traités par la procédure appelée. Toutefois, ByVal et ByRef peuvent uniquement être utilisés dans une instruction Call lors de l'appel d'une procédure DLL. Sur Macintosh, ByVal et ByRef peuvent être utilisés dans une instruction Call lors de l'appel d'une ressource de code Macintosh.
Remarques

Il n'est pas obligatoire d'employer le mot clé Call pour appeler une procédure. Toutefois, si vous utilisez ce mot clé dans le cadre de l'appel d'une procédure nécessitant des arguments, l'élément argumentlist doit être placé entre parenthèses. Dans le cas d'une procédure appelée sans le mot clé Call, vous ne devez pas encadrer argumentlist par des parenthèses. Quelle que soit la syntaxe adoptée pour appeler une fonction intrinsèque ou définie par l'utilisateur, la valeur renvoyée par la fonction est perdue.

Pour passer un tableau entier à une procédure, entrez le nom du tableau, suivi de parenthèses vides.


Choose, fonction

Sélectionne et renvoie une valeur à partir d'une liste d'arguments.

Syntaxe

Choose(index, choice-1[, choice-2, ... [, choice-n]])

La syntaxe de la fonction Choose comprend les éléments suivants :

Élément	Description
index	Expression numérique ou champ qui renvoie une valeur comprise entre 1 et le nombre de choix disponibles.
choice	Expression Variant contenant l'un des choix possibles.
Remarques

La fonction Choose renvoie une valeur à partir d'une liste de choix selon la valeur de l'argument index. Si index a pour valeur 1, Choose renvoie le premier choix de la liste ; si index a pour valeur 2, le deuxième choix est renvoyé, et ainsi de suite.

Vous pouvez utiliser la fonction Choose pour examiner une valeur à partir d'une liste de valeurs possibles. Par exemple, si index a pour valeur 3, et si choice-1 = "un", choice-2 = "deux" et choice-3 = "trois", Choose renvoie "trois". Cette possibilité est très utile lorsque index représente une valeur dans un groupe d'options.

La fonction Choose évalue tous les choix de la liste, même si elle n'en renvoie qu'un seul. Vous devez donc être particulièrement attentif à certains effets secondaires indésirables de cette fonction. Par exemple, si vous utilisez une fonction MsgBox dans une expression pour chacun des choix, une boîte de dialogue s'affichera pour chaque choix, bien qu'un seul d'entre eux soit renvoyé par la fonction Choose.

La fonction Choose renvoie la valeur Null si index est inférieur à 1 ou supérieur au nombre de choix de la liste.

Si index n'est pas un nombre entier, il est arrondi au nombre entier le plus proche avant d'être évalué.


DoEvents, fonction

Arrête momentanément l'exécution afin que le système d'exploitation puisse traiter d'autres événements.

Syntaxe

DoEvents( )

Remarques

La fonction DoEvents renvoie une valeur de type Integer représentant le nombre de feuilles ouvertes dans les versions autonomes de Visual Basic (Visual Basic Édition professionnelle, par exemple). DoEvents renvoie un zéro dans toutes les autres applications.

DoEvents passe la main au système d'exploitation jusqu'à ce que ce dernier ait terminé de traiter les événements de sa file d'attente et que tous les codes de la file d'attente SendKeys aient été transmis.

La fonction DoEvents est particulièrement indiquée pour les opérations simples que l'utilisateur veut annuler juste après les avoir lancées, comme par exemple la recherche d'un fichier. Pour les opérations nécessitant une exécution plus longue, l'opérateur pourra plus aisément rendre la main au processeur s'il a recours à un contrôle Timer ou à un composant EXE ActiveX. Dans ce cas, la tâche s'effectue de manière complètement indépendante, hors de votre application, le système d'exploitation gérant à la fois le multitâche et le partage du temps.

Attention   Lorsque vous rendez la main de manière temporaire à votre processeur dans une procédure d'événement, veillez à ce que la procédure ne soit pas exécutée à nouveau par une autre portion de votre programme, avant que le résultat du premier appel ne soit renvoyé ; cette situation peut avoir des conséquences inattendues. En outre, n'utilisez pas DoEvents s'il existe un risque d'interaction imprévisible entre d'autres applications et votre procédure pendant que l'exécution est suspendue.


Do...Loop, instruction

Répète un bloc d'instructions aussi longtemps qu'une condition est vraie (True) ou jusqu'à ce qu'une condition devienne vraie (True).

Syntaxe

Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]

Loop

Vous pouvez également utiliser la syntaxe suivante :

Do
[statements]
[Exit Do]
[statements]

Loop [{While | Until} condition]

La syntaxe de l'instruction Do Loop comprend les éléments suivants :

Élément	Description
condition	Facultatif. Expression numérique ou expression de chaîne vraie (True) ou fausse (False). Si la valeur de condition est Null, elle est considérée comme fausse (False).
statements	Une ou plusieurs instructions répétées tant que condition est True, ou jusqu'à ce qu'elle le devienne.
Remarques

Vous pouvez placer autant d'instructions Exit Do que vous le souhaitez dans une instruction Do…Loop, afin de sortir de la boucle. Souvent utilisée dans l'évaluation d'une condition (notamment If…Then), l'instruction Exit Do passe la main à l'instruction qui suit immédiatement l'instruction Loop.

Quand les instructions Do…Loop sont imbriquées, le contrôle est transféré à l'instruction Do…Loop située à un niveau au-dessus de la boucle dans laquelle l'instruction Exit Do apparaît.


End, instruction

Termine une procédure ou un bloc.

Syntaxe

End

End Function

End If

End Property

End Select

End Sub

End Type

End With

La syntaxe de l'instruction End peut prendre les formes suivantes :

Instruction	Description
End	Termine l'exécution immédiatement. Utilisée seule, cette instruction n'est pas obligatoire. Elle peut être placée en tout point d'une procédure pour mettre fin à l'exécution du code, fermer des fichiers ouverts à l'aide de l'instruction Open et effacer des variables.
End Function	Pour terminer une instruction Function.
End If	Pour terminer un bloc If…Then…Else.
End Property	Pour terminer une procédure Property Let, Property Get ou Property Set.
End Select	Pour terminer une instruction Select Case.
End Sub	Pour terminer une instruction Sub.
End Type	Pour terminer une définition de type défini par l'utilisateur (instruction Type).
End With	Pour terminer une instruction With.
Remarques

Lorsqu'elle est exécutée, l'instruction End réinitialise toutes les variables au niveau du module et toutes les variables locales statiques dans tous les modules. Pour conserver la valeur de ces variables, utilisez plutôt l'instruction Stop. Vous pourrez ainsi reprendre l'exécution tout en préservant la valeur des variables.

Note   L'instruction End met immédiatement fin à l'exécution du code, sans appeler d'événement Unload, QueryUnload, ou Terminate, ou tout autre code Visual Basic. Le code que vous avez écrit dans les événements Unload, QueryUnload, et Terminate des feuilles et des modules de classe n'est pas exécuté. Les objets créés depuis les modules de classe sont détruits, les fichiers ouverts au moyen de l'instruction Open sont fermés et la mémoire occupée par le programme est vidée. Les références d'objet appartenant à d'autres programmes ne sont plus valides.

L'instruction End permet de forcer l'arrêt du programme. Pour qu'un programme Visual Basic se termine normalement, vous devez décharger toutes les feuilles. Votre programme se termine lorsqu'il n'y a plus aucun programme maintenant des références à des objets créés depuis vos modules de classe publics et qu'aucun code n'est exécuté.


Exit, instruction

Quitte un bloc Do…Loop, For...Next, Function, Sub ou Property.

Syntaxe

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

La syntaxe de l'instruction Exit peut prendre les formes suivantes :

Instruction	Description
Exit Do	Permet d'arrêter une instruction Do...Loop. Elle ne peut être utilisée qu'à l'intérieur d'une instruction Do...Loop. Exit Do passe la main à l'instruction qui suit l'instruction Loop. Utilisée à l'intérieur d'instructions Do...Loop imbriquées, Exit Do passe la main à la boucle située à un niveau au-dessus de la boucle dans laquelle elle apparaît.
Exit For	Permet d'arrêter une boucle For. Elle ne peut être utilisée qu'à l'intérieur d'une boucle For...Next ou For Each...Next. Exit For passe la main à l'instruction qui suit l'instruction Next. Utilisée à l'intérieur d'instructions For imbriquées, Exit For passe la main à la boucle située à un niveau au-dessus de la boucle dans laquelle elle apparaît.
Exit Function	Quitte immédiatement la procédure Function dans laquelle elle est utilisée. L'exécution se poursuit par l'instruction suivant celle qui a appelé l'instruction Function.
Exit Property	Quitte immédiatement la procédure Property dans laquelle elle est utilisée. L'exécution se poursuit par l'instruction suivant celle qui a appelé la procédure Property.
Exit Sub	Quitte immédiatement la procédure Sub dans laquelle elle est utilisée. L'exécution se poursuit par l'instruction suivant celle qui a appelé la procédure Sub.
Remarques

Ne confondez pas les instructions Exit et End. Exit ne marque pas la fin d'une structure.


For Each...Next, instruction

Répète un groupe d'instructions pour chaque élément d'un tableau ou d'une collection.

Syntaxe

For Each element In group
[statements]
[Exit For]
[statements]

Next [element]

La syntaxe de l'instruction For...Each...Next comprend les éléments suivants :

Élément	Description
element	Variable utilisée pour être répétée sur tous les éléments d'une collection ou d'un tableau. Dans le cas d'une collection, la variable element peut uniquement être une variable de type Variant, une variable objet générique ou toute variable objet spécifique. Dans le cas d'un tableau, il peut uniquement s'agir d'une variable de type Variant.
group	Nom d'une collection ou d'un tableau d'objets (à l'exception d'un tableau de type défini par l'utilisateur).
statements	Facultatif. Une ou plusieurs instructions exécutées pour chaque élément d'un group.
Remarques

Le bloc For...Each entre dans la boucle si l'argument group contient au moins un élément. Une fois le bloc entré dans la boucle, toutes les instructions de cette dernière sont appliquées au premier élément de group. Si group comporte plusieurs éléments, la boucle continue de s'exécuter pour chaque élément. Une fois que tous les éléments de group ont été traités, la boucle est fermée et l'exécution se poursuit par l'instruction située après l'instruction Next.

Vous pouvez également placer des instructions Exit For pour quitter la boucle à tout moment. L'instruction Exit For est souvent placée après l'évaluation d'une condition (If…Then, par exemple) ; elle passe la main à l'instruction située immédiatement après l'instruction Next.

Vous pouvez imbriquer des boucles For...Each...Next en plaçant une boucle For...Each...Next à l'intérieur d'une autre, à condition que les arguments elementde chaque boucle soient différents.

Note   Si vous omettez l'argument elementdans une instruction Next, l'exécution continue comme si element était inclus. Si une instruction Next est rencontrée avant l'instruction For correspondante, une erreur se produit.

Vous ne pouvez utiliser une instruction For...Each...Next avec un tableau de type défini par l'utilisateur car une variable de type Variant ne peut contenir un type défini par l'utilisateur.


For...Next, instruction

Répète un groupe d'instructions le nombre de fois indiqué.

Syntaxe

For counter = start To end [Step step]
[statements]
[Exit For]
[statements]

Next [counter]

La syntaxe de l'instruction For…Next comprend les éléments suivants :

Élément	Description
counter	Variable numérique utilisée comme un compteur de boucles. Cette variable ne peut être ni une variable de type Boolean, ni un élément de tableau.
start	Valeur initiale de counter.
end	Valeur finale de counter.
step	Facultatif. Valeur d'incrémentation de counter après chaque exécution de la boucle. Si aucune valeur n'est indiquée, l'argument step prend par défaut la valeur 1.
statements	Facultatif. Une ou plusieurs instructions entre For et Next à exécuter le nombre de fois indiqué.
Remarques

L'argument step peut être positif ou négatif. Sa valeur contrôle l'exécution de la boucle de la façon suivante :

Valeur	Condition d'exécution de la boucle
Positive ou 0	counter <= end
Négative	counter >= end
Une fois que toutes les instructions de la boucle ont été exécutées, l'argument step est ajouté à counter. Alors, les instructions de la boucle sont de nouveau exécutées (selon le résultat du même test que celui effectué à la première exécution), ou le contrôle sort de la boucle et exécute l'instruction qui suit immédiatement Next.

Conseil   Toute modification de la valeur de counterà l'intérieur de la boucle risque de rendre la lecture et la correction des erreurs du programme plus difficiles.

Vous pouvez également placer des instructions Exit For pour quitter la boucle à tout moment. L'instruction Exit For est souvent placée après l'évaluation d'une condition (If…Then, par exemple) ; elle passe la main à l'instruction située immédiatement après l'instruction Next.

Vous pouvez imbriquer des boucles For...Next en plaçant une boucle à l'intérieur d'une autre. Vous devez utiliser des noms de variable (counter) distincts pour chaque boucle, sur le modèle de la construction suivante :

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

Note   Si vous omettez counter dans une instruction Next, l'exécution continue comme s'il était inclus. Si l'instruction Next est rencontrée avant l'instruction For correspondante, une erreur se produit.


GoSub...Return, instruction

Provoque le branchement vers une sous-routine de procédure, puis le retour à la procédure.

Syntaxe

GoSub line
...
line
...

Return

L'argument line peut être n'importe quelle étiquette de ligne ou numéro de ligne.

Remarques

GoSub et Return peuvent apparaître n'importe où dans une procédure, mais l'instruction GoSub et l'instruction Return correspondante doivent appartenir dans la même procédure. Une sous-routine peut contenir plusieurs instructions Return. Toutefois, la première instruction Return rencontrée provoque la poursuite du déroulement du programme à partir de l'instruction qui suit immédiatement l'instruction GoSub la plus récente.

Note   Il n'est pas possible d'accéder à des procédures Sub ou de les quitter au moyen de GoSub...Return.

Conseil   Il est parfois préférable de créer des procédures séparées que vous pourrez appeler plutôt que d'utiliser GoSub...Return.


GoTo, instruction

Effectue un branchement inconditionnel vers une ligne déterminée d'une procédure.

Syntaxe

GoTo line

L'argument line peut contenir une étiquette de ligne ou un numéro de ligne quelconque.

Remarques

L'instruction GoTo ne peut effectuer un branchement que vers des lignes qui appartiennent à la procédure dans laquelle elle est utilisée.

Note   Les programmes qui contiennent un trop grand nombre d'instructions GoTo peuvent s'avérer difficiles à lire et à corriger. Dans la mesure du possible, optez pour des instructions de contrôle structurées (Do...Loop, For...Next, If...Then...Else, Select Case).


If...Then...Else, instruction

Permet d'exécuter conditionnellement des instructions en fonction du résultat d'une expression.

Syntaxe

If condition Then [statements] [Else elsestatements]

Vous pouvez également utiliser la syntaxe suivante :

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

La syntaxe de l'instruction If...Then...Else comprend les éléments suivants :

Élément	Description
condition	Un des deux types d'expression suivants :
	Une expression numérique ou expression de chaîne qui prend la valeur True ou False. Si l'argument condition est Null, il est considéré comme False.
	Une expression de la forme TypeOf objectname Is objecttype. Objectname est une référence à un objet et objecttype est un type d'objet valide. L'expression a pour valeur True si objectname est du type d'objet indiqué par objecttype ; sinon elle a pour valeur False.
statements	Facultatif dans la feuille bloc ; nécessaire dans une feuille à une seule ligne sans clause Else. Une ou plusieurs instructions séparées par un signe deux-points ; exécutée si la valeur de condition est True.
condition-n	Facultatif. Similaire à condition.
elseifstatements	Facultatif. Une ou plusieurs instructions exécutées si la valeur de l'argument condition-n associé est True.
elsestatements	Facultatif. Une ou plusieurs instructions exécutées si aucun argument condition précédent n'a la valeur True ou si la valeur de l'expression condition-n n'est pas True.
Remarques

Vous pouvez utiliser la syntaxe à une seule ligne (première syntaxe) pour effectuer de petits tests simples. Toutefois, la deuxième syntaxe fournit une plus grande structure et davantage de souplesse ; en outre, elle est généralement plus facile à lire, à mettre à jour et à corriger.

Note   Dans le cas de la syntaxe à une seule ligne, il est possible d'exécuter plusieurs instructions à partir d'une décision If...Then. Toutes les instructions doivent se trouver sur la même ligne et être séparées par un signe deux-points, comme dans l'instruction suivante :

If A > 10 Then A = A + 1 : B = B + A : C = C + B

Une instruction If d'un bloc doit être la première instruction d'une ligne. Les éléments Else, ElseIf et End If de l'instruction peuvent être uniquement précédés d'un numéro de ligne ou d'une étiquette de ligne. Le bloc If doit se terminer par une instruction End If.

Pour déterminer si une instruction If est un bloc If, examinez ce qui suit le mot clé Then. S'il ne s'agit pas d'un commentaire, l'instruction est traitée comme une instruction If à une seule ligne.

Les clauses Else et ElseIf sont facultatifs. Un bloc If peut contenir autant de clauses Elself que vous le souhaitez, mais aucune ne peut apparaître après une clause Else. N'importe quel bloc d'instructions peut contenir des instructions If imbriquées.

Lorsque vous exécutez une instruction If d'un bloc (deuxième syntaxe), la condition est testée. Si la valeur de l'argument condition est True, les instructions qui suivent Then sont exécutées. Si la valeur de l'argument condition est False, chacune des conditions ElseIf (s'il y en a) sont évaluées l'une après l'autre. Quand une condition de valeur True est trouvée, les instructions qui suivent le Then correspondant sont exécutées. Si aucune des conditions Elself n'a pour valeur True, ou s'il n'y a pas de clause ElseIf, les instructions qui suivent Else sont exécutées. Une fois que les instructions qui suivent Then ou Else exécutées, l'exécution du programme se poursuit à partir de l'instruction située après End If.

Conseil   L'instruction Select Case peut s'avérer mieux adaptée à l'évaluation d'une expression simple qui possède plusieurs actions possibles. Toutefois, la clause TypeOf objectname Is objecttype ne peut pas être utilisée avec Select Case.

Note   La clause TypeOf ne peut pas être utilisée avec des types de données explicites tels que Long, Integer et des types autres que le type Object.


Iif, fonction

Renvoie l'un ou l'autre de deux arguments selon l'évaluation d'une expression.

Syntaxe

IIf(expr, truepart, falsepart)

La syntaxe de la fonction IIf comporte les arguments nommés suivants :

Élément	Description
expr	Expression à évaluer.
truepart	Valeur ou expression renvoyée si la valeur de expr est True.
falsepart	Valeur ou expression renvoyée si la valeur de expr est False.
Remarques

La fonction IIf évalue toujours truepart et falsepart, même si elle ne renvoie qu'un seul de ces arguments. Vous devez donc être particulièrement attentif à certains effets secondaires indésirables de cette fonction. Par exemple, si l'évaluation de falsepart engendre une division par zéro, une erreur se produit même si la valeur de expr est True.


On...GoSub, On...GoTo, instructions

Provoquent le branchement vers une des lignes indiquées, selon la valeur d'une expression.

Syntaxe

On expression GoSub destinationlist

On expression GoTo destinationlist

La syntaxe des instructions On...GoSub et On...GoTo comprend les éléments suivants :

Élément	Description
expression	Toute expression numérique qui a pour résultat une valeur comprise entre 0 et 255 inclus. Si l'argument expression n'est pas un nombre entier, il est arrondi avant d'être évalué.
destinationlist	Liste de numéros de ligne ou d'étiquettes de ligne séparés par des virgules.
Remarques

La valeur de l'argument expression détermine vers quelle ligne le branchement a lieu dans destinationlist. Si la valeur de expression est inférieure à 1 ou supérieure au nombre d'éléments de la liste, on obtient un des résultats ci-dessous :

Expression	Résultat
Égale à 0	Le contrôle du programme passe à l'instruction qui suit On...GoSub ou On...GoTo.
Supérieure au nombre d'éléments de la liste	Le contrôle passe à l'instruction qui suit On...GoSub ou On...GoTo.
Négative	Une erreur se produit.
Supérieure à 255	Une erreur se produit.
Une même liste peut contenir à la fois des numéros de ligne et des étiquettes de ligne. Vous pouvez utiliser autant d'étiquettes et/ou de numéros de ligne que vous le souhaitez avec On...GoSub et On...GoTo. Toutefois, s'ils ne tiennent pas sur une seule ligne, vous devez utiliser le caractère de continuité de ligne pour que la ligne logique se poursuive sur la ligne physique suivante.

Conseil   L'instruction Select Case permet d'exécuter des branchements multiples de manière plus structurée et plus souple.


Partition, fonction

Renvoie une chaîne de caractères de type Variant (String) indiquant l'endroit où un nombre apparaît au sein d'une série calculée de plages de valeurs.

Syntaxe

Partition(number, start, stop, interval)

La syntaxe de la fonction Partition comprend les arguments nommés suivants :

Élément	Description
number	Nombre entier que vous souhaitez évaluer par rapport aux plages.
start	Nombre entier qui marque le début de l'ensemble des plages de nombres. La valeur de cet argument ne peut être inférieure à 0.
stop	Nombre entier qui marque la fin de l'ensemble des plages de nombres. La valeur de cet argument ne peut être ni inférieure ni égale à celle de start.
Remarques

La fonction Partition identifie la plage qui contient l'argument number et renvoie une chaîne de type Variant (String) décrivant cette plage. La fonction Partition est particulièrement utile dans les requêtes. Vous pouvez créer une requête Sélection qui indique le nombre de commandes appartenant à différentes plages (par exemple, les commandes dont la valeur est comprise entre 1 et 1 000, entre 1 001 et 2 000, etc.).

Le tableau ci-dessous indique comment les plages sont déterminées à partir de trois jeux d'arguments start, stop et interval. Les colonnes Première plage et Dernière plage illustrent le texte renvoyé par la fonction Partition. Les plages sont représentées par lowervalue:uppervalue, où la valeur la plus basse (lowervalue) de la plage est séparée de la valeur la plus élevée (uppervalue) par un signe deux-points (:).

Start	stop	interval	Avant première plage	Première plage	Dernière plage	Après dernière plage
0	99	5	"   : -1"	"      0:  4"	"     95: 99"	"   100:   "
20	199	10	"   :  19"	"    20:  29"	"   190: 199"	"   200:   "
100	1010	20	"   :  99"	"  100:  119"	" 1000: 1010"	" 1011:   "
Dans ce tableau, le troisième exemple illustre le résultat obtenu lorsque start et stop définissent un jeu de nombres qui ne peut être divisé de façon égale par interval. La dernière plage s'étend jusqu'à stop (11 nombres) même si interval est égal à 20.

Au besoin, la fonction Partition renvoie une plage comptant suffisamment d'espaces à gauche pour qu'il y ait, à gauche et à droite du signe deux-points, autant de caractères que dans l'argument stop plus un. Ainsi, si vous utilisez Partition avec d'autres nombres, le texte obtenu pourra être correctement traité au cours d'un tri ultérieur éventuel.

Si la valeur de interval est 1, la plage renvoyée sera number:number, quels que soient les arguments start et stop. Par exemple, si interval a la valeur 1, et si number a la valeur 100 et stop la valeur 1000, Partition renvoie "  100:  100".

Si l'un des éléments a pour valeur Null, la fonction Partition renvoie la valeur Null.


Select Case, instruction

Exécute un des blocs d'instructions indiqués, selon la valeur d'une expression.

Syntaxe

Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]

End Select

La syntaxe de l'instruction Select Case comprend les éléments suivants :

Élément	Description
testexpression	Toute expression numérique ou expression de chaîne.
expressionlist-n	Si une instruction Case apparaît. Liste délimitée dont les éléments peuvent prendre l'une des formes suivantes : expression, expression To expression, Is comparisonoperator expression. Le mot clé To indique une plage de valeurs. Si vous utilisez To, la valeur la plus petite doit figurer avant To. Utilisez le mot clé Is avec les opérateurs de comparaison (sauf Is et Like) pour indiquer une plage de valeurs. S'il n'est pas indiqué, le mot clé Is est inséré automatiquement.
statements-n	Facultatif. Une ou plusieurs instructions exécutées si testexpression correspond à l'un des éléments de expressionlist-n.
elsestatements	Facultatif. Une ou plusieurs instructions exécutées si testexpression ne correspond à aucun élément de la clause Case.
Remarques

Si testexpression correspond à un élément de la liste expressionlist associé à une clause Case, le bloc d'instructions qui suit cette clause est exécuté jusqu'à la clause Case suivante ou jusqu'à End Select, dans le cas de la dernière clause. Le contrôle passe ensuite à l'instruction qui suit End Select. Si expressiontest correspond à une expression de la liste expressionlist dans plusieurs clauses Case, seules les instructions qui suivent la première correspondance sont exécutées.

La clause Case Else permet d'indiquer que elsestatements doit être exécutée si testexpression ne correspond à aucune autre clause Case. Bien que cela ne soit pas indispensable, la présence d'une instruction Case Else dans votre bloc Select Case peut être utile lorsque testexpression prend des valeurs inattendues. S'il n'y a pas d'instruction Case Else et si aucune des expressions des clauses Case ne correspond à testexpression, l'exécution du programme se poursuit à partir de l'instruction qui suit End Select.

Vous pouvez utiliser plusieurs expressions ou plages dans chaque clause Case. En voici un exemple :

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Note   L'opérateur de comparaison Is ne joue pas le même rôle que le mot clé Is utilisé dans l'instruction Select Case.

Vous pouvez aussi indiquer des plages et des expressions multiples pour des chaînes de caractères. Dans l'exemple suivant, Case correspond aux chaînes de caractères qui sont absolument identiques à tout, aux chaînes comprises entre noix et soupe dans l'ordre alphabétique, ainsi qu'à la valeur en cours de TestItem :

Case "tout", "noix" To "soupe", TestItem

Les instructions Select Case peuvent être imbriquées. À chaque instruction Select Case doit correspondre une instructions End Select.


Shell, fonction

Lance un programme exécutable et renvoie une valeur de type Variant (Double) représentant l'identificateur (ID) de la tâche exécutée en cas de succès, ou un zéro en cas d'échec.

Syntaxe

Shell(pathname[,windowstyle])

La syntaxe de la fonction Shell comprend les arguments nommés suivants :

Élément	Description
pathname	De type Variant (String). Nom du programme à exécuter, ainsi que tous les arguments ou paramètres de ligne de commande ; peut également préciser le répertoire ou dossier et le lecteur. Sur Macintosh, vous pouvez utiliser la fonction MacID pour indiquer la signature d'une application au lieu de son nom. L'exemple suivant utilise la signature de Microsoft Word :  Shell MacID("MSWD")
windowstyle	Facultatif. De type Variant (Integer) correspondant au style de la fenêtre dans laquelle le programme est exécuté. En cas d'omission de windowstyle, le programme est activé mais la fenêtre est réduite. Sur Macintosh (système 7.0 ou supérieur), windowstyle détermine uniquement si l'application prend ou non le focus à l'exécution.
L'argument nommé windowstyle peut prendre les valeurs ci-dessous :

Constante	Valeur	Description
vbHide	0	La fenêtre est masquée et activée. La constante vbHide n'est pas applicable sur les plates-formes Macintosh.
vbNormalFocus	1	La fenêtre est activée et rétablie à sa taille et à sa position d'origine.
vbMinimizedFocus	2	La fenêtre est affichée sous forme d'icône et activée.
vbMaximizedFocus	3	La fenêtre est agrandie et activée.
vbNormalNoFocus	4	La fenêtre est rétablie à sa taille et à sa position les plus récentes. La fenêtre active reste active.
vbMinimizedNoFocus	6	La fenêtre est affichée sous forme d'icône. La fenêtre active reste active.
Remarques

Si la fonction Shell exécute correctement le programme nommé, elle renvoie son identificateur de tâche (ID). Il s'agit d'un numéro identifiant de manière univoque le programme en cours d'exécution. Si la fonction Shell ne peut lancer le programme nommé, elle génère une erreur.

Sur Macintosh, les constantes vbNormalFocus, vbMinimizedFocus et vbMaximizedFocus placent l'application au premier plan ; les constantes vbHide, vbNoFocus, vbMinimizeFocus placent l'application en arrière-plan.

Note   Par défaut, la fonction Shell exécute les autres programmes de manière asynchrone. Cela signifie qu'un programme lancé avec Shell peut ne pas s'exécuter entièrement avant que les instructions suivant la fonction Shell ne soient exécutées.


Stop, instruction

Interrompt l'exécution.

Syntaxe

Stop

Remarques

Vous pouvez placer des instructions Stop n'importe où dans les procédures afin d'en interrompre l'exécution. Utiliser l'instruction Stop revient à placer un point d'arrêt dans le code.

L'instruction Stop interrompt l'exécution d'un programme, mais contrairement à End, elle ne ferme pas les fichiers et n'efface pas les variables, sauf si elle est placée dans un fichier exécutable (.EXE) compilé.


Switch, fonction

Évalue une liste d'expressions et renvoie une valeur de type Variant ou une expression associée à la première expression de la liste qui a pour valeur True.

Syntaxe

Switch(expr-1, value-1[, expr-2, value-2 … [, expr-n,value-n]])

La syntaxe de la fonction Switch comprend les éléments suivants :

Élément	Description
expr	Expression Variant à évaluer.
value	Valeur ou expression à renvoyer si l'expression correspondante a pour valeur True.
Remarques

La liste d'arguments de la fonction Switch est composée d'expressions et de valeurs fonctionnant par paires. Les expressions sont évaluées de la gauche vers la droite ; la valeur associée à la première expression dont le résultat de l'évaluation a pour valeur True est renvoyée. Si les éléments ne sont pas répartis correctement par paires, une erreur d'exécution se produit. Par exemple, si la valeur de expr-1 est True, Switch renvoie value-1. Si la valeur de expr-1 est False, mais si la valeur de expr-2 est True, Switch renvoie value-2, et ainsi de suite.

Switch renvoie une valeur de type Null si :

•	aucune expression n'est vraie (True) ;

•	la première expression qui a pour valeur True est associée à une valeur de type Null.

La fonction Switch évalue toutes les expressions, même si elle n'en renvoie qu'une seule. Vous devez donc être particulièrement attentif à certains effets secondaires indésirables de cette fonction. Par exemple, une erreur se produit si l'évaluation d'une expression engendre une division par zéro.


While...Wend, instruction

Exécute une série d'instructions dans une boucle aussi longtemps que la valeur d'une condition est True.

Syntaxe

While condition
[statements]

Wend

La syntaxe de l'instruction While...Wend comprend les éléments suivants :

Élément	Description
condition	Expression numérique ou expression de chaîne vraie (True) ou fausse (False). Si l'argument condition est de type Null, il est considéré comme False.
statements	Facultatif. Une ou plusieurs instructions exécutées tant que la valeur de la condition est True.
Remarques

Si la valeur de l'argument condition est True, toutes les instructions (statements) sont exécutées jusqu'à ce que l'instruction Wend soit rencontrée. Le contrôle retourne ensuite à l'instruction While et condition est de nouveau vérifié. Si condition est toujours vrai (True), le processus est répété. Si la valeur de condition n'est pas True, l'exécution reprend à partir de l'instruction qui suit l'instruction Wend.

Les boucles While...Wend peuvent être imbriquées à n'importe quel niveau. Chaque Wend correspond à l'instruction While la plus récente.

Conseil   L'instruction Do...Loop permet d'exécuter une itération de manière plus structurée et plus souple.


With, instruction

Exécute une série d'instructions appliquées à un seul objet ou à un type défini par l'utilisateur.

Syntaxe

With object
[statements]

End With

La syntaxe de l'instruction With comprend les éléments suivants :

Élément	Description
object	Nom d'un object ou d'un type défini par l'utilisateur.
statements	Facultatif. Une ou plusieurs instructions dont l'exécution doit être appliquée à object.
Remarques

L'instruction With permet d'appliquer une série d'instructions à l'objet indiqué, sans qualifier à chaque fois le nom de l'objet. Par exemple, pour modifier plusieurs propriétés d'un seul objet, placez les instructions d'affectation de propriétés dans la structure de contrôle With ; vous ne faites ainsi référence qu'une seule fois à l'objet, au lieu de le faire à chaque affectation de propriété. L'exemple ci-dessous illustre l'utilisation de l'instruction With dans le cadre de l'affectation de valeurs à plusieurs propriétés d'un même objet.

With MonÉtiquette

.Height = 2000

.Width = 2000

.Caption = "Voici MonÉtiquette"

End With

Note   Une fois que l'exécution d'un bloc With est commencée, vous ne pouvez pas modifier object. Vous ne pouvez donc pas utiliser une même instruction With pour modifier plusieurs objets.

Vous pouvez imbriquer des instructions With en plaçant un bloc With à l'intérieur d'un autre. Toutefois, les membres des blocs With externes étant masqués dans les blocs With internes, vous devez fournir dans les blocs internes une référence complète pour tous les membres d'un objet figurant dans un bloc externe.

Note   En général, il est préférable de ne pas sortir directement d'un bloc With ou de ne pas renvoyer directement à un bloc With. Si les instructions d'un bloc With sont exécutées, mais que l'instruction With ou End With ne l'est pas, une variable temporaire contenant une référence à l'objet reste en mémoire jusqu'à ce que vous quittiez la procédure.


Asc, fonction, exemple

Cet exemple utilise la fonction Asc pour renvoyer le code de caractère correspondant à la première lettre de la chaîne.

Dim MyNumber

MyNumber = Asc("A")	' Renvoie 65.

MyNumber = Asc("a")	' Renvoie 97.

MyNumber = Asc("Ami")	' Renvoie 65.


CBool, fonction, exemple

Cet exemple utilise la fonction CBool pour convertir une expression en valeur de type Boolean. Si l'expression renvoie à une valeur différente de zéro, la fonction CBool renvoie la valeur True ; dans le cas contraire, elle renvoie la valeur False.

Dim A, B, Check

A = 5: B = 5	' Initialise les variables.

Check = CBool(A = B)	' Check contient la valeur True.

A = 0	' Définit la variable.

Check = CBool(A)	' Check contient la valeur False.


CByte, fonction, exemple

Cet exemple utilise la fonction CByte pour convertir une expression en valeur de type Byte.

Dim MyDouble, MyByte

MyDouble = 125.5678	' MyDouble est une valeur de type Double.

MyByte = CByte(MyDouble)	' MyByte contient 126.


Cdate, fonction, exemple

Cet exemple utilise la fonction CDate pour convertir une chaîne en Date. En règle générale, il n'est pas recommandé de programmer les dates et les heures sous la forme de chaînes développées (comme dans cet exemple). Utilisez plutôt des littéraux date et heure tels que #2/12/1969# et #4:45:23 PM#.

Dim MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "12 février 1969"	' Définit la date.

MyShortDate = CDate(MyDate)	' Convertit en type Date.

MyTime = "4:35:47 PM"	' Définit l'heure.

MyShortTime = CDate(MyTime)	' Convertit en type Date.


CCur, fonction, exemple

Cet exemple utilise la fonction CCur pour convertir une expression en valeur de type Currency.

Dim MyDouble, MyCurr

MyDouble = 543.214588	' MyDouble est une valeur de type Double.

MyCurr = CCur(MyDouble * 2)	' Convertit le résultat de MyDouble * 2

' (1086,429176)en une valeur de type

' Currency (1086,4292).


CDbl, fonction, exemple

Cet exemple utilise la fonction CDbl pour convertir une expression en valeur de type Double.

Dim MyCurr, MyDouble

MyCurr = CCur(234.456784)	' MyCurr est une valeur de type Currency.

MyDouble = CDbl(MyCurr * 8.2 * 0.01)	' Convertit le résultat en valeur 	' de type Double.


CInt, fonction, exemple

Cet exemple utilise la fonction CInt pour convertir une valeur en valeur de type Integer.

Dim MyDouble, MyInt

MyDouble = 2345.5678	' MyDouble est une valeur de type Double.

MyInt = CInt(MyDouble)	' MyInt contient 2346.


CLng, fonction, exemple

Cet exemple utilise la fonction CLng pour convertir une valeur en valeur de type Long.

Dim MyVal1, MyVal2, MyLong1, MyLong2

MyVal1 = 25427.45: MyVal2 = 25427.55	' MyVal1, MyVal2 sont des valeurs 	' de type Double.

MyLong1 = CLng(MyVal1)	' MyLong1 contient 25427.

MyLong2 = CLng(MyVal2)	' MyLong2 contient 25428.


CSng, fonction, exemple

Cet exemple utilise la fonction CSng pour convertir une valeur en valeur de type Single.

Dim MyDouble1, MyDouble2, MySingle1, MySingle2

' MyDouble1, MyDouble2 sont des valeurs de type Double.

MyDouble1 = 75.3421115: MyDouble2 = 75.3421555

MySingle1 = CSng(MyDouble1)	' MySingle1 contient 75,34211.

MySingle2 = CSng(MyDouble2)	' MySingle2 contient 75,34216.


CStr, fonction, exemple

Cet exemple utilise la fonction CStr pour convertir une valeur numérique en valeur de type String.

Dim MyDouble, MyString

MyDouble = 437.324	' MyDouble est une valeur de type Double.

MyString = CStr(MyDouble)	' MyString contient "437,324".


CVar, fonction, exemple

Cet exemple utilise la fonction CVar pour convertir une expression en valeur de type Variant.

Dim MyInt, MyVar

MyInt = 4534	' MyInt est une valeur de type Integer.

MyVar = CVar(MyInt & "000")	' MyVar contient la chaîne

' 4534000.


CVErr, fonction, exemple

Cet exemple utilise la fonction CVErr pour renvoyer une valeur de type Variant dont le VarType est vbError (10). La fonction définie par l'utilisateur CalculateDouble renvoie une erreur si l'argument qui lui est transmis n'est pas un nombre. Vous pouvez utiliser la fonction CVErr pour renvoyer des erreurs définies par l'utilisateur à partir de procédures définies par l'utilisateur ou pour différer le traitement d'une erreur d'exécution. Utilisez la fonction IsError pour vérifier si la valeur représente une erreur.

' Appelle CalculateDouble avec un argument générateur d'erreur.

Sub Test()

Debug.Print CalculateDouble("345.45robert")

End Sub

' Définit la procédure Function CalculateDouble.

Function CalculateDouble(Number)

If IsNumeric(Number) Then

CalculateDouble = Number * 2	' Renvoie le résultat.

Else

CalculateDouble = CVErr(2001) 	' Renvoie un numéro d'erreur

End If	'défini par l'utilisateur.

End Function


Val, fonction, exemple

Cet exemple utilise la fonction Val pour renvoyer les nombres contenus dans une chaîne.

Dim MyValue

MyValue = Val("2457")	' Renvoie 2457.

MyValue = Val(" 2 45 7")	' Renvoie 2457.

MyValue = Val("24 et 57")	' Renvoie 24.


Cdec, fonction, exemple

Cet exemple utilise la fonction CDec pour convertir une valeur numérique en valeur de type Decimal.

Dim MyDecimal, MyCurr

MyCurr = 10000000.0587	' MyCurr est une valeur de type Currency.

MyDecimal = CDec(MyCurr) 	' MyDecimal est une valeur de type Decimal.


Fonctions de conversion

Asc, fonction

CBool, fonction

CByte, fonction

CCur, fonction

CDate, fonction

CDec, fonction

CDbl, fonction

Chr, fonction

CInt, fonction

CLng, fonction

CSng, fonction

CStr, fonction

CVar, fonction

CVErr, fonction

Format, fonction

Hex, fonction

Oct, fonction

Str, fonction

Val, fonction


Asc, fonction

Renvoie une donnée de type Integer représentant le code de caractère correspondant à la première lettre d'une chaîne.

Syntaxe

Asc(string)

L'argument string peut être n'importe quelle expression de chaîne valide. Si l'argument string ne contient aucun caractère, une erreur d'exécution se produit.

Remarques

Les valeurs renvoyées sont comprises entre 0 et 255 sur les systèmes non DBCS et entre 32 768 et 32 767 sur les systèmes DBCS.

Note   La fonction AscB permet d'utiliser les données d'une chaîne sous forme d'octets. Au lieu de renvoyer le code du premier caractère, la fonction AscB renvoie le premier octet. La fonction AscW renvoie le code de caractère Unicode, sauf sur les plates-formes ne prenant pas en charge les caractères Unicode, auquel cas le comportement est le même que pour la fonction Asc.

Note   Sur Macintosh, Visual Basic ne gère pas les chaînes Unicode. Par conséquent, la fonction AscW(n) ne peut pas renvoyer les caractères Unicode correspondant aux valeurs n comprises entre 128 et 65 535, comme elle le fait sous Windows. En revanche, la fonction AscW(n) propose une valeur de son choix pour les valeurs n Unicode supérieures à 127. Il est donc recommandé de ne pas utiliser la fonction AscW dans l'environnement Macintosh.


CVErr, fonction

Renvoie une donnée de type Variant et de sous-type Error contenant un numéro d'erreur spécifié par l'utilisateur.

Syntaxe

CVErr(errornumber)

L'argument errornumber peut être n'importe quel numéro d'erreur valide.

Remarques

La fonction CVErr permet de créer des erreurs définies par l'utilisateur dans des procédures créées par l'utilisateur. Par exemple, lorsque vous créez une fonction acceptant plusieurs arguments et qui renvoie normalement une chaîne, cette fonction peut vérifier que les arguments spécifiés appartiennent aux plages de valeurs autorisées. Si tel n'est pas le cas, il est probable que la fonction ne renverra pas le résultat escompté. La fonction CVErr permet ainsi de renvoyer un numéro d'erreur qui vous indique comment traiter le problème.

La conversion implicite de la valeur Error n'est pas autorisée. Par exemple, il est impossible d'affecter directement la valeur renvoyée par la fonction CVErr à une variable d'un type autre que Variant. Cependant, vous pouvez effectuer une conversion explicite (via les fonctions CInt, CDbl, etc.) de la valeur renvoyée par la fonction CVErr et l'affecter à une variable d'un type de données appropriée.


Val, fonction

Renvoie le nombre contenu dans une chaîne de caractère sous la forme d'une valeur numérique d'un type approprié.

Syntaxe

Val(string)

L'argument string peut être n'importe quelle expression de chaîne.

Remarques

La fonction Val arrête la lecture de la chaîne au premier caractère ne faisant apparemment pas partie d'un nombre. Les symboles et caractères fréquemment associés aux valeurs numériques, comme le signe $ et les virgules ne sont pas reconnus. En revanche, la fonction reconnaît les préfixes &O (pour octal) et &H (pour hexadécimal). Les espaces, les tabulations et les caractères de saut de ligne ne sont pas pris en compte dans l'argument.

Dans l'exemple suivant, la fonction renvoie la valeur 161517 :

Val("    1615 17e siècle")

Dans l'exemple ci-dessous, la fonction Val renvoie la valeur décimale -1 correspondant à la valeur hexadécimale indiquée :

Val("&HFFFF")

Note   La fonction Val ne reconnaît que le point comme séparateur décimal (.). Lors de l'utilisation d'autres séparateurs décimaux (applications internationales, par exemple), convertissez la chaîne en nombre à l'aide de la fonction CDbl.


Fonctions de conversion de types de données

Les fonctions ci-dessous convertissent une expression en un type de données spécifique.

Syntaxe

CBool(expression)

CByte(expression)

CCur(expression)

CDate(expression)

CDbl(expression)

CDec(expression)

CInt(expression)

CLng(expression)

CSng(expression)

CStr(expression)

CVar(expression)

L'argument expression peut être n'importe quelle expression de chaîne ou expression numérique.

Types renvoyés

Le nom de la fonction détermine le type renvoyé, comme le montre le tableau suivant :

Fonction	Type renvoyé	Plage de valeurs de l'argument expression
CBool	Boolean	Toute chaîne ou expression numérique valide.
CByte	Byte	0 à 255.
CCur	Currency	-922 337 203 685 477,5808 à 922 337 203 685 477,5807.
CDate	Date	Toute expression de date valide.
CDbl	Double	-1.79769313486231E308 à  -4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives.
CDec	Decimal	+/-79 228 162 514 264 337 593 543 950 335 pour les nombres sans décimales. La plage de valeurs des nombres à 28 décimales est  +/-7,9228162514264337593543950335. Le plus petit nombre différent de zéro est 0,0000000000000000000000000001.
CInt	Integer	-32 768 à 32 767 ; les fractions sont arrondies.
CLng	Long	-2 147 483 648 à 2 147 483 647 ; les fractions sont arrondies.
CSng	Single	-3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives.
CStr	String	Les valeurs renvoyées par la fonction Cstr dépendent de l'argument expression.
CVar	Variant	Même plage de valeurs que le type Double pour les nombres et que le type String pour les chaînes non numériques.
Remarques

Si l'argument expression passé à la fonction excède la plage de valeurs du type de données cible, une erreur se produit.

Il est généralement possible de documenter le code en utilisant les fonctions de conversion de types de données afin d'indiquer que le résultat de certaines opérations devrait correspondre à un type de données particulier plutôt qu'au type par défaut. Utilisez par exemple la fonction CCur pour fonctionner en arithmétique monétaire et non en arithmétique en simple précision, en double précision ou en arithmétique de nombres entiers.

Utilisez les fonctions de conversion de types de données à la place de la fonction Val de manière à respecter les conventions étrangères. Par exemple, la fonction CCur reconnaît divers types de séparateurs décimaux, de séparateurs des milliers et diverses options monétaires, selon les paramètres régionaux de votre ordinateur.

Les fonctions CInt et CLng arrondissent les parties décimales égales à 0,5 au nombre pair le plus proche. Par exemple, 0,5 est arrondi à 0 et 1,5 est arrondi à 2. Les fonctions CInt et CLng diffèrent des fonctions Fix et Int, qui tronquent la partie décimale d'un nombre sans forcément l'arrondir. En outre, les fonctions Fix et Int renvoient toujours une valeur du type passé.

Utilisez la fonction IsDate pour déterminer si la valeur de l'argument date peut être convertie en date ou en heure. La fonction CDate reconnaît les littéraux date et heure ainsi que certains nombres appartenant à la plage de dates autorisées. Lors de la conversion d'un nombre en date, la partie entière du nombre est convertie en date. Si le nombre comprend une partie décimale, celle-ci est convertie en heures, exprimées en partant de minuit.

La fonction CDate reconnaît les formats de date définis dans les paramètres régionaux de votre système. L'ordre des jours, mois et années risque de ne pouvoir être défini si les données sont fournies dans un format différent des paramètres de date reconnus. En outre, les formats de date complets précisant le jour de la semaine ne sont pas reconnus.

Pour des raisons de compatibilité avec les versions antérieures de Visual Basic, il existe une fonction CVDate, dont la syntaxe est identique à celle de la fonction Cdate. Cependant, la fonction CVDate renvoie une donnée de type Variant et de sous-type Date et non une véritable donnée de type Date. Dans la mesure où il existe désormais un type Date intrinsèque, la fonction CVDate n'est plus nécessaire. On obtient le même résultat en convertissant une expression en donnée de type Date, puis en l'affectant à une donnée de type Variant. Cette technique est cohérente avec la conversion des autres types intrinsèques dans le sous-type Variant équivalent.

Note   La fonction CDec ne renvoie pas un type de données isolé, mais un type Variant dont la valeur a été convertie en sous-type Decimal


Valeurs renvoyées par CStr

Si l'argument expression est de type	La fonction CStr renvoie
Boolean	Chaîne contenant les valeurs True ou False
Date	Chaîne contenant la date dans le format de date abrégé en vigueur sur votre système
Null	Erreur d'exécution
Empty	Chaîne de longueur nulle ("")
Error	Chaîne contenant le mot Error suivi du numéro d'erreur
Autres données de type numérique	Chaîne contenant le nombre


Boolean, type de données

Les variables de type Boolean sont stockées sous la forme de nombres de 16 bits (2 octets), mais elles ne peuvent avoir pour valeur que True ou False. Elles s'affichent sous la forme True et False (avec l'instruction Print) ou #TRUE# et #FALSE# (avec l'instruction Write #). Utilisez les mots clés True et False pour faire passer d'un état à l'autre des variables de type Boolean.

Lorsque d'autres types de données numériques sont convertis en valeurs de type Boolean, 0 devient False et toutes les autres valeurs deviennent True. Lorsque des valeurs de type Boolean sont converties en d'autres types de données, False devient 0 et True devient -1.


Byte, type de données

Les variables de type Byte sont stockées sous la forme d'un nombre de 8 bits (1 octet unique), non signé, compris entre 0 et 255.

Le type de données Byte est utile pour le stockage de données binaires.


Currency, type de données

Les variables de type Currency sont stockées sous la forme de nombres de 64 bits (8 octets) au format entier, avec un décalage de 10 000 afin d'obtenir un nombre à virgule fixe comprenant 15 chiffres à gauche du séparateur décimal et 4 chiffres à droite. Cette représentation offre une plage comprise entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807. Le caractère de déclaration de type Currency est le signe @.

Le type de données Currency est utile pour les calculs monétaires et pour les calculs à virgule fixe dans lesquels la précision revêt une importance particulière.


Résumé des types de données

Le tableau suivant présente les types de données reconnus en précisant la taille des enregistrements et la plage des valeurs.

Type de données	Taille d'enregistrement	Plage
Byte	1 octet	0 à 255
Boolean	2 octets	True ou False
Integer	2 octets	-32 768 à 32 767
Long (entier long)	4 octets	-2 147 483 648 à 2 147 483 647
Single (à virgule flottante en simple précision)	4 octets	-3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives
Double (à virgule flottante en double précision)	8 octets	-1,79769313486231E308 à  -4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives
Currency (entier à décalage)	8 octets	-922 337 203 685 477,5808 à 922 337 203 685 477,5807
Decimal	14 octets	+/-79 228 162 514 264 337 593 543 950 335 sans séparateur décimal ;  +/-7,9228162514264337593543950335 avec 28 chiffres à droite du séparateur décimal ; le plus petit nombre différent de zéro est +/-0.0000000000000000000000000001.
Date	8 octets	1er janvier 100 au 31 décembre 9999
Object	4 octets	Toute référence à des données de type Object
String (longueur variable)	10 octets + longueur de la chaîne	0 à environ 2 milliards
String (longueur fixe)	Longueur de la chaîne	1 à environ 65 400
Variant (nombres)	16 octets	Toute valeur numérique, avec la même plage de valeurs qu'une donnée de type Double
Variant (caractères)	22 octets + longueur de la chaîne	Même plage de valeurs qu'une donnée de type String de longueur variable
Type défini par l'utilisateur (avec Type)	En fonction des éléments	La plage de valeurs de chaque élément correspond à celle de son type de données.
Note   Quel que soit le type de données, les tableaux nécessitent 20 octets de mémoire, auxquels viennent s'ajouter quatre octets pour chaque dimension et le nombre d'octets occupés par les données. L'espace occupé en mémoire par les données peut être calculé en multipliant le nombre d'éléments par la taille de chacun d'eux. Par exemple, les données stockées dans un tableau unidimensionnel constitué de quatre éléments de type Integer de deux octets chacun occupent huit octets. Ajoutés aux 24 octets d'espace mémoire de base, ces huit octets de données portent la mémoire totale nécessaire pour le tableau à 32 octets.

Une variable de type Variant contenant un tableau nécessite 12 octets de plus qu'un tableau seul.

Note   Utilisez la fonction StrConv pour convertir un type de données de chaîne en un autre.


Date, type de données

Les variables de type Date sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE représentant des dates comprises entre le 1er janvier 100 et le 31 décembre 9999, et des heures allant de 0:00:00 à 23:59:59. Toute valeur de littéral date peut être attribuée à une variable de type Date. Les littéraux date doivent être délimités par le signe #, par exemple #January 1, 1993# ou #1 Jan 93#.

Les variables de type Date affichent les dates au format de date abrégé reconnu par votre ordinateur. Les heures s'affichent au format horaire (plage de 12 ou 24 heures) défini dans votre ordinateur.

Lorsque d'autres types de données numériques sont convertis en données de type Date, les valeurs situées à gauche du séparateur décimal représentent la date, tandis que celles situées à droite correspondent à l'heure. Minuit est représenté par 0 et midi par 0,5. Les nombres entiers négatifs représentent des dates antérieures au 30 décembre 1899.


Decimal, type de données

Les variables de type Decimal sont stockées sous la forme d'entiers de 96 bits (12 octets), signés, décalés d'une puissance de 10 variable. Le facteur de décalage (puissance de 10), qui définit le nombre de chiffres situés à droite du séparateur décimal, est compris entre 0 et 28. Avec un décalage de 0 (pas de décimales), la valeur maximale est +/-79 228 162 514 264 337 593 543 950 335. Avec 28 décimales, la valeur maximale est +/-7,9228162514264337593543950335 et la valeur minimale différente de zéro est +/-0,0000000000000000000000000001.

Note   Pour le moment, le type de données Decimal ne peut être utilisé qu'avec une donnée de type Variant. En d'autres termes, il est impossible d'attribuer à une variable le type Decimal. Vous pouvez en revanche créer une variable de type Variant dont le sous-type est Decimal à l'aide de la fonction CDec.


Double, type de données

Les variables de type Double (à virgule flottante en double précision) sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE dont la valeur est comprise entre -1,79769313486231E308 et -4,94065645841247E-324 pour les nombres négatifs et entre 4,94065645841247E-324 et 1,79769313486231E308 pour les positifs. Le caractère de déclaration de type Double est le signe #.


Integer, type de données

Les variables de type Integer sont stockées sous la forme de nombres de 16 bits (2 octets) dont la valeur est comprise entre -32 768 et 32 767. Le caractère de déclaration de type Integer est le signe %.

Les variables de type Integer permettent également de représenter des valeurs énumérées. Celles-ci peuvent contenir un ensemble fini d'entiers uniques possédant tous une signification particulière dans le contexte où ils sont utilisés. Elles permettent d'opérer facilement une sélection parmi un nombre connu de choix, du type noir = 0, blanc = 1, etc. Il est conseillé de définir des constantes pour chaque valeur énumérée via l'instruction Const.


Long, type de données

Les variables de type Long (entier long) sont stockées sous la forme de nombres signés de 32 bits (4 octets) dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647. Le caractère de déclaration de type Long est le signe &.


Object, type de données

Les variables de type Object sont stockées sous la forme d'adresses 32 bits (4 octets) qui font référence à des objets. L'instruction Set permet d'affecter une référence d'objet à une variable déclarée comme Object.

Note   Une variable déclarée comme Object est suffisamment flexible pour contenir une référence à n'importe quel type d'objet, mais la liaison à l'objet désigné par la variable est toujours tardif (liaison au moment de l'exécution). Pour obtenir une liaison précoce (liaison au moment de la compilation), attribuez la référence d'objet à une variable déclarée avec un nom de classe spécifique.


Single, type de données

Les variables de type Single (à virgule flottante en simple précision) sont stockées sous la forme de nombres à virgule flottante de 32 bits (4 octets) IEEE dont la valeur est comprise entre -3,402823E38 et -1,401298E-45 pour les nombres négatifs et entre 1,401298E-45 et 3,402823E38 pour les positifs. Le caractère de déclaration de type Single est le point d'exclamation (!).


String, type de données

Il existe deux types de chaînes : les chaînes de longueur variable et les chaînes de longueur fixe.

•	Les chaînes de longueur variable peuvent contenir environ 2 milliards (2^31) de caractères.

•	Les chaînes de longueur fixe peuvent contenir de 1 à environ 64 Ko (2^16) de caractères.

Note   Une chaîne de longueur fixe déclarée comme Public ne peut pas être utilisée dans les modules de classe.

Les codes de caractères de type String sont compris entre 0 et 255. Les 128 premiers caractères (0 à 127) du jeu de caractères correspondent aux lettres et symboles d'un clavier américain standard. Ces 128 caractères sont identiques à ceux du jeu de caractères ASCII. Les 128 caractères suivants (128 à 255) représentent des caractères spéciaux, comme les lettres de certains alphabets, les accents, les symboles monétaires et les fractions. Le caractère de déclaration de type String est le signe $.


Type de données défini par l'utilisateur

Concerne tous les types de données définis à l'aide de l'instruction Type. Les types de données définis par l'utilisateur peuvent contenir un ou plusieurs éléments d'un type de données, un tableau ou un type de données précédemment défini par l'utilisateur. Exemple :

Type MyType

MyName As String	' La variable de type String
' contient un nom.

MyBirthDate As Date	' La variable de type Date
' contient une date de naissance.

MySex As Integer	' La variable de type Integer
' contient le sexe (0 pour

End Type	' féminin, 1 pour masculin).


Variant, type de données

Variant est le type de données attribué à toutes les variables qui ne sont pas explicitement déclarées comme étant d'un autre type (à l'aide d'instructions telles que Dim, Private, Public ou Static). Le type de données Variant ne possède aucun caractère de déclaration de type.

Variant est un type de données spécial pouvant contenir des données de toutes sortes, à l'exception des données de type String de longueur fixe. Le type Variant prend désormais en charge les types définis par l'utilisateur. Une variable de type Variant peut également contenir les valeurs Empty, Error, Nothing et Null. Vous pouvez déterminer la procédure de traitement d'une donnée de type Variant à l'aide des fonctions VarType et TypeName.

Les données numériques correspondent à n'importe quel nombre entier ou réel dont la valeur est comprise entre -1,797693134862315E308 et -4,94066E-324 pour les négatifs et entre 4,94066E-324 et 1,797693134862315E308 pour les positifs. En général, les données numériques de type Variant conservent leur type de données original au sein de la valeur de type Variant. Par exemple, si vous attribuez une valeur de type Integer à une donnée de type Variant, cette dernière sera ultérieurement traitée comme une valeur de type Integer. Cependant, si une opération arithmétique est exécutée sur une donnée de type Variant contenant une valeur de type Byte, Integer, Long ou Single et si le résultat excède la plage de valeurs du type de données, le résultat se voit automatiquement affecté le type de données Variant immédiatement supérieur. Une donnée de type Byte est transformée en Integer, une donnée de type Integer est transformée en Long et une donnée de type Long ou Single en Double. Une erreur se produit lorsque des variables de type Variant contenant des données de type Currency, Decimal ou Double dépassent leur plage de valeurs respective.

Le type de données Variant peut remplacer un autre type de données lorsque vous recherchez plus de souplesse dans le traitement de celles-ci. Si une variable de type Variant contient des chiffres, il peut s'agir, selon le contexte, de leur valeur réelle ou de leur représentation sous forme de chaîne. Exemple :

Dim MyVar As Variant

MyVar = 98052

Dans l'exemple précédent, MyVar contient une représentation numérique, c'est-à-dire la valeur réelle 98052. Les opérateurs arithmétiques peuvent être utilisés avec des variables de type Variant contenant des valeurs numériques ou des chaînes de caractères pouvant être interprétées comme des nombres. Si vous utilisez l'opérateur + pour ajouter MyVar à une autre donnée de type Variant contenant un nombre ou à une variable de type numérique, vous obtiendrez comme résultat une somme arithmétique.

La valeur Empty désigne une variable de type Variant qui n'a pas été initialisée (c'est-à-dire à laquelle aucune valeur initiale n'a été affectée). Une variable de type Variant contenant la valeur Empty équivaut à 0 si elle est utilisée dans un contexte numérique et à une chaîne de longueur nulle ("") dans un contexte de chaînes.

Ne confondez pas Empty et Null. La valeur Null indique que la variable de type Variant ne contient intentionnellement aucune donnée valide.

Dans une donnée de type Variant, la valeur Error permet d'indiquer qu'une condition d'erreur s'est produite dans une procédure. Cependant, aucune gestion d'erreur normale de niveau application n'a lieu dans ce cas. Le programmeur ou l'application peuvent donc appliquer un certain traitement en fonction de la valeur d'erreur. Les valeurs de type Error sont créées par conversion de nombres réels à l'aide de la fonction CVErr.


Date, fonction, exemple

Cet exemple utilise la fonction Date pour renvoyer la date système actuelle.

Dim MyDate

MyDate = Date	' MyDate contient la date système actuelle.


Date, instruction, exemple

Cet exemple utilise l'instruction Date pour définir la date système de l'ordinateur. Dans l'environnement de développement, le littéral date est affiché à l'aide du format abrégé en fonction des paramètres régionaux de votre code.

Dim MyDate

MyDate = #12 february 1985#	' Attribue une date.

Date = MyDate	' Change la date système.


DateAdd, fonction, exemple

Cet exemple prend une date et, à l'aide de la fonction DateAdd, fournit une nouvelle date à laquelle un nombre de mois donné a été ajouté.

Dim FirstDate As Date	' Déclare les variables.

Dim IntervalType As String

Dim Number As Integer

Dim Msg

IntervalType = "m"	' "m" indique l'intervalle en mois.

FirstDate = InputBox("Entrez une date")

Number = InputBox("Entrez le nombre de mois à ajouter")

Msg = "Nouvelle date: " & DateAdd( IntervalType, Number, FirstDate)

MsgBox Msg


DateDiff, fonction, exemple

Cet exemple utilise la fonction DateDiff pour afficher le nombre de jours entre une date donnée et la date d'aujourd'hui.

Dim TheDate As Date	' Déclare les variables.

Dim Msg

TheDate = InputBox("Entrez une date")

Msg = "Jours à compter d'aujourd'hui: " & DateDiff("j", Now, TheDate)

MsgBox Msg


DatePart, fonction, exemple

Cet exemple prend une date et, à l'aide de la fonction DatePart, affiche le trimestre de l'année correspondant.

Dim TheDate As Date	' Déclare les variables.

Dim Msg

TheDate = InputBox("Entrez une date:")

Msg = "Trimestre: " & DatePart("t", TheDate)

MsgBox Msg


DateSerial, fonction, exemple

Cet exemple utilise la fonction DateSerial pour renvoyer la date correspondant au jour, au mois et à l'année indiqués.

Dim MyDate

' MyDate contient la date correspondant au 12 février 1969.

MyDate = DateSerial(1969, 2, 12)	' Renvoie une date.


DateValue, fonction, exemple

Cet exemple utilise la fonction DateValue pour convertir une chaîne en date. Vous pouvez également utiliser des littéraux date pour attribuer directement une date à une variable Variant ou Date, par exemple, MyDate = #2/12/69#.

Dim MyDate

MyDate = DateValue("12 février 1969")	' Renvoie une date.


Day, fonction, exemple

Cet exemple utilise la fonction Day pour obtenir le jour du mois à partir de la date indiquée. Dans l'environnement de développement, le littéral date est affiché au format abrégé en fonction des paramètres régionaux de votre code.

Dim MyDate, MyDay

MyDate = #12 february 1969#	' Attribue une date.

MyDay = Day(MyDate)	' MyDay contient 12.


Hour, fonction, exemple

Cet exemple utilise la fonction Hour pour obtenir une heure à partir de l'heure indiquée. Dans l'environnement de développement, le littéral heure est affiché au format abrégé en fonction des paramètres régionaux de votre code.

Dim MyTime, MyHour

MyTime = #4:35:17 PM#	' Attribue une heure.

MyHour = Hour(MyTime)	' MyHour contient 16.


Minute, fonction, exemple

Cet exemple utilise la fonction Minute pour obtenir les minutes de l'heure à partir de l'heure indiquée. Dans l'environnement de développement, le littéral heure est affiché au format abrégé en fonction des paramètres régionaux de votre code.

Dim MyTime, MyMinute

MyTime = #4:35:17 PM#	' Attribue une heure.

MyMinute = Minute(MyTime)	' MyMinute contient 35.


Month, fonction, exemple

Cet exemple utilise la fonction Month pour obtenir le mois à partir de la date indiquée. Dans l'environnement de développement, le littéral date est affiché au format abrégé en fonction des paramètres régionaux de votre code.

Dim MyDate, MyMonth

MyDate = #12 february 1969#	' Attribue une date.

MyMonth = Month(MyDate)	' MyMonth contient 2.


Now, fonction, exemple

Cet exemple utilise la fonction Now pour renvoyer la date et l'heure système actuelle.

Dim Today

Today = Now	' Attribue la date et l'heure système actuelle.


Second, fonction, exemple

Cet exemple utilise la fonction Second pour obtenir la seconde de la minute à partir de l'heure indiquée. Dans l'environnement de développement, le littéral heure est affiché au format abrégé en fonction des paramètres régionaux de votre code.

Dim MyTime, MySecond

MyTime = #4:35:17 PM#	' Attribue une heure.

MySecond = Second(MyTime)	' MySecond contient 17.


Time, fonction, exemple

Cet exemple utilise la fonction Time pour renvoyer l'heure système actuelle.

Dim MyTime

MyTime = Time	' Renvoie l'heure système actuelle.


Time, instruction, exemple

Cet exemple utilise l'instruction Time pour définir l'heure système de l'ordinateur en fonction d'une heure définie par l'utilisateur.

Dim MyTime

MyTime = #4:35:17 PM#	' Attribue une heure.

Time = MyTime	' Définit l'heure système à l'aide de MyTime.


Timer, fonction, exemple

Cet exemple utilise la fonction Timer pour mettre l'application sur pause. Cet exemple utilise également la fonction DoEvents pour donner le contrôle à d'autres processus pendant la pause.

Dim PauseTime, Start, Finish, TotalTime

If (MsgBox("Cliquez sur Oui pour effectuer une pause de 5 secondes", 4)) = vbYes Then

PauseTime = 5	' Définit la durée.

Start = Timer	' Définit l'heure de début.

Do While Timer < Start + PauseTime

DoEvents	' Donne le contrôle à d'autres processus.

Loop

Finish = Timer	' Définit l'heure de fin.

TotalTime = Finish - Start	' Calcule la durée totale.

MsgBox "Pause de " & TotalTime & " seconde(s)"

Else

End

End If


TimeSerial, fonction, exemple

Cet exemple utilise la fonction TimeSerial pour renvoyer une heure pour l'heure, la minute et la seconde indiquées.

Dim MyTime

MyTime = TimeSerial(16, 35, 17) ' MyTime contient la représentation

' d'heure correspondant à 4:35:17 PM.


TimeValue, fonction, exemple

Cet exemple utilise la fonction TimeValue pour convertir une chaîne en heure. Vous pouvez également utiliser des littéraux date pour attribuer directement une heure à une variable Variant ou Date, par exemple, MyTime = #4:35:17 PM#.

Dim MyTime

MyTime = TimeValue("4:35:17 PM")	' Renvoie une heure.


Weekday, fonction, exemple

Cet exemple utilise la fonction Weekday pour obtenir le jour de la semaine à partir de la date indiquée.

Dim MyDate, MyWeekDay

MyDate = #12 february 1969#	' Attribue une date.

MyWeekDay = Weekday(MyDate)	' MyWeekDay contient 4 car MyDate

' correspond à mercredi.


Year, fonction, exemple

Cet exemple utilise la fonction Year pour obtenir l'année à partir de la date indiquée. Dans l'environnement de développement, le littéral date est affiché au format abrégé en fonction des paramètres régionaux de votre code.

Dim MyDate, MyYear

MyDate = #12 february 1969#	' Attribue une date.

MyYear = Year(MyDate)	' MyYear contient 1969.


Date, fonction

Renvoie une valeur de type Variant (Date) contenant la date système actuelle.

Syntaxe

Date

Remarques

Pour définir la date système, utilisez l'instruction Date.

Date, et s'il s'agit d'un calendrier Grégorien, le comportement de Date$ reste inchangé par rapport à la valeur de la propriété Calendar. Si vous utilisez un calendrier Hijri, Date$ renvoie une chaîne de 10 caractères sous la forme mm-dd-yyyy, mm (01-12), dd (01-30) et yyyy (1400-1523) désignant respectivement le mois, le jour et l'année Hijri. La plage de valeurs équivalentes dans le calendrier Grégorien est comprise entre le 1er janvier 1980 et le 31 décembre 2099.


Date, instruction

Définit la date système actuelle.

Syntaxe

Date = date

Sur les systèmes fonctionnant sous Microsoft Windows 95, l'argument date doit être une date comprise entre le 1er janvier 1980 et le 31 décembre 2099. Sur les systèmes fonctionnant sous Microsoft Windows NT, l'argument date doit être une date comprise entre le 1er janvier 1980 et le 31 décembre 2079. Sur le Macintosh, la date doit être comprise entre le 1er Janvier 1904 et le 5 Février 2040.


DateAdd, fonction

Renvoie une valeur de type Variant (Date) contenant une date à laquelle un intervalle de temps spécifié a été ajouté.

Syntaxe

DateAdd(interval, number, date)

La syntaxe de la fonction DateAdd comprend les arguments nommés suivants :

Élément	Description
interval	Expression de chaîne correspondant à l'intervalle de temps à ajouter.
number	Expression numérique correspondant au nombre d'intervalles à ajouter. Peut être positive (pour obtenir des dates dans le futur) ou négative (pour obtenir des dates dans le passé).
date	Variant (Date) ou caractère littéral représentant la date à laquelle l'intervalle est ajouté.
Valeurs

L'argument interval peut prendre les valeurs suivantes :

Valeur	Description
yyyy	Année
q	Trimestre
m	Mois
y	Jour de l'année
d	Jour
w	Jour de la semaine
ww	Semaine
h	Heure
n	Minute
s	Seconde
Remarques

Utilisez la fonction DateAdd pour ajouter ou soustraire à une date un intervalle de temps spécifié. Par exemple, utilisez DateAdd pour calculer une date située à 30 jours ou une heure située à 45 minutes de l'heure présente.

Pour ajouter des jours à la valeur de l'argument date, vous pouvez utiliser les valeurs Jour de l'année ("y"), Jour ("d") ou Jour de la semaine ("w").

La fonction DateAdd ne renvoie jamais de date incorrecte. Dans l'exemple suivant, un mois est ajouté à la date du 31 janvier :

DateAdd("m", 1, "31-Jan-95")

Dans ce cas, DateAdd renvoie 28/02/95, et non 31/02/95. Si l'argument date a pour valeur le 31-Jan-96, la date 29/02/96 est renvoyée car 1996 est une année bissextile.

Si la date calculée devait être antérieure à l'année 100 (c'est-à-dire, si vous retirez un nombre d'années supérieur à celui indiqué dans l'argument date), une erreur se produit.

Si l'argument number n'est pas une valeur de type Long, il est arrondi au nombre entier le plus proche avant d'être évalué.

Note   Le format de la valeur renvoyée correspondant à la fonction DateAdd est déterminé par les valeurs du Panneau de configuration, non par le format qui est passé à l'argument date.

Note   Pour date, si la valeur de la propriété Calendar est Grégorien, la date fournie par l'utilisateur doit être du même type. S'il s'agit d'un calendrier Hijri, la date doit prendre la valeur Hijri. Si vous entrez les mois sous forme de noms, il faut qu'ils soient cohérents avec la valeur de la propriété Calendar actuelle. Pour limiter les risques de conflit entre les noms des mois et la valeur de la propriété Calendar actuelle, utilisez des valeurs numériques (format de date abrégée).


DateDiff, fonction

Renvoie une valeur de type Variant (Long) indiquant le nombre d'intervalles de temps entre deux dates données.

Syntaxe

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

La syntaxe de la fonction DateDiff comprend les arguments nommés suivants :

Élément	Description
interval	Expression de chaîne correspondant à l'intervalle de temps utilisé pour calculer la différence entre date1 et date2.
date1, date2	De type Variant (Date), représentent les deux dates utilisées dans le calcul.
firstdayofweek	Facultatif. Constante précisant le premier jour de la semaine. Si aucune valeur n'est précisée, la valeur par défaut est dimanche.
Firstweekofyear	Facultatif. Constante précisant la première semaine de l'année. Si aucune valeur n'est précisée, la première semaine est par défaut celle du 1er janvier.
Valeurs

L'argument interval peut prendre les valeurs suivantes :

Valeur	Description
yyyy	Année
q	Trimestre
m	Mois
y	Jour de l'année
d	Jour
w	Jour de la semaine
ww	Semaine
h	Heure
n	Minute
s	Seconde
L'argument firstdayofweek peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utilise le paramètre de l'API NLS.
vbSunday	1	Dimanche (valeur par défaut)
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi
Constante	Valeur	Description
vbUseSystem	0	Utilise le paramètre de l'API NLS.
vbFirstJan1	1	Commencer par la semaine du 1er janvier (valeur par défaut).
vbFirstFourDays	2	Commencer par la première semaine comportant au moins quatre jours dans l'année nouvelle.
vbFirstFullWeek	3	Commencer par la première semaine complète de l'année.
Remarques

Utilisez la fonction DateDiff pour déterminer le nombre d'intervalles de temps spécifiés entre deux dates. Par exemple, utilisez DateDiff pour calculer le nombre de jours entre deux dates ou le nombre de semaines entre la date d'aujourd'hui et la fin de l'année.

Pour calculer le nombre de jours entre date1 et date2, vous pouvez utiliser les valeurs Jour de l'année ("y") ou Jour ("d"). Si l'argument interval est Jour de la semaine ("w"), DateDiff renvoie le nombre de semaines entre les deux dates. Si date1 tombe un lundi, DateDiff calcule le nombre de lundi jusqu'à date2. La valeur date2 est prise en compte, mais pas la valeur date1. Si l'argument interval est Semaine ("ww"), la fonction DateDiff renvoie le nombre de semaines calendaires entre les deux dates. Le nombre de dimanches entre date1 et date2 est calculé. DateDiff prend en compte date2 si cette date tombe un dimanche, mais pas date1, même s'il s'agit également d'un dimanche.

Si date1 est postérieure à date2, la fonction DateDiff renvoie un nombre négatif.

L'argument firstdayofweek a une incidence sur les calculs qui utilisent les symboles d'intervalle "w" et "ww".

Si date1 ou date2 est un littéral date, l'année spécifiée devient un élément permanent de la date. Toutefois, si date1 ou date2 apparaît entre guillemets (" ") et si vous n'indiquez pas l'année, l'année en cours est insérée dans le code chaque fois que l'expression date1 ou date2 est évaluée. Vous pouvez ainsi écrire du code qui sera réutilisable au fil des années.

Lors de la comparaison des dates 31 décembre et 1er janvier de l'année suivante, DateDiff avec la valeur Année ("yyyy") renvoie 1, même si la différence est seulement d'un jour.

Note   Pour date1 et date2, si la valeur de la propriété Calendar est Grégorien, la date fournie par l'utilisateur doit être du même type. S'il s'agit d'un calendrier Hijri, la date doit prendre la valeur Hijri.


DatePart, fonction

Renvoie une valeur de type Variant (Integer) contenant l'élément spécifié d'une date donnée.

Syntaxe

DatePart(interval, date[,firstdayofweek, firstweekofyear]])

La syntaxe de la fonction DatePart comprend les arguments nommés suivants :

Élément	Description
interval	Expression de chaîne correspondant à l'intervalle de temps à renvoyer.
date	Valeur Variant (Date) à évaluer.
firstdayofweek	Facultatif. Constante précisant le premier jour de la semaine. Si aucune valeur n'est précisée, la valeur par défaut est dimanche.
firstweekofyear	Facultatif. Constante précisant la première semaine de l'année. Si aucune valeur n'est précisée, la première semaine est par défaut celle du 1er janvier.
Valeurs

L'argument interval peut prendre les valeurs suivantes :

Valeur	Description
yyyy	Année
q	Trimestre
m	Mois
y	Jour de l'année
d	Jour
w	Jour de la semaine
ww	Semaine
h	Heure
n	Minute
s	Seconde
L'argument firstdayofweek peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utilise les paramètres de l'API NLS.
vbSunday	1	Dimanche (valeur par défaut)
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi
L'argument firtweekofyear peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utiliser l'argument NLS API.
vbFirstJan1	1	Commencer par la semaine du 1er janvier (valeur par défaut).
vbFirstFourDays	2	Commencer par la première semaine comportant au moins quatre jours dans l'année nouvelle.
vbFirstFullWeek	3	Commencer par la première semaine complète de l'année.
Remarques

Utilisez la fonction DatePart pour évaluer une date et renvoyer un intervalle de temps spécifique. Par exemple, utilisez la fonction DatePart pour calculer le jour de la semaine ou l'heure en cours.

L'argument firstdayofweek a une incidence sur les calculs qui utilisent les symboles d'intervalles "w" et "ww".

Si date est un littéral date, l'année précisée devient un élément permanent de cette date. Toutefois, si date apparaît entre guillemets (" "), et si vous n'indiquez pas l'année, l'année en cours est insérée automatiquement chaque fois que l'expression date est évaluée. Vous pouvez ainsi écrire du code qui sera réutilisable au fil des années.

Note   Pour date, si la valeur de la propriété Calendar est Grégorien, la date fournie par l'utilisateur doit être du même type. S'il s'agit d'un calendrier Hijri, la date doit prendre la valeur Hijri.

La partie de la date renvoyée est exprimée en unités périodiques du calendrier arabe actuel. Si, par exemple, le calendrier actuel est du type Hijri et que la partie de la date à renvoyer est l'année, la valeur obtenue correspond à une année Hijri.


DateSerial, fonction

Renvoie une valeur de type Variant (Date) correspondant à une année, un mois et un jour déterminés.

Syntaxe

DateSerial(year, month, day)

La syntaxe de la fonction DateSerial comprend les arguments nommés suivants :

Élément	Description
day	Integer. Nombre compris entre 100 et 9999, inclus, ou expression numérique.
month	Integer. Toute expression numérique.
Year	Integer. Toute expression numérique.
Remarques

Pour indiquer une date, le 31 décembre 1991 par exemple, vous devez vous conformer à la plage de valeurs normalement autorisées pour chaque argument de la fonction DateSerial ; c'est-à-dire, entre 1 et 31 pour les jours, et entre 1 et 12 pour les mois. Toutefois, vous pouvez également spécifier des dates relatives pour chaque argument en utilisant une expression numérique représentant un certain nombre de jours, de mois ou d'années avant ou après une certaine date.

L'exemple suivant utilise des expressions numériques plutôt que des numéros de dates absolus. La fonction DateSerial renvoie une date correspondant à la veille du premier jour (1 - 1), du mois qui précède de deux mois le mois d'août (8 - 2), 10 ans avant 1990 (1990 - 10), autrement dit le 31 mai 1980.

DateSerial(1990 - 10, 8 - 2, 1 - 1)

Sous Windows 98 ou Windows 2000, l'interprétation des années à deux chiffres pour l'argument year dépend de la configuration de l'ordinateur définie par l'utilisateur. Par défaut, les valeurs comprises entre 0 et 29 inclus sont interprétées comme les années 2000 à 2029. Les valeurs par défaut comprises entre 30 et 99 sont interprétées comme les années 1930 à 1999. Pour tous les autres arguments year, exprimez l'année sous la forme d'un nombre à quatre chiffres (par exemple, 1800).

Les versions précédentes de Windows interprètent les années à deux chiffres en fonction des paramètres par défaut décrits ci-dessus. Pour s'assurer que la fonction renvoie la valeur correcte, spécifiez une année à quatre chiffres.

Lorsqu'un argument dépasse la plage normalement acceptée, sa valeur est automatiquement remplacée par la plus proche unité supérieure valide. Par exemple, si vous spécifiez 35 jours, ce chiffre est interprété comme un mois et un certain nombre de jours, selon le mois de l'année. Toutefois, si un seul argument se trouve en dehors de la plage -32 768 à 32 767, ou si la date spécifiée par les trois arguments se situe en dehors de la plage de dates valides, une erreur se produit.

Note   Pour year, month et day, si la valeur de la propriété Calendar est Grégorien, on suppose que la valeur fournie est du même type. Si la valeur de la propriété Calendar est Hijri, on suppose que la valeur fournie est du type Hijri.

La partie de la date renvoyée est exprimée en unités périodiques du calendrier Visual Basic actuel. Si, par exemple, le calendrier actuel est du type Hijri et que la partie de la date à renvoyer est l'année, la valeur obtenue correspond à une année Hijri. Pour l'argument year, les valeurs comprises entre 0 et 99 inclus sont interprétées comme les années 1400 à 1499. Pour toutes les autres valeurs year, exprimez l'année sous la forme d'un nombre à quatre chiffres (par exemple, 1520).


DateValue, fonction

Renvoie une valeur de type Variant (Date).

Syntaxe

DateValue(date)

L'argument date est normalement une expression de chaîne représentant une date comprise entre le 1er janvier 100 et le 31 décembre 9999. Toutefois, l'argument date peut aussi être une expression qui représente une date et/ou une heure dans cet intervalle.

Remarques

Si l'argument date est une chaîne composée uniquement de nombres séparés par des séparateurs de dates valides, la fonction DateValue associe ces valeurs au mois, au jour et à l'année selon le format Date courte que vous avez défini pour votre système. DateValue reconnaît également les dates non ambiguës contenant des noms de mois sous forme complète ou abrégée. Par exemple, DateValue reconnaît non seulement 30/12/1991 et 30/12/91, mais aussi 30 décembre 1991 et 30-déc-1991.

Si l'élément année de l'argument date n'est pas spécifié, DateValue prend comme valeur l'année en cours fournie par la date système de votre ordinateur.

Si l'argument date comprend une indication d'heure, la fonction DateValue ne la renvoie pas. Si, toutefois, l'heure indiquée dans l'argument date n'est pas valide (par exemple "89:98"), une erreur se produit.

Note   Pour date, si la valeur de la propriété Calendar est Grégorien, la date fournie par l'utilisateur doit être du même type. S'il s'agit d'un calendrier Hijri, la date doit prendre la valeur Hijri. Si la date fournie est du type Hijri, l'argument date est une chaîne représentant une date comprise entre le 1/1/100 (2 août 718 dans le calendrier Grégorien) et le 4/3/9666 (31 décembre 9999 dans le calendrier Grégorien).


Day, fonction

Renvoie une valeur de type Variant (Integer) indiquant un nombre entier compris entre 1 et 31, inclus, qui représente le jour du mois.

Syntaxe

Day(date)

L'argument date peut être n'importe quelle expression de type Variant, expression numérique, expression de chaîne, ou toute combinaison pouvant représenter une date. Si l'argument date contient une variable de type Null, Null est renvoyé.

Note   Si la valeur de la propriété Calendar est Grégorien, le nombre entier renvoyé représente le jour Grégorien du mois pour l'argument date. S'il s'agit d'un calendrier Hijri, le nombre entier renvoyé représente le jour Hijri du mois pour l'argument date.


Hour, fonction

Renvoie une valeur de type Variant (Integer) indiquant un nombre entier compris entre 0 et 23 inclus, qui représente l'heure du jour.

Syntaxe

Hour(time)

L'argument time peut être n'importe quelle expression de type Variant, expression numérique, expression de chaîne, ou toute combinaison pouvant représenter une heure. Si l'argument time contient une variable de type Null, Null est renvoyé.


Minute, fonction

Renvoie une valeur de type Variant (Integer) indiquant un nombre entier compris entre 0 et 59, inclus, qui représente la minute de l'heure en cours.

Syntaxe

Minute(time)

L'argument time peut être n'importe quelle expression de type Variant, expression numérique, expression de chaîne, ou toute combinaison pouvant représenter une heure. Si l'argument time contient une variable de type Null, Null est renvoyé.


Month, fonction

Renvoie une valeur de type Variant (Integer) indiquant un nombre entier compris entre 1 et 12, inclus, qui représente le mois de l'année.

Syntaxe

Month(date)

L'argument date peut être n'importe quelle expression de type Variant, expression numérique, expression de chaîne, ou toute combinaison pouvant représenter une date. Si l'argument date contient une variable de type Null, Null est renvoyé.

Note   Si la valeur de la propriété Calendar est Grégorien, le nombre entier renvoyé représente le jour Grégorien de la semaine pour l'argument date. S'il s'agit d'un calendrier Hijri, le nombre entier renvoyé représente le jour Hijri de la semaine pour l'argument date. Dans le cas des dates Hijri, l'argument number est une expression numérique pouvant représenter une date et/ou heure comprise entre le 1/1/100 (2 août 718 pour le calendrier Grégorien) et le 4/3/9666 (31 décembre 9999 pour le calendrier Grégorien).


Now, fonction

Renvoie une valeur de type Variant (Date) indiquant la date et l'heure en cours fournies par la date et l'heure système de votre ordinateur.

Syntaxe

Now


Second, fonction

Renvoie une valeur de type Variant (Integer) indiquant un nombre entier compris entre 0 et 59, inclus, qui représente la seconde de la minute en cours.

Syntaxe

Second(time)

L'argument time peut être n'importe quelle expression de type Variant, expression numérique, expression de chaîne, ou toute combinaison pouvant représenter une heure. Si l'argument time contient une variable de type Null, Null est renvoyé.


Time, fonction

Renvoie une valeur de type Variant (Date) indiquant l'heure système en cours.

Syntaxe

Time

Remarques

Pour définir l'heure système, utilisez l'instruction Time.


Time, instruction

Définit l'heure système.

Syntaxe

Time = time

L'argument time peut être n'importe quelle expression numérique, expression de chaîne, ou toute combinaison pouvant représenter une heure.

Remarques

Si l'argument time est une chaîne, l'instruction Time tente de la convertir en heure, en utilisant les séparateurs horaires que vous avez définis dans votre système. Si cette conversion ne génère pas une heure valide, une erreur se produit.


Timer, fonction

Renvoie une valeur de type Single représentant le nombre de secondes écoulées depuis minuit.

Syntaxe

Timer

Remarques

Avec Microsoft Windows, la fonction Timer renvoie une valeur avec une précision de l'ordre de la fraction de seconde. Sur Macintosh, la précision est d'une seconde.


TimeSerial, fonction

Renvoie une valeur de type Variant (Date) contenant une heure précise (heure, minute et seconde).

Syntaxe

TimeSerial(hour, minute, second)

La syntaxe de la fonction TimeSerial comprend les arguments nommés suivants :

Élément	Description
hour	Variant (Integer). Nombre compris entre 0 et 23 inclus, ou expression numérique.
minute	Variant (Integer). Toute expression numérique.
Second	Variant (Integer). Toute expression numérique.
Remarques

Pour exprimer une heure déterminée, par exemple 11:59:59, vous devez utiliser la plage de valeurs normalement autorisées pour chaque argument de la fonction TimeSerial ; c'est-à-dire, entre 0 et 23 pour les heures et entre 0 et 59 pour les minutes et les secondes. Toutefois, vous pouvez également indiquer des heures relatives pour chaque argument en utilisant une expression numérique représentant un certain nombre d'heures, de minutes ou de secondes avant ou après une certaine heure. L'exemple suivant utilise des expressions au lieu de valeurs horaires absolues. La fonction TimeSerial renvoie une heure correspondant à 15 minutes (-15) et six heures avant midi (12 - 6), soit 5:45:00

TimeSerial(12 - 6, -15, 0)

Lorsqu'un argument dépasse la plage normalement acceptée, sa valeur est automatiquement remplacée par la plus proche unité supérieure valide. Par exemple, si vous spécifiez 75 minutes, ce chiffre est interprété comme une heure et 15 minutes. Toutefois, si un seul argument se trouve en dehors de la plage -32768 à 32767 ou si l'heure indiquée par les trois arguments se situe en dehors de la plage de dates valides, une erreur se produit.


TimeValue, fonction

Renvoie une valeur de type Variant (Date) contenant une heure.

Syntaxe

TimeValue(time)

L'argument time est normalement une expression de chaîne qui représente une heure comprise entre 0:00:00 et 23:59:59 inclus. Toutefois, l'argument time peut également être une expression qui représente une heure comprise dans cet intervalle. Si l'argument time contient une variable de type Null, Null est renvoyé.

Remarques

Vous pouvez taper des heures en utilisant une horloge possédant une plage de 24 heures ou deux plages de 12 heures. Par exemple, "2:24PM" et "14:24" sont deux arguments time valides.

Si l'argument time comprend des données relatives à la date, la fonction TimeValue ne les renvoie pas. Si, toutefois, la date indiquée dans l'argument time n'est pas valide, une erreur se produit.


Weekday, fonction

Renvoie une valeur de type Variant (Integer) contenant un nombre entier qui représente le jour de la semaine.

Syntaxe

Weekday(date, [firstdayofweek])

La syntaxe de la fonction Weekday comprend les arguments nommés suivants :

Élément	Description
date	Variant, expression numérique, expression de chaîne, ou toute combinaison qui peut représenter une date. Si l'argument date contient une variable de type Null, Null est renvoyé.
Firstdayofweek	Facultatif. Constante jour de la semaine. Si aucune valeur n'est précisée, vbSunday est la valeur par défaut.
Valeurs

L'argument firstdayofweek peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utilise les paramètres de l'API NLS.
vbSunday	1	Dimanche (valeur par défaut)
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi
Valeurs renvoyées

La fonction Weekday peut renvoyer l'une de ces valeurs :

Constante	Valeur	Description
vbSunday	1	Dimanche
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi
Remarques

Si la valeur de la propriété Calendar est Grégorien, le nombre entier renvoyé représente le jour Grégorien de la semaine pour l'argument date. S'il s'agit d'un calendrier Hijri, le nombre entier renvoyé représente le jour Hijri de la semaine pour l'argument date. Dans le cas des dates Hijri, l'argument number est une expression numérique pouvant représenter une date et/ou heure comprise entre le 1/1/100 (2 août 718 pour le calendrier Grégorien) et le 4/3/9666 (31 décembre 9999 pour le calendrier Grégorien).


Year, fonction

Renvoie une valeur de type Variant (Integer) contenant un nombre entier qui représente l'année.

Syntaxe

Year(date)

L'argument date peut être n'importe quelle expression de type Variant, expression numérique, expression de chaîne, ou toute combinaison pouvant représenter une date. Si l'argument date contient une variable de type Null, Null est renvoyé.

Note   Si la valeur de la propriété Calendar est Grégorien, le nombre entier renvoyé représente l'année Grégorienne pour l'argument date. S'il s'agit d'un calendrier Hijri, le nombre entier renvoyé représente l'année Hijri pour l'argument date. Dans le cas des dates Hijri, l'argument number est une expression numérique pouvant représenter une date et/ou heure comprise entre le 1/1/100 (2 août 718 pour le calendrier Grégorien) et le 4/3/9666 (31 décembre 9999 pour le calendrier Grégorien).


Array, fonction

Renvoie une variable de type Variant contenant un tableau.

Syntaxe

Array(arglist)

L'argument arglist est une liste de valeurs délimitée par des virgules attribuées aux éléments du tableau contenu dans la variable de type Variant. Si aucun argument n'est spécifié, un tableau de longueur nulle est créé.

Remarques

La notation utilisée pour faire référence à un élément du tableau est composée du nom de la variable suivi d'un indice entre indiquant l'élément concerné. Dans l'exemple suivant, la première instruction crée une variable appelée A déclarée de type Variant. La deuxième instruction affecte un tableau à la variable A. La dernière instruction affecte à une autre variable la valeur contenue dans le deuxième élément du tableau.

Dim A As Variant

A = Array(10,20,30)

B = A(2)

La limite inférieure d'un tableau créé à l'aide de la fonction Array est déterminée par la limite inférieure spécifiée avec l'instruction Option Base, à moins que le nom de Array soit accompagné de l'intitulé de la bibliothèque de type (par exemple VBA.Array). Si c'est le cas, Array n'est pas affecté par Option Base.

Note   Une variable de type Variant non déclarée comme tableau peut cependant en contenir un. Une variable de type Variant peut contenir tout type de tableau, à l'exception des chaînes de longueur fixe et de types définis par l'utilisateur. Bien que le concept de variable de type Variant contenant un tableau diffère d'un tableau contenant des éléments de type Variant, la manière d'accéder aux éléments du tableau est identique.


CallByName, fonction

Exécute une méthode d'un objet, ou définit ou renvoie une propriété d'un objet.

Syntaxe

CallByName(object, procname, calltype,[args()])

La syntaxe de la fonction CallByName comprend les arguments nommés suivants :

Élément	Description
object	Variant (Object). Nom de l'objet sur lequel sera exécutée la fonction.
procname	Variant (String). Expression de chaîne contenant le nom de la propriété ou méthode de l'objet.
calltype	Constant. Constante de type vbCallType représentant le type de procédure appelée.
args()	Facultatif : Variant (Array).
Remarques

La fonction CallByName permet d'obtenir ou de définir une propriété, ou d'invoquer une méthode lors de l'exécution à l'aide d'un nom de chaîne.

Dans l'exemple suivant, la première ligne utilise CallByName pour définir la propriété MousePointer d'une zone de texte, la deuxième ligne obtient la valeur de la propriété MousePointer et la troisième invoque la méthode Move pour déplacer la zone de texte :

CallByName Text1, "MousePointer", vbLet, vbCrosshair

Result = CallByName (Text1, "MousePointer", vbGet)

CallByName Text1, "Move", vbMethod, 100, 100


Const, instruction

Déclare des constantes à utiliser à la place des valeurs littérales.

Syntaxe

[Public | Private] Const constname [As type] = expression

La syntaxe de l'instruction Const comprend les éléments suivants :

Élément	Description
Public	Facultatif. Mot clé utilisé au niveau module pour déclarer des constantes disponibles pour toutes les procédures de l'ensemble des modules. Ce mot clé n'est pas autorisé dans les procédures.
Private	Facultatif. Mot clé utilisé au niveau module pour déclarer les constantes uniquement disponibles dans le module dans lequel la déclaration est effectuée. Ce mot clé n'est pas autorisé dans les procédures.
constname	Nom de la constante ; Respecte les conventions standard d'affectation de noms aux variables.
type	Facultatif. Type de données de la constante ; elle peut être de type byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String ou Variant. Utilisez une clause As type distincte pour chaque constante à déclarer.
expression	Littéral, autre constante ou toute autre combinaison pouvant contenir tout opérateur arithmétique ou logique à l'exception de Is.
Remarques

Par défaut, les constantes sont privées. Dans les procédures, les constantes sont toujours privées et leur visibilité ne peut pas être modifiée. Dans les modules standard, la visibilité par défaut des constantes de niveau module peut être modifiée à l'aide du mot clé Public. En revanche, dans les modules de classe, les constantes sont toujours privées et leur visibilité ne peut pas être modifiée à l'aide du mot clé Public.

Pour combiner plusieurs déclarations de constantes sur une même ligne, séparez chaque affectation de constante par une virgule. Lorsque les déclarations de constantes sont ainsi combinées, le mot clé Public ou Private, s'il est utilisé, s'applique à toutes les constantes.

Vous ne pouvez utiliser ni variables, ni fonctions définies par l'utilisateur ni fonctions Visual Basic intrinsèques (telles que Chr) dans des expressions attribuées à des constantes.

Note   Les constantes rendent vos programmes plus lisibles et plus faciles à modifier. Contrairement aux variables, elles ne peuvent être modifiées par erreur pendant l'exécution de votre programme.

Si vous ne déclarez pas explicitement le type d'une constante à l'aide de As type, la constante se voit attribuer le type de données qui convient le mieux à l'argument expression.

Les constantes déclarées dans une procédure Sub, Function ou Property sont locales au niveau de la procédure. Une constante déclarée en dehors d'une procédure est définie dans l'ensemble du module dans lequel elle est déclarée. Vous pouvez employer des constantes partout à la place d'une expression.


CreateObject, fonction

Crée et renvoie une référence à un objet ActiveX.

Syntaxe

CreateObject(class,[servername])

La syntaxe de la fonction CreateObject comprend les éléments suivants :

Élément	Description
class	Variant (String). Nom de l'application et classe de l'objet de créer.
servername	Facultatif ; Variant (String). Nom du serveur réseau où l'objet est créé. Si servername est une chaîne vide (""), La machine locale est utilisée.
L'argument class utilise la syntaxe appname.objecttype et comprend les éléments suivants :

Élément	Description
appname	Variant (String). Nom de l'application fournissant l'objet.
objecttype	Variant (String). Type ou classe de l'objet à créer.
Remarques

Chaque application prenant en charge Automation fournit au moins un type d'objet. Par exemple, une application de traitement de texte peut fournir un objet Application, un objet Document et un objet Toolbar.

Pour créer un objet ActiveX, attribuez l'objet renvoyé par la fonction CreateObject à une variable objet :

' Déclare une variable objet destinée à contenir la

' référence de l'objet. Dim as Object entraîne une

' liaison à l'exécution.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

Ce code lance l'application qui crée l'objet, dans le cas présent, une feuille de calcul Microsoft Excel. Une fois l'objet créé, vous y faites référence dans le code à l'aide de la variable objet que vous avez définie. Dans l'exemple suivant, vous accédez aux propriétés et méthodes du nouvel objet à l'aide la variable objet, ExcelSheet, et d'autres objets Microsoft Excel, notamment l'objet Application et la collection Cells.

' Rend Excel visible au travers de l'objet Application.

ExcelSheet.Application.Visible = True

' Place du texte dans la première cellule de la feuille.

ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"

' Enregistre la feuille dans le répertoire C:\test.xls.

ExcelSheet.SaveAs "C:\ TEST.XLS"

' Ferme Excel en appliquant la méthode Quit sur l'objet Application.

ExcelSheet.Application.Quit

' Supprime la variable objet.

Set ExcelSheet = Nothing

Si vous déclarez une variable d'objet avec la locution As Object, une variable contenant une référence à tout type objet est créée. Toutefois, l'accès à l'objet par l'intermédiaire de cette variable est effectué par une liaison tardive, c'est-à-dire que la liaison est créée lors de l'exécution de votre programme. Pour créer une variable objet qui entraîne une liaison précoce, c'est-à-dire une liaison au moment de la compilation du programme, déclarez la variable objet avec un identificateur de classe spécifique. Par exemple, vous pouvez déclarer et créer les références Microsoft Excel suivantes :

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.WorkSheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

La référence par variable à liaison précoce offre de meilleures performances, mais ne peut contenir qu'une référence à la classe indiquée dans la déclaration.

Vous pouvez transmettre un objet renvoyé par la fonction CreateObject à une fonction exigeant un objet en argument. Par exemple, le code suivant crée et transmet une référence à un objet Excel.Application :

Call MySub (CreateObject("Excel.Application"))

Vous pouvez créer un objet sur un ordinateur réseau distant en transmettant le nom de l'ordinateur à l'argument servername de CreateObject. Ce nom est identique à une partie du nom de l'ordinateur partagé : pour un nom de partage "\\MonServeur\Public," servername est « MonServeur ».

Note   Reportez-vous à la documentation COM (voir Microsoft Developer Network) pour plus d'informations sur la manière de rendre visible une application à partir d'un ordinateur connecté à distance au réseau. Il sera nécessaire, le cas échéant, d'ajouter une clé de registre pour votre application.

Le code suivant renvoie le numéro de version d'une instance de Excel tournant sur un ordinateur distant appelé MonServeur :

Dim xlApp As Object

Set xlApp = CreateObject("Excel.Application", "MonServeur")

Debug.Print xlApp.Version

Si le serveur distant n'existe pas ou n'est pas disponible, une erreur au moment de l'exécution se produit.

Remarque   Utilisez CreateObject lorsqu'il n'existe aucune instance en cours de l'objet. S'il en existe une, une nouvelle instance est lancée et un objet du type indiqué est créé. Pour utiliser l'instance en cours ou pour lancer l'application en chargeant un fichier, utilisez la fonction GetObject.

Si un objet a été enregistré comme objet à instance unique, une seule instance de l'objet est créée, quel que soit le nombre d'exécutions de la fonction CreateObject.


Declare, instruction

Instruction utilisée au niveau module pour déclarer des références à des procédures externes d'une bibliothèque de liaisonsdynamiques (DLL).

Syntaxe 1

[Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]

Syntaxe 2

[Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]

La syntaxe de l'instruction Declare comprend les éléments suivants :

Élément	Description
Public	Facultatif. Utilisé pour déclarer des procédures disponibles pour toutes les autres procédures de tous les modules.
Private	Facultatif. Utilisé pour déclarer des procédures disponibles uniquement dans le module dans lequel la déclaration est effectuée.
Sub	Facultatif (Sub ou Function doit être indiqué). Indique que la procédure ne renvoie pas de valeur.
Function	Facultatif (Sub ou Function doit être indiqué). Indique que la procédure renvoie une valeur pouvant être utilisée dans une expression.
name	Tout nom de procédure valide. Notez que les points d'entrée DLL différencient les majuscules des minuscules.
Lib	Indique qu'une bibliothèque de liaisons dynamiques (DLL) ou une ressource de code contient la procédure déclarée. La clause Lib est requise pour toutes les déclarations.
libname	Nom de la DLL ou de la ressource de code contenant la procédure déclarée.
Alias	Facultatif. Indique que la procédure appelée porte un autre nom dans la DLL. Cette information est utile lorsque le nom de la procédure externe est identique à un mot clé. Vous pouvez également utiliser le mot clé Alias lorsqu'une procédure DLL porte le même nom qu'une variable publique, qu'une constante ou qu'une autre procédure dans la même portée. Le mot clé Alias est également utile lorsque le nom de la procédure DLL contient des caractères qui ne sont pas autorisés dans les noms.
aliasname	Facultatif. Nom de la procédure dans la DLL ou la ressource de code. Si le premier caractère n'est pas un signe dièse (#), aliasname est le nom du point d'entrée de la procédure dans la DLL. Si le premier caractère est un signe dièse (#), tous les caractères qui suivent doivent indiquer le numéro d'ordre correspondant au point d'entrée de la procédure.
arglist	Facultatif. Liste des variables représentant des arguments qui sont passés à la procédure lorsqu'elle est appelée.
type	Facultatif. Type de données de la valeur renvoyée par une procédure Function ; il peut s'agir de Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (de longueur variable uniquement) ou Variant, un type défini par l'utilisateur ou un type d'objet.
La syntaxe de l'argument arglist comprend les éléments suivants :

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type]

Élément	Description
Optional	Facultatif. Indique qu'un argument n'est pas obligatoire. Si ce mot clé est utilisé, les arguments suivants de arglist doivent également être facultatifs et déclarés à l'aide du mot clé Optional. Optional ne peut être appliqué à aucun argument si le mot clé ParamArray est utilisé.
ByVal	Facultatif. Indique que l'argument est passé par valeur.
ByRef	Indique que l'argument est passé par référence. ByRef est l'option par défaut dans Visual Basic.
ParamArray	Facultatif. Uniquement utilisé comme dernier argument de arglist pour indiquer que l'argument final est un tableau Optional d'éléments de type Variant. Le mot clé ParamArray, qui permet d'indiquer un nombre quelconque d'arguments, ne peut être utilisé avec les mots clés avec ByVal, ByRef ou Optional.
varname	Nom de la variable représentant l'argument passé à la procédure ; Respecte les conventions standard d'affectation de noms aux variables.
( )	Obligatoire pour les variables de tableaux. Indique que varname est un tableau.
type	Facultatif. Type de données de l'argument passé à la procédure ; elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (chaînes de longueur fixe uniquement), Object, Variant, un type défini par l'utilisateur ou un type d'objet.
Remarques

Pour les procédures Function, le type de données de la procédure détermine le type de données qu'elle renvoie. Vous pouvez ajouter une locution As après l'argument arglist pour préciser le type de données renvoyé par la fonction. Dans l'argument arglist, vous pouvez utiliser une locution As pour préciser le type de données d'un des arguments passés à la procédure. Outre les types de données standard, vous pouvez indiquer une locution As Any dans l'argument arglist pour empêcher la vérification du type et permettre à n'importe quel type de données d'être passé à la procédure.

Des parenthèses vides indiquent que la procédure Sub ou Function ne possède aucun argument et que Visual Basic doit s'assurer qu'aucun argument n'est passé. Dans l'exemple suivant, la procédure First ne prend aucun argument. Si vous utilisez des arguments dans un appel à la procédure First, une erreur survient :

Declare Sub First Lib "MyLib" ()

Si vous précisez une liste d'arguments, le nombre et le type d'arguments sont vérifiés à chaque appel de la procédure. Dans l'exemple suivant, la procédure First prend un argument de type Long :

Declare Sub First Lib "MyLib" (X As Long)

Note   La liste d'arguments d'une instruction Declare ne peut pas contenir de chaîne de longueur fixe. En effet, seules les chaînes de longueur variable peuvent être passées aux procédures. Les chaînes de longueur fixe peuvent apparaître en argument d'une procédure, mais elles sont converties en chaînes de longueur variable avant d'être passées.

Note   La constante vbNullString est utilisée lors d'appels à des procédures externes qui exigent une chaîne dont la valeur est égale à zéro. Une chaîne dont la valeur est égale à zéro n'est pas identique à une chaîne de longueur nulle ("").


Deftype, instructions

Utilisées au niveau module pour définir le type de données par défaut pour les variables, les arguments passés aux procédures et le type de renvoi pour les procédures Function et Property Get dont le nom commence avec les caractères spécifiés.

Syntaxe

DefBool letterrange[, letterrange] . . .

DefByte letterrange[, letterrange] . . .

DefInt letterrange[, letterrange] . . .

DefLng letterrange[, letterrange] . . .

DefCur letterrange[, letterrange] . . .

DefSng letterrange[, letterrange] . . .

DefDbl letterrange[, letterrange] . . .

DefDec letterrange[, letterrange] . . .

DefDate letterrange[, letterrange] . . .

DefStr letterrange[, letterrange] . . .

DefObj letterrange[, letterrange] . . .

DefVar letterrange[, letterrange] . . .

L'argument letterrange requis présente la syntaxe suivante :

letter1[-letter2]

Les arguments letter1 et letter2 spécifient la plage de noms pour laquelle vous pouvez définir un type de données par défaut. Chaque argument représente la première lettre de la variable, argument, procédure Function ou nom de la procédure Property Get et il peut s'agir de n'importe quelle lettre de l'alphabet, sans respect de la casse pour letterrange.

Remarques

Le nom de l'instruction détermine le type de données :

Instruction	Type de données
DefBool	Boolean
DefByte	Byte
DefInt	Integer
DefLng	Long
DefCur	Currency
DefSng	Single
DefDbl	Double
DefDec	Decimal (non pris en charge actuellement)
DefDate	Date
DefStr	String
DefObj	Object
DefVar	Variant
Par exemple, dans la partie de programme suivante, Message est une variable de type String :

DefStr A-Q

. . .

Message = "Espace de pile saturé."

Une instruction Deftype affecte uniquement le module dans laquelle elle est utilisée. Par exemple, une instruction DefInt dans un module affecte seulement le type de données par défaut de variables, les arguments passés à des procédures et le type de renvoi des procédures Function et Property Get déclarées dans ce module. Le type de données par défaut de variables, les arguments et le type de renvoi dans les autres modules ne sont pas affectés. S'il n'est pas déclaré explicitement à l'aide d'une instruction Deftype, le type de données par défaut de toutes les variables, tous les arguments, toutes les procédures Function et toutes les procédures Property Get est Variant.

Lorsque vous spécifiez une plage de lettres, celle-ci définit généralement le type de données pour les variables commençant par les lettres comprises parmi les premiers 128 caractères du jeu de caractères. Toutefois, lorsque vous indiquez la plage A–Z, vous définissez la valeur par défaut sur le type de données spécifié pour toutes les variables, y compris les variables commençant par des caractères internationaux de la section étendue du jeu de caractères (128–255).

Une fois la plage A–Z précisée, vous ne pouvez plus redéfinir de sous-plages de variables à l'aide des instructions Deftype. Une fois une plage spécifiée, si vous incluez une lettre précédemment définie dans une autre instruction Deftype, une erreur se produit. Toutefois, vous pouvez préciser explicitement le type de données de toute variable, définie ou non, à l'aide d'une instruction Dim accompagnée d'une clause As type. Utilisez par exemple le code suivant au niveau module pour définir une variable comme Double même si le type de données par défaut est Integer :

DefInt A-Z

Dim TaxRate As Double

Les instructions Deftype n'affectent pas les éléments des types définis par l'utilisateur car les éléments doivent être spécifiquement déclarés.


Dim, instruction

Déclare des variables et attribue de l'espace de stockage.

Syntaxe

Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . .

La syntaxe de l'instruction Dim comprend les éléments suivants :

Élément	Description
WithEvents	Facultatif. Mot clé indiquant que l'argument varname est une variable objet utilisée pour répondre aux événements déclenchés par un objet ActiveX. Valide uniquement dans des modules de classe. Vous pouvez déclarer autant de variables distinctes que vous le souhaitez à l'aide du mot clé WithEvents, mais vous ne pouvez l'utiliser pour créer des tableaux avec WithEvents. Les mots clés New et WithEvents ne peuvent être utilisés ensemble.
varname	Nom de la variable. Respecte les conventions standard d'affectation de noms aux variables.
subscripts	Facultatif. Dimensions d'une variable tableau ; vous pouvez déclarer jusqu'à 60 dimensions. La syntaxe de l'argument subscripts est la suivante : [lower To] upper [, [lower To] upper] . . . La limite inférieure d'un tableau qui n'est pas expressément fixée dans l'argument lower est déterminée par l'instruction Option Base. Cette limite a la valeur zéro en l'absence d'instruction Option Base.
New	Facultatif. Mot clé permettant la création implicite d'un objet. Si vous utilisez le mot clé New lors de la déclaration de la variable objet, une nouvelle instance de l'objet est générée lors de la première référence, ce qui évite de définir la référence d'objet par le biais de l'instruction Set. Le mot clé New ne peut être utilisé pour déclarer des variables de type de données intrinsèques et des instances d'objets dépendants. Il ne peut en outre être utilisé avec le mot clé WithEvents.
type	Facultatif. Type de données de la variable ; elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type objet. Utilisez une locution As type distincte pour chaque variable que vous déclarez.
Remarques

Les variables déclarées à l'aide de l'instruction Dim au niveau module sont disponibles pour toutes les procédures du module. Au niveau procédure, les variables ne sont disponibles qu'au sein de la procédure.

Utilisez l'instruction Dim au niveau module ou au niveau procédure pour déclarer le type de données d'une variable. Par exemple, l'instruction suivante déclare une variable comme variable de type Integer.

Dim NumberOfEmployees As Integer

Vous pouvez aussi utiliser une instruction Dim pour déclarer le type objet d'une variable. L'instruction suivante déclare une variable pour une nouvelle instance d'une feuille de calcul.

Dim X As New Worksheet

Si le mot clé New n'est pas utilisé pour déclarer une variable objet, la variable qui fait référence à l'objet ne peut être utilisée avant d'avoir été associée à un objet existant par le biais de l'instruction Set. Jusqu'à ce qu'elle soit attribuée à un objet, la variable objet déclarée a la valeur spéciale Nothing, qui indique qu'elle ne fait référence à aucune instance spécifique d'un objet.

Vous pouvez également utiliser l'instruction Dim suivie de parenthèses vides pour déclarer un tableau dynamique. Une fois le tableau dynamique déclaré, utilisez l'instruction ReDim dans une procédure pour définir le nombre de dimensions et d'éléments du tableau. Si vous tentez de déclarer à nouveau une dimension d'une variable tableau dont la taille a été indiquée explicitement dans une instruction Private, Public ou Dim, une erreur se produit.

Si vous n'indiquez aucun type de données ou d'objet et s'il n'y a pas d'instruction Deftype dans le module, la variable est de type Variant par défaut.

Lors de l'initialisation des variables, une variable numérique prend pour valeur initiale 0, une chaîne de longueur variable prend pour valeur initiale une chaîne de longueur nulle (""), et une chaîne de longueur fixe est remplie de zéros. Les variables Variant ont la valeur Empty à l'initialisation. Chaque élément d'une variable de type défini par l'utilisateur est initialisé comme s'il s'agissait d'une variable distincte.

Note   Lorsqu'une instruction Dim est utilisée dans une procédure, elle est généralement placée au début de la procédure.


Enum, instruction

Déclare un type pour une énumération.

Syntaxe

[Public | Private] Enum name

membername [= constantexpression]

membername [= constantexpression]

. . .

End Enum

La syntaxe de l'instruction Enum comprend les éléments suivants :

Élément	Description
Public	Facultatif. Spécifie que le type Enum est visible dans tout le projet. Les types Enum sont Public par défaut.
Private	Facultatif. Spécifie que le type Enum est visible seulement dans le module dans lequel il apparaît.
name	Nom du type Enum. L'élément name doit être un identificateur Visual Basic valide. Il est spécifié comme étant le type lors de la déclaration des variables ou des paramètres du type Enum.
membername	Identificateur Visual Basic valide spécifiant le nom que portera un composant du type Enum.
constantexpression	Facultatif. Valeur de l'élément (correspond à valeur de type Long). Si aucun élément constantexpression est spécifié, la valeur affectée est soit zéro (s'il s'agit du premier élément membername), soit la valeur de l'élément membername précédent plus 1.
Remarques

Les variables d'énumération sont des variables déclarées avec un type Enum. Variables et paramètres peuvent être déclarés avec un type Enum. Les éléments du type Enum sont initialisés à des valeurs constantes dans l'instruction Enum. Les valeurs affectées ne peuvent être modifiées au moment de l'exécution et peuvent comporter des nombres positifs et négatifs. Par exemple :

Enum SecurityLevel

IllegalEntry = -1

SecurityLevel1 = 0

SecurityLevel2 = 1

End Enum

L'instruction Enum ne peut apparaître qu'au niveau module. Une fois le type Enum défini, il peut être utilisé pour déclarer variables, paramètres ou procédures renvoyant ce type. Vous ne pouvez pas qualifier un nom du type Enum avec un nom de module. Les types Public Enum compris dans un module de classe ne sont pas membres d'une classe, même s'ils figurent dans la bibliothèque de types. Les types Enum définis dans des modules standard n'apparaissent pas dans les bibliothèques de types. Les types Public Enum de même nom ne peuvent être définis dans les modules standard et ceux de classe, puisqu'ils partagent le même espace de nom. Lorsque deux types Enum figurant dans des bibliothèques de types différentes portent le même nom mais regroupent des éléments différents, la référence à une variable de type dépend de la priorité des bibliothèques de types dans la boîte de dialoque Références.

Vous ne pouvez utiliser un type Enum comme cible dans un bloc With.


Erase, instruction

Réinitialise les éléments de tableaux de taille fixe et libère l'espace de stockage réservé aux tableaux dynamiques.

Syntaxe

Erase arraylist

L'argument arraylist est composé d'une ou de plusieurs variables de tableau à effacer, séparées par des virgules.

Remarques

L'instruction Erase se comporte différemment selon que le tableau est de taille fixe (ordinaire) ou dynamique. L'instruction Erase ne libère aucune mémoire dans le cas de tableaux de taille fixe. Elle donne les valeurs suivantes aux éléments d'un tableau de taille fixe :

Type de tableau	Effet de l'instruction Erase sur les éléments du tableau fixe
Tableau numérique de taille fixe	Chaque élément prend la valeur zéro.
Tableau de chaînes de taille fixe (longueur variable)	Chaque élément accueille une chaîne de valeur nulle ("").
Tableau de chaînes de taille fixe (longueur fixe)	Chaque élément prend la valeur zéro.
Tableau de type Variant de taille fixe	Chaque élément prend la valeur Empty.
Tableau de types définis par l'utilisateur	Chaque élément est défini comme s'il s'agissait d'une variable distincte.
Tableau d'objets	Chaque élément prend la valeur spéciale Nothing.
L'instruction Erase libère la mémoire utilisée par les tableaux dynamiques. Pour que votre programme puisse à nouveau se référer au tableau dynamique, il doit au préalable déclarer une nouvelle fois les dimensions de la variable tableau à l'aide d'une instruction ReDim.


Event, instruction

Déclare un événement défini par l'utilisateur.

Syntaxe

[Public] Event procedurename [(arglist)]

La syntaxe de l'instruction Event comprend les éléments suivants :

Élément	Description
Public	Facultatif. Spécifie que l'instruction Event est visible dans tout le projet. Les types Events sont Public par défaut. Notez que les événements ne peuvent être générés que dans le module dans lequel ils sont déclarés.
procedurename	Nom de l'événement. Respecte les conventions d'affectation de nom des variables.
La syntaxe de l'argument arglist comprend les éléments suivants :

[ByVal | ByRef] varname[( )] [As type]

Élément	Description
ByVal	Facultatif. Indique que argument est passé par valeur.
ByRef	Facultatif. Indique que l'argument est passé par référence. Le mot clé ByRef est le paramètre par défaut dans Visual Basic.
varname	Nom de la variable représentant l'argument passé à la procédure. Respecte les conventions d'affectation de noms des variables.
type	Facultatif. Type de données de l'argument passé à la procédure. Il peut s'agir de Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (longueur de variable uniquement), Object, Variant, un type défini par l'utilisateur ou un type d'objet.
Remarques

Une fois l'événement déclaré, utilisez l'instruction RaiseEvent pour déclencher l'événement. La présence d'une déclaration Event dans un module standard provoque une erreur de syntaxe. Un événement ne peut être déclaré comme renvoyant une valeur. Les extraits de code suivants illustre la déclaration et le déclenchement d'un événement type :

' Déclare un événement au niveau module d'un module de classe

Event LogonCompleted (UserName as String)

Sub

RaiseEvent LogonCompleted("AntoineJan")

End Sub

Note   Vous pouvez déclarer des arguments d'événement de la même manière que pour les arguments de procédures, avec toutefois les exceptions suivantes : les événements ne peuvent pas avoir d'arguments nommés, d'arguments Optional ni d'arguments ParamArray. Les événements ne renvoient pas de valeur.


Function, instruction

Déclare le nom, les arguments et le code formant le corps d'une procédure Function.

Syntaxe

[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]

End Function

La syntaxe de l'instruction Function comprend les éléments suivants :

Élément	Description
Public	Facultatif. Indique que la procédure Function est accessible à toutes les autres procédures de tous les modules. Si cet élément est utilisé dans un module contenant un élément Option Private, la procédure n'est pas disponible en dehors du projet.
Private	Facultatif. Indique que la procédure Function n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée.
Friend	Facultatif. Utilisé uniquement dans un module de classe. Indique que la procédure Function est visible dans tout le projet, mais pas d'un contrôleur d'une instance d'objet.
Static	Facultatif. Indique que les variables locales de la procédure Function sont conservées entre les appels. L'attribut Static n'a pas d'effet sur les variables déclarées en dehors de la procédure Function, même si elles sont utilisées dans cette dernière.
name	Nom de la procédure Function. Respecte les conventions standard d'affectation de noms aux variables.
arglist	Facultatif. Liste de variables représentant des arguments qui sont passés à la procédure Function lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules.
type	Facultatif. Type de données de la valeur renvoyée par la procédure Function ; elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String ou (à l'exception des chaînes de longueur fixe), Object, Variant, ou tout type défini par l'utilisateur.
statements	Facultatif. Tout groupe d'instructions à exécuter dans la procédure Function.
expression	Facultatif. Valeur renvoyée par la procédure Function.
L'argument arglist suit la syntaxe et comprend les éléments suivants :

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

Élément	Description
Optional	Facultatif. Indique qu'un argument n'est pas obligatoire. S'il est utilisé, les arguments suivants de arglist doivent également être facultatifs et être déclarés à l'aide du mot clé Optional. Le mot clé Optional ne peut être appliqué à aucun argument si le mot clé ParamArray est utilisé.
ByVal	Facultatif. Indique que l'argument est passé par valeur.
ByRef	Facultatif. Indique que l'argument est passé par référence. ByRef est l'option par défaut dans Visual Basic.
ParamArray	Facultatif. Utilisé uniquement comme dernier argument de arglist pour indiquer que le dernier argument est un tableau Optional d'éléments de type Variant. Le mot clé ParamArray, qui permet d'indiquer un nombre quelconque d'arguments, ne peut être utilisé avec les mots clés ByVal, ByRef ou Optional.
varname	Nom de la variable représentant l'argument. Respecte les conventions standard d'affectation de noms aux variables.
type	Facultatif. Type de données de l'argument passé à la procédure : Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement) Date, String (de longueur variable uniquement), Object, Variant ou un type objet spécifique. Si le paramètre n'est pas Optional, un type défini par l'utilisateur peut également être indiqué.
defaultvalue	Facultatif. Toute constante ou expression constante. Valide uniquement pour les paramètres Optional. S'il s'agit d'un type Object, seul Nothing peut être explicitement indiqué en valeur par défaut.
Remarques

En l'absence des mentions Public, Private ou Friend, les procédures Function sont publiques par défaut. Si le mot clé Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Le mot clé Friend ne peut être utilisé que dans les modules de classe. Toutefois, les procédures Friend sont accessibles aux procédures dans tout module du projet. Une procédure Friend ne figure pas dans la bibliothèque de types de sa classe parent et ne peut faire l'objet d'une liaison tardive.

Attention   Les procédures Function peuvent être récursives, c'est-à-dire qu'elle peuvent s'appeler elles-mêmes pour accomplir une tâche déterminée. Cette caractéristique peut toutefois entraîner un dépassement de la capacité de la pile. Le mot clé Static n'est généralement pas utilisé avec des procédures Function récursives.

Tout code exécutable doit figurer dans des procédures. Vous ne pouvez définir une procédure Function au sein d'une autre procédure Function, Sub ou Property.

L'instruction Exit Function entraîne la sortie immédiate d'une procédure Function. L'exécution du programme se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Function. Une procédure Function peut comporter plusieurs instructions Exit Function apparaissant en n'importe quel point.

Tout comme une procédure Sub, une procédure Function constitue une procédure séparée pouvant accepter des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement à une procédure Sub, vous pouvez utiliser une procédure Function à droite d'une expression, comme avec une fonction intrinsèque, telle que Sqr, Cos ou Chr, lorsque vous souhaitez utiliser la valeur renvoyée par la fonction.

Vous appelez une procédure Function à l'aide du nom de la fonction suivi de la liste d'arguments entre parenthèses, dans une expression. Pour plus d'informations sur l'appel des procédures Function, voir l'instruction Call.

Pour qu'une fonction renvoie une valeur, attribuez la valeur au nom de la fonction. Un nombre quelconque d'affectations de ce type peut apparaître n'importe où dans la procédure. Si aucune valeur n'est attribuée à l'argument name, la procédure renvoie une valeur par défaut : une fonction numérique renvoie la valeur 0, une fonction de type chaîne de caractères, une chaîne de longueur nulle ("") et une fonction de type Variant, la valeur Empty. Une fonction qui renvoie une référence d'objet renvoie Nothing si aucune référence d'objet n'est attribuée à l'argument name (à l'aide de l'instruction Set) à l'intérieur de la procédure Function.

L'exemple suivant montre comment attribuer une valeur de renvoi à une fonction BinarySearch. Dans ce cas, la valeur False est attribuée au nom de la fonction pour indiquer qu'une valeur n'a pas été trouvée.

Function BinarySearch(. . .) As Boolean

. . .

' Valeur introuvable. Renvoie la valeur False.

If lower > upper Then

BinarySearch = False

Exit Function

End If

. . .

End Function

Les variables utilisées dans les procédures Function appartiennent à deux catégories : les variables qui sont déclarées explicitement dans la procédure et celles qui ne le sont pas. Les variables explicitement déclarées dans une procédure (à l'aide de l'instruction Dim ou d'une instruction équivalente) sont toujours locales au niveau de la procédure. Les autres variables utilisées mais qui ne sont pas déclarées explicitement dans une procédure sont également locales au niveau de la procédure, à moins qu'elles ne soient explicitement déclarées à un niveau plus élevé en dehors de la procédure.

Attention   Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans la procédure mais un conflit de nom peut survenir si un élément que vous avez défini au niveau module possède le même nom. Si votre procédure se réfère à une variable non déclarée qui porte le même nom qu'une autre procédure, constante ou variable, votre procédure est supposée faire référence à ce nom de niveau module. Pour éviter ce genre de conflits, déclarez explicitement les variables. Pour imposer la déclaration explicite des variables, vous pouvez utiliser l'instruction Option Explicit.

Attention   Visual Basic peut modifier l'ordre des expressions arithmétiques pour améliorer les performances internes. Évitez d'utiliser une procédure Function dans une expression arithmétique lorsque la fonction modifie la valeur des variables dans cette même expression.


GetObject, fonction

Renvoie une référence à un objet fourni par un composant ActiveX.

Syntaxe

GetObject([pathname] [, class])

La syntaxe de la fonction GetObject comprend les arguments nommés suivants :

Élément	Description
pathname	Facultatif. Variable de type Variant (String). Chemin d'accès complet et nom du fichier contenant l'objet à extraire. Si l'argument pathname est omis, l'argument class est obligatoire.
class	Facultatif. Variable de type Variant (String). Chaîne représentant la classe de l'objet.
L'argument class utilise la syntaxe appname.objecttype et comprend les éléments suivants :

Élément	Description
appname	Variant (String). Nom de l'application qui fournit l'objet.
objecttype	Variant (String). Type ou classe de l'objet à créer.
Remarques

Utilisez la fonction GetObject pour accéder à un objet ActiveX à partir d'un fichier et attribuer cet objet à une variable objet. Utilisez l'instruction Set pour attribuer l'objet renvoyé par la fonction GetObject à la variable objet. Exemple :

Dim CADObject As Object

Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Lorsque ce code est exécuté, l'application associée à l'argument pathname défini est démarrée et l'objet contenu dans le fichier indiqué est activé.

Si l'argument pathname est une chaîne de longueur nulle (""), la fonction GetObject renvoie une nouvelle instance d'objet du type indiqué. Si l'argument pathname est omis, la fonction GetObject renvoie un objet actif du type indiqué. S'il n'existe aucun objet du type indiqué, une erreur se produit.

Certaines applications vous permettent d'activer une partie d'un fichier. Il suffit d'ajouter un point d'exclamation (!) à la fin du nom de fichier et d'indiquer à la suite une chaîne identifiant la partie du fichier à activer. Pour plus d'informations sur la création de cette chaîne, consultez la documentation relative à l'application utilisée pour créer l'objet.

Dans une application de dessin, par exemple, vous pouvez avoir un dessin constitué de plusieurs plans dans un fichier. Le code suivant vous permet d'activer un plan d'un dessin nommé SCHEMA.CAD :

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

Si vous n'indiquez pas l'argument class, Automation se base sur le nom de fichier que vous fournissez pour déterminer l'application à démarrer et l'objet à activer. Certains fichiers peuvent toutefois gérer plusieurs classes d'objets. Ainsi, un dessin peut prendre en charge trois types d'objets différents : un objet Application, un objet Drawing et un objet Toolbar, appartenant tous au même fichier. Pour indiquer l'objet à activer parmi ceux du fichier, utilisez l'argument facultatif class. Exemple :

Dim MyObject As Object

Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")

Dans l'exemple, FIGMENT est le nom d'une application de dessin et DRAWING est l'un des types d'objets pris en charge par cette application.

Une fois qu'un objet est activé, vous pouvez y faire référence dans le code en utilisant la variable objet que vous avez définie. Dans l'exemple précédent, vous accédez aux propriétés et aux méthodes du nouvel objet à l'aide de la variable objet MyObject. Exemple :

MyObject.Line 9, 90

MyObject.InsertText 9, 100, "Bonjour à tous."

MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

Note   Utilisez la fonction GetObject lorsqu'il existe une instance en cours de l'objet ou si vous souhaitez créer l'objet avec un fichier déjà chargé. S'il n'existe aucune instance en cours et si vous ne voulez pas démarrer l'objet en chargeant un fichier, utilisez la fonction CreateObject.

Si un objet est enregistré comme objet à instance unique, une seule instance de l'objet est créée quel que soit le nombre d'exécutions de la fonction CreateObject. Dans le cas d'un objet à instance unique, la fonction GetObject renvoie toujours la même instance lorsqu'elle est appelée avec la syntaxe à chaîne de longueur nulle ("") et provoque une erreur si l'argument pathname est omis. Vous ne pouvez utiliser la fonction GetObject pour obtenir une référence à une classe créée à l'aide de Visual Basic.


Implements, instruction

Spécifie une interface ou une classe qui sera implémentée dans le module de classe dans lequel il apparaît.

Syntaxe

Implements [InterfaceName | Class]

L'argument InterfaceName ou Class requis est le nom d'une interface ou d'une classe dans une bibliothèque de types dont les méthodes seront implémentées par les méthodes correspondantes dans la classe Visual Basic.

Remarques

Une interface est une collection de prototypes représentant les membres (méthodes et propriétés) que l'interface encapsule, c'est-à-dire qu'elle ne contient que la déclaration des procédures membres. Une classe assure l'implémentation de toutes les méthodes et procédures d'une ou plusieurs interfaces. Les classes fournissent le code utilisé lorsqu'un contrôleur de la classe appelle chaque fonction. Toutes les classes implémentent au moins une interface, qui est alors considérée comme l'interface par défaut de la classe. Dans Visual Basic, tout membre qui n'est pas un membre explicite d'une interface implémentée appartient implicitement à l'interface par défaut.

Lorsqu'une classe Visual Basic implémente une interface, elle fournit ses propres versions de toutes les procédures Public spécifiées dans la bibliothèque de types de l'interface. En plus d'assurer la correspondance entre les prototypes d'interface et vos procédures, l'instruction Implements oblige la classe à accepter les appels COM QueryInterface pour l'identificateur d'interface spécifié.

Note   Visual Basic n'implémente ni les classes, ni les interfaces dérivées.

Lorsque vous implémentez une interface ou une classe, vous devez inclure toutes les procédures Public impliquées. L'absence d'un membre dans l'implémentation d'une interface ou d'une classe provoque une erreur. Si vous omettez du code dans l'une des procédures d'une classe implémentée, vous pouvez générer l'erreur appropriée (Const E_NOTIMPL = &H80004001) de sorte qu'un utilisateur de l'implémentation comprenne qu'un membre n'est pas implémenté.

L'instruction Implements ne peut apparaître dans un module standard.


LBound, fonction

Renvoie une valeur de type Long contenant le plus petit indice disponible pour la dimension indiquée d'un tableau.

Syntaxe

LBound(arrayname[, dimension])

La syntaxe de la fonction LBound comprend les éléments suivants :

Élément	Description
arrayname	Nom de la variable de tableau. Respecte les conventions standard d'affectation de noms aux variables.
dimension	Facultatif. Variable de type Variant (Long). Nombre entier indiquant pour quelle dimension la limite inférieure est renvoyée. Utilisez 1 pour la première dimension, 2 pour la deuxième, etc. Si l'argument dimension est omis, la valeur 1 est retenue par défaut.
Remarques

La fonction LBound est utilisée avec la fonction UBound pour déterminer la taille d'un tableau. Utilisez la fonction UBound pour rechercher la limite supérieure d'une dimension de tableau.

La fonction LBound renvoie les valeurs ci-dessous dans le cas d'un tableau doté des dimensions suivantes :

Dim A(1 To 100, 0 To 3, -3 To 4)

Instruction	Valeur renvoyée
LBound(A, 1)	1
LBound(A, 2)	0
LBound(A, 3)	-3
Par défaut, la limite inférieure d'une dimension quelconque est 0 ou 1, selon la valeur de l'instruction Option Base. La base d'un tableau créé à l'aide de la fonction Array a pour valeur zéro et n'est pas affectée par l'instruction Option Base.

Pour les tableaux dont les dimensions sont définies à l'aide de la clause To dans une instruction Dim, Private, Public, ReDim ou Static, la limite inférieure peut être n'importe quelle valeur entière.


Let, instruction

Attribue la valeur d'une expression à une variable ou à une propriété.

Syntaxe

[Let] varname = expression

La syntaxe de l'instruction Let comprend les éléments suivants :

Élément	Description
Let	Facultatif. L'utilisation explicite du mot clé Let est une question de style, mais ce mot clé est généralement omis.
varname	Nom de la variable ou propriété. Respecte les conventions standard d'affectation de noms aux variables.
expression	Valeur attribuée à la variable ou à la propriété.
Remarques

Une expression de valeur ne peut être attribuée à une variable ou à une propriété que si son type de données est compatible avec la variable. Vous ne pouvez attribuer d'expressions de chaîne à des variables numériques, ni ne pouvez attribuer d'expressions numériques à des variables de chaînes. Ces actions entraînent une erreur à la compilation.

Les variables de type Variant peuvent être attribuées à des expressions de chaînes ou à des expressions numériques. L'inverse n'est toutefois pas toujours vrai. N'importe quelle variable de type Variant, à l'exception de celles de type Null, peut être attribuée à une variable chaîne. En revanche, une variable numérique ne peut accepter qu'une variable de type Variant dont la valeur peut être interprétée comme un nombre. Utilisez la fonction IsNumeric pour déterminer si la variable de type Variant peut être convertie en valeur numérique.

Attention   Si vous attribuez une expression d'un type numérique donné à une variable d'un type numérique différent, la valeur de l'expression sera convertie dans le type de la variable résultante.

Les instructions Let peuvent être utilisées pour attribuer une variable d'enregistrement à une autre à condition que les deux variables soient du même type défini par l'utilisateur. Utilisez l'instruction LSet pour attribuer des variables de type enregistrement de différents types définis par l'utilisateur. Utilisez l'instruction Set pour attribuer des références d'objet à des variables.


Option Base, instruction

Instruction utilisée au niveau module pour déclarer la limite inférieure par défaut des indices d'un tableau.

Syntaxe

Option Base {0 | 1}

Remarques

La base par défaut ayant la valeur 0, l'instruction Option Base n'est jamais obligatoire. Si elle est utilisée, l'instruction doit apparaître dans un module avant toute procédure. L'instruction Option Base ne peut apparaître qu'une seule fois dans un module et doit précéder les déclarations de tableau contenant des dimensions.

Note   La clause To des instructions Dim, Private, Public, ReDim et Static constitue un moyen plus souple de contrôler la plage des indices d'un tableau. Toutefois, si vous ne définissez pas explicitement la limite inférieure à l'aide d'une clause To, vous pouvez utiliser l'instruction Option Base pour modifier la limite inférieure par défaut et lui attribuer la valeur 1. La base d'un tableau créé à l'aide du mot clé ParamArray a pour valeur zéro ; l'instruction Option Base n'affecte ni le mot clé ParamArray (ni la fonction Array, lorsqu'elle est qualifiée à l'aide du nom de sa bibliothèque de types, VBA.Array, par exemple).

L'instruction Option Base modifie uniquement la limite inférieure des tableaux situés dans le même module que l'instruction.


Option Compare, instruction

Instruction utilisée au niveau module pour déclarer la méthode de comparaison par défaut qu'il convient d'utiliser lors de la comparaison de chaînes.

Syntaxe

Option Compare {Binary | Text | Database}

Remarques

Si elle est utilisée, l'instruction Option Compare doit apparaître dans un module avant toute procédure.

L'instruction Option Compare définit la méthode de comparaison de chaînes (Binary, Text ou Database) pour un module. Si le module ne contient pas d'instruction Option Compare, la méthode de comparaison de texte par défaut est Binary.

L'instruction Option Compare Binary fournit des comparaisons de chaînes basées sur un ordre de tri dérivé de la représentation binaire interne des caractères. Dans Microsoft Windows, l'ordre de tri est déterminé par la page de code. L'exemple suivant décrit un ordre de tri binaire typique :

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

L'instruction Option Compare Text fournit des comparaisons de chaînes basées sur un ordre de tri qui ne distingue pas les majuscules des minuscules et qui est déterminé par les paramètres régionaux de votre système. Si les caractères ci-dessus sont triés à l'aide de l'instruction Option Compare Text, l'ordre de tri de texte suivant est utilisé :

(A=a) < ( À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)

L'instruction Option Compare Database ne peut être utilisée que dans Microsoft Access. Elle fournit des comparaisons de chaînes basées sur l'ordre de tri déterminé par l'identificateur de paramètres régionaux de la base de données dans laquelle la comparaison de chaînes est effectuée.


Option Explicit, instruction

Instruction utilisée au niveau module pour imposer la déclaration explicite de toutes les variables de ce module.

Syntaxe

Option Explicit

Remarques

Si elle est utilisée, l'instruction Option Explicit doit apparaître dans un module avant toute procédure.

Si l'instruction Option Explicit apparaît dans un module, vous devez déclarer explicitement toutes les variables à l'aide des instructions Dim, Private, Public, ReDim ou Static. Si vous tentez d'utiliser un nom de variable non déclarée, une erreur se produit à la compilation.

Si vous n'utilisez pas l'instruction Option Explicit, toutes les variables non déclarées sont de type Variant à moins qu'un type par défaut soit précisé à un autre endroit à l'aide d'une instruction Deftype.

Note   Utilisez l'instruction Option Explicit pour éviter toute faute de frappe lors de la saisie du nom d'une variable existante ou pour écarter tout risque de confusion dans un code où la portée de la variable n'apparaît pas clairement.


Option Private, instruction

Lorsqu'elle est utilisée dans des applications hôtes autorisant des références dans plusieurs projets, l'instruction Option Private Module interdit au contenu d'un module d'être référencé à l'extérieur de son projet. Dans des applications hôtes qui n'autorisent pas ce type de références, par exemple dans les versions autonomes de Visual Basic, l'instruction Option Private est sans effet.

Syntaxe

Option Private Module

Remarques

Si elle est utilisée, l'instruction Option Private doit apparaître au niveau module, avant toute procédure.

Si un module contient une instruction Option Private Module, les éléments publics, par exemple les variables, les objets et les types définis par l'utilisateur déclarés au niveau module, restent disponibles dans le projet contenant le module, mais ne sont pas disponibles pour les autres applications ou projets.

Note   L'instruction Option Private n'est utile que pour les applications hôtes gérant le chargement simultané de plusieurs projets et autorisant des références entre les projets chargés. Par exemple, Microsoft Excel autorise le chargement de plusieurs projets et l'instruction Option Private Module peut être utilisée pour restreindre la visibilité interprojets. Bien que Visual Basic autorise le chargement de plusieurs projets, les références entre projets ne sont jamais autorisées au sein de Visual Basic.


Private, instruction

Instruction utilisée au niveau module pour déclarer des variables privées et attribuer de l'espace de stockage.

Syntaxe

Private [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . .

La syntaxe de l'instruction Private comprend les éléments suivants :

Élément	Description
WithEvents	Facultatif. Mot clé indiquant que l'argument varname est une variable objet utilisée pour répondre aux événements déclenchés par un objet ActiveX. Valide uniquement dans les modules de classe. Vous pouvez déclarer autant de variables distinctes que vous le souhaitez avec le mot clé WithEvents, mais vous ne pouvez l'utiliser pour créer des tableaux. Les mots clés New et WithEvents ne peuvent être utilisés ensemble.
varname	Nom de la variable. Respecte les conventions standard d'affectation de noms aux variables.
subscripts	Facultatif. Dimensions d'une variable tableau. Vous pouvez déclarer jusqu'à 60 dimensions. La syntaxe de l'argument subscripts est la suivante :
	[lower To] upper [,[lower To] upper] . . .
	La limite inférieure d'un tableau qui n'est pas expressément indiquée dans l'argument lower est déterminée par l'instruction Option Base. Cette limite a la valeur zéro en l'absence d'instruction Option Base.
New	Facultatif. Mot clé permettant la création implicite d'un objet. Si vous utilisez le mot clé New lors de la déclaration de la variable objet, une nouvelle instance de l'objet est générée lors de la première référence, ce qui évite de définir la référence d'objet par le biais de l'instruction Set. Le mot clé New ne peut être utilisé pour déclarer des variables de type de données intrinsèques et des instances d'objets dépendants. En outre, il ne peut être utilisé avec le mot clé WithEvents.
type	Facultatif. Type de données de la variable. Elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type objet. Utilisez une clause As type distincte pour chaque variable définie.
Remarques

Les variables Private ne sont disponibles que pour le module dans lequel elles sont déclarées.

Utilisez l'instruction Private pour déclarer le type de données d'une variable. Par exemple, l'instruction suivante déclare une variable en tant que variable de type Integer :

Private NumberOfEmployees As Integer

Vous pouvez également utiliser une instruction Private pour déclarer le type objet d'une variable. L'instruction suivante déclare une variable pour une nouvelle instance d'une feuille de calcul.

Private X As New Worksheet

Si le mot clé New n'est pas utilisé pour déclarer une variable objet, la variable faisant référence à un objet doit être attribuée à un objet existant à l'aide de l'instruction Set avant d'être utilisée. Jusqu'à ce qu'elle soit attribuée à un objet, la variable objet déclarée possède la valeur spéciale Nothing, qui indique qu'elle ne fait référence à aucune instance spécifique d'un objet.

Si vous n'indiquez aucun type de données ou d'objet et s'il n'existe aucune instruction Deftype dans le module, la variable est par défaut de type Variant.

Vous pouvez également utiliser l'instruction Private suivie de parenthèses vides pour déclarer un tableau dynamique. Une fois le tableau dynamique déclaré, utilisez l'instruction ReDim au sein d'une procédure pour définir le nombre de dimensions et d'éléments du tableau. Si vous tentez de déclarer à nouveau une dimension d'une variable tableau dont la taille a été définie explicitement dans une instruction Private, Public ou Dim, une erreur se produit.

Lors de l'initialisation des variables, une variable numérique prend pour valeur initiale 0, une chaîne de longueur variable prend pour valeur initiale une chaîne de longueur nulle (""), et une chaîne de longueur fixe est remplie de zéros. Les variables de type Variant ont la valeur Empty à l'initialisation. Chaque élément d'une variable de type défini par l'utilisateur est initialisé comme s'il s'agissait d'une variable distincte.

Note   Lorsqu'une instruction Private est utilisée dans une procédure, elle est généralement placée au début de cette dernière.


Property Get, instruction

Déclare le nom, les arguments et le code formant le corps d'une procédure Property, qui lit la valeur d'une propriété.

Syntaxe

[Public | Private | Friend] [Static] Property Get name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Property]
[statements]
[name = expression]

End Property

La syntaxe de l'instruction Property Get comprend les éléments suivants :

Élément	Description
Public	Facultatif. Indique que la procédure Property Get est accessible à toutes les autres procédures dans l'ensemble des modules. Dans un module contenant une instruction Option Private, la procédure n'est pas disponible en dehors du projet.
Private	Facultatif. Indique que la procédure Property Get n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée.
Friend	Facultatif. Utilisé uniquement dans un module de classe. Indique que la procédure Property Get est visible dans tout le projet, mais pas d'un contrôleur d'une instance d'objet.
Static	Facultatif. Indique que les variables locales de la procédure Property Get sont conservées entre les appels. L'attribut Static n'a aucun effet sur les variables déclarées en dehors de la procédure Property Get, même si elles sont utilisées dans cette dernière.
name	Nom de la procédure Property Get. Respecte les conventions standard d'affectation de noms aux variables. Il peut toutefois s'agir du nom d'une procédure Property Let ou Property Set du même module.
arglist	Facultatif. Liste de variables représentant des arguments qui sont passés à la procédure Property Get lorsqu'elle est appelée. Les différents arguments sont séparés par des virgules. Le nom et le type de données d'un argument dans une procédure Property Get doivent concorder avec ceux de l'argument correspondant dans la procédure Property Let, si elle existe.
type	Facultatif. Type de données de la valeur renvoyée par la procédure Property Get. Elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (à l'exception des chaînes de longueur fixe), Object, Variant, de type défini par l'utilisateur, ou un tableau. L'argument type renvoyé par une procédure Property Get doit avoir le même type de données que le dernier (ou seul) argument de la procédure Property Let correspondante (si elle existe) qui définit la valeur attribuée à la propriété dans la partie droite d'une expression.
statements	Facultatif. Tout groupe d'instructions à exécuter dans le corps de la procédure Property Get.
expression	Facultatif. Valeur de la propriété renvoyée par la procédure qui a été définie par l'instruction Property Get.
La syntaxe de l'argument arglist comprend les éléments suivants :

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

Élément	Description
Optional	Facultatif. Indique qu'un argument n'est pas obligatoire. S'il est utilisé, les arguments suivants de arglist doivent également être facultatifs et doivent être déclarés avec le mot clé Optional.
ByVal	Facultatif. Indique que l'argument est passé par valeur.
ByRef	Facultatif. Indique que l'argument est passé par référence. ByRef est l'option par défaut dans Visual Basic.
ParamArray	Facultatif. Utilisé uniquement comme dernier argument dans arglist pour indiquer que l'argument final est un tableau Optional composé d'éléments de type Variant. Le mot clé ParamArray permet d'indiquer un nombre arbitraire d'arguments. Il peut ne pas être utilisé par ByVal, ByRef ou Optional.
varname	Nom de la variable représentant l'argument. Respecte les conventions standard d'affectation de noms aux variables.
type	Facultatif. Type de données de l'argument passé à la procédure. Il peut être du type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (de longueur variable uniquement), Object, Variant ou un type objet spécifique. Si le paramètre n'est pas Optional, il est possible d'indiquer également un type défini par l'utilisateur.
defaultvalue	Facultatif. Toute constante ou expression constante. Valide uniquement pour les paramètres Optional. S'il s'agit d'un type Object, seule la valeur Nothing peut être explicitement indiquée en valeur par défaut.
Remarques

En l'absence des mentions Public, Private ou Friend, les procédures Property sont publiques par défaut. Si le mot clé Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Le mot clé Friend ne peut être utilisé que dans les modules de classe. Toutefois, les procédures Friend sont accessibles aux procédures dans tout module du projet. Une procédure Friend ne figure pas dans la bibliothèque de types de sa classe parent et ne peut faire l'objet d'une liaison tardive.

Tout code exécutable doit figurer dans des procédures. Il est impossible de définir une procédure Property Get au sein d'une autre procédure Property, Sub ou Function.

L'instruction Exit Property entraîne la sortie immédiate d'une procédure Property Get. L'exécution du programme se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Property Get. Une procédure Property Get peut comporter plusieurs instructions Exit Property apparaissant en n'importe quel point.

Tout comme les procédures Sub et Property Let, une procédure Property Get constitue une procédure séparée pouvant accepter des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement aux procédures Sub et Property Let, les procédures Property Get peuvent être utilisées à droite d'une expression, comme vous utiliseriez une procédure Function ou le nom d'une propriété pour renvoyer la valeur d'une propriété.


Property Let, instruction

Déclare le nom, les arguments et le code formant le corps d'une procédure Property Let, qui attribue une valeur à une propriété.

Syntaxe

[Public | Private | Friend] [Static] Property Let name ([arglist,] value)
[statements]
[Exit Property]
[statements]

End Property

La syntaxe de l'instruction Property Let comprend les éléments suivants :

Élément	Description
Public	Facultatif. Indique que la procédure Property Let est accessible à toutes les autres procédures dans l'ensemble des modules. Dans un module contenant une instruction Option Private, la procédure n'est pas disponible en dehors du projet.
Private	Facultatif. Indique que la procédure Property Let n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée.
Friend	Facultatif. Utilisé uniquement dans un module de classe. Indique que la procédure Property Let est visible dans tout le projet, mais pas d'un contrôleur d'une instance d'objet.
Static	Facultatif. Indique que les variables locales de la procédure Property Let sont conservées entre les appels. L'attribut Static n'a aucun effet sur les variables déclarées en dehors de la procédure Property Let, même si elles sont utilisées dans cette dernière.
name	Nom de la procédure Property Let. Respecte les conventions standard d'affectation de noms aux variables. Toutefois, il peut s'agir du nom d'une procédure Property Get ou Property Set du même module.
arglist	Requis. Liste de variables représentant des arguments qui sont passés à la procédure Property Let lorsqu'elle est appelée. Les différents arguments sont séparés par des virgules. Le nom et le type de données de chaque argument de la procédure Property Let (à l'exception du dernier) doivent concorder avec ceux de l'argument correspondant dans une procédure Property Get.
value	Variable destinée à contenir la valeur devant être affectée à la propriété. Lorsque la procédure est appelée, cet argument apparaît à droite de l'expression appelante. Le type de données de value doit être identique au type renvoyé par la procédure Property Get correspondante.
statements	Facultatif. Tout groupe d'instructions à exécuter dans la procédure Property Let.
La syntaxe de l'argument arglist comprend les éléments suivants :

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

Élément	Description
Optional	Facultatif. Indique qu'un argument n'est pas obligatoire. S'il est utilisé, les arguments suivants de arglist doivent également être facultatifs et doivent être déclarés avec le mot clé Optional. N'oubliez pas que la partie droite d'une expression Property Let ne peut être Optional.
ByVal	Facultatif. Indique que l'argument est passé par valeur.
ByRef	Facultatif. Indique que l'argument est passé par référence. ByRef est l'option par défaut dans Visual Basic.
ParamArray	Facultatif. Utilisé uniquement comme dernier argument dans arglist pour indiquer que l'argument final est un tableau Optional composé d'éléments de type Variant. Le mot clé ParamArray permet d'indiquer un nombre arbitraire d'arguments. Il peut ne pas être utilisé par ByVal, ByRef ou Optional.
varname	Nom de la variable représentant l'argument. Respecte les conventions standard d'affectation de noms aux variables.
type	Facultatif. Type de données de l'argument passé à la procédure. Elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (de longueur variable uniquement), Object, Variant, type défini par l'utilisateur et Arrays.
defaultvalue	Facultatif. Toute constante ou expression constante. Valide pour les paramètres Optional uniquement. S'il s'agit d'un type Object, seul Nothing peut être explicitement indiqué en valeur par défaut.
Note   Toute instruction Property Let doit préciser au moins un argument pour la procédure en cours de définition. Cet argument (ou le dernier d'entre eux si l'instruction en comporte plusieurs) contient la valeur devant effectivement être attribuée à la propriété lors de l'appel de la procédure définie par l'instruction Property Let. Cet argument correspond à value dans la précédente syntaxe.

Remarques

En l'absence des mentions Public, Private ou Friend, les procédures Property sont publiques par défaut. Si le mot clé Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Le mot clé Friend ne peut être utilisé que dans les modules de classe. Toutefois, les procédures Friend sont accessibles aux procédures dans tout module du projet. Une procédure Friend ne figure pas dans la bibliothèque de types de sa classe parent et ne peut faire l'objet d'une liaison tardive.

Tout code exécutable doit figurer dans des procédures. Il est impossible de définir une procédure Property Let au sein d'une procédure Property, Sub ou Function.

L'instruction Exit Property entraîne la sortie immédiate d'une procédure Property Let. L'exécution du programme se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Property Let. Une procédure Property Let peut comporter plusieurs instructions Exit Property apparaissant en n'importe quel point.

Tout comme les procédures Function et Property Get, une procédure Property Let constitue une procédure séparée pouvant accepter des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement aux procédures Function et Property Get, qui renvoient une valeur, une procédure Property Let ne peut être utilisée qu'à gauche d'une expression d'attribution de propriété ou d'une instruction Let.


Property Set, instruction

Déclare le nom, les arguments et le code formant le corps d'une procédure Property, qui établit une référence à un objet.

Syntaxe

[Public | Private | Friend] [Static] Property Set name ([arglist,] reference)
[statements]
[Exit Property]
[statements]

End Property

La syntaxe de l'instruction Property Set comprend les éléments suivants :

Élément	Description
Optional	Facultatif. Indique que l'argument peut ne pas être fourni par l'instruction appelante.
Public	Facultatif. Indique que la procédure Property Set est accessible à toutes les autres procédures dans l'ensemble des modules. Dans un module contenant une instruction Option Private, la procédure n'est pas disponible en dehors du projet.
Private	Facultatif. Indique que la procédure Property Set n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée.
Friend	Facultatif. Utilisé uniquement dans un module de classe. Indique que la procédure Property Set est visible dans tout le projet, mais pas d'un contrôleur d'une instance d'objet.
Static	Facultatif. Indique que les variables locales de la procédure Property Set sont conservées entre les appels. L'attribut Static n'a aucun effet sur les variables déclarées à l'extérieur de la procédure Property Set, même si elles sont utilisées dans cette dernière.
name	Nom de la procédure Property Set. Respecte les conventions standard d'affectation de noms aux variables. Toutefois, il peut s'agir du nom d'une procédure Property Get ou Property Let du même module.
arglist	Requis. Liste de variables représentant des arguments qui sont passés à la procédure Property Set lorsqu'elle est appelée. Les différents arguments sont séparés par des virgules.
reference	Variable contenant la référence d'objet utilisée à droite de l'affectation de la référence d'objet.
statements	Facultatif. Tout groupe d'instructions à exécuter au sein de la procédure Property.
L'argument arglist suit la syntaxe et comprend les éléments suivants :

[Optional] [ByVal | ByRef] varname[( )] [As type] [= defaultvalue]

Élément	Description
Optional	Facultatif. Indique qu'un argument n'est pas obligatoire. S'il est utilisé, les arguments suivants de arglist doivent également être facultatifs et déclarés avec le mot clé Optional. N'oubliez pas que la partie droite d'une expression Property Set ne peut être Optional.
ByVal	Facultatif. Indique que l'argument est passé par valeur.
ByRef	Facultatif. Indique que l'argument est passé par référence. ByRef est l'option par défaut dans Visual Basic.
ParamArray	Facultatif. Utilisé uniquement comme dernier argument dans arglist pour indiquer que l'argument final est un tableau Optional composé d'éléments de type Variant. Le mot clé ParamArray permet d'indiquer un nombre arbitraire d'arguments. Il peut ne pas être utilisé par ByVal, ByRef ou Optional.
varname	Nom de la variable représentant l'argument. Respecte les conventions standard d'affectation de noms aux variables.
type	Facultatif. Type de données de l'argument passé à la procédure. Il peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (de longueur variable uniquement), Object, Variant ou un type objet spécifique. Si le paramètre n'est pas Optional, il est également possible d'indiquer un type défini par l'utilisateur.
defaultvalue	Facultatif. Toute constante ou expression constante. Valide uniquement pour les paramètres Optional. S'il s'agit d'un type Object, seul Nothing peut être explicitement indiqué en valeur par défaut.
Note   Toute instruction Property Set doit préciser au moins un argument pour la procédure en cours de définition. Cet argument (ou le dernier d'entre eux si l'instruction en comporte plusieurs) contient la référence d'objet effective de la propriété lors de l'appel de la procédure définie par l'instruction Property Set. Il correspond à reference dans la précédente syntaxe. Il ne peut être Optional.

Remarques

En l'absence des mentions Public, Private ou Friend, les procédures Property sont publiques par défaut. Si le mot clé Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Le mot clé Friend ne peut être utilisé que dans les modules de classe. Toutefois, les procédures Friend sont accessibles aux procédures dans tout module du projet. Une procédure Friend ne figure pas dans la bibliothèque de types de sa classe parent et ne peut faire l'objet d'une liaison tardive.

Tout code exécutable doit figurer dans des procédures. Il est impossible de définir une procédure Property Set au sein d'une procédure Property, Sub ou Function.

L'instruction Exit Property entraîne la sortie immédiate de la procédure Property Set. L'exécution du programme se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Property Set. Une procédure Property Set peut comporter plusieurs instructions Exit Property apparaissant en n'importe quel point.

Tout comme les procédures Function et Property Get, une procédure Property Set constitue une procédure séparée pouvant accepter des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement aux procédures Function et Property Get, qui renvoient une valeur, une procédure Property Set ne peut être utilisée que dans la partie gauche d'une attribution de référence d'objet (instruction Set).


Public, instruction

Instruction utilisée au niveau module pour déclarer des variables publiques et attribuer de l'espace de stockage.

Syntaxe

Public [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . .

La syntaxe de l'instruction Public comprend les éléments suivants :

Élément	Description
WithEvents	Facultatif. Mot clé indiquant que l'argument varname représente une variable objet utilisée pour répondre aux événements déclenchés par un objet ActiveX. Valide uniquement dans les modules de classe. Vous pouvez déclarer autant de variables distinctes que vous le souhaitez avec le mot clé WithEvents, mais ce dernier ne permet pas de créer de tableaux. Les mots clés New et WithEvents ne peuvent être utilisés ensemble.
varname	Nom de la variable. Respecte les conventions standard d'affectation de noms aux variables.
subscripts	Facultatif. Dimensions d'une variable tableau. Vous pouvez déclarer jusqu'à 60 dimensions. La syntaxe de l'argument subscripts est la suivante : [lower To] upper [,[lower To] upper] . . . La limite inférieure d'un tableau qui n'est pas explicitement indiquée dans l'argument lower est déterminée par l'instruction Option Base. Cette limite a la valeur zéro en l'absence d'instruction Option Base.
New	Facultatif. Mot clé permettant la création implicite d'un objet. Si vous utilisez le mot clé New lors de la déclaration de la variable objet, une nouvelle instance de l'objet est générée lors de la première référence, ce qui évite de définir la référence d'objet par le biais de l'instruction Set. Le mot clé New ne peut être utilisé pour déclarer des variables de types de données intrinsèques ou des instances d'objets dépendants. En outre, il ne peut être utilisé avec le mot clé WithEvents.
type	Facultatif. Type de données de la variable. Elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String, (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type objet. Utilisez une clause As type distincte pour chaque variable à définir.
Remarques

Les variables déclarées avec l'instruction Public sont accessibles à toutes les procédures, dans l'ensemble des modules de toutes les applications, à moins que Option Private Module ne soit activé. Dans ce cas, les variables ne sont publiques qu'au sein du projet qui les accueille.

Attention   L'instruction Public ne doit pas être utilisée dans un module de classe pour déclarer une variable chaîne de longueur fixe.

Utilisez l'instruction Public pour déclarer le type de données d'une variable. Par exemple, l'instruction suivante déclare une variable de type Integer :

Public NumberOfEmployees As Integer

Vous pouvez aussi utiliser l'instruction Public pour déclarer le type objet d'une variable. L'instruction suivante déclare une variable pour une nouvelle instance d'une feuille de calcul.

Public X As New Worksheet

Si le mot clé New n'est pas utilisé pour déclarer une variable objet, la variable qui fait référence à l'objet ne peut être utilisée avant d'avoir été associée à un objet existant par le biais de l'instruction Set. Tant qu'elle n'est pas associée à un objet, la variable objet déclarée a la valeur spéciale Nothing, indiquant qu'elle ne fait référence à aucune instance spécifique d'un objet.

Vous pouvez également utiliser l'instruction Public suivie de parenthèses vides pour déclarer un tableau dynamique. L'instruction ReDim permet ensuite de définir dans une procédure le nombre de dimensions et d'éléments du tableau. Si vous tentez de déclarer à nouveau une dimension d'un tableau dont la taille a été explicitement indiquée dans une instruction Private, Public ou Dim, une erreur se produit.

Si vous ne précisez aucun type de données ou d'objet et si le module ne comporte aucune instruction Deftype, la variable est de type Variant par défaut.

Lors de l'initialisation des variables, une variable numérique prend pour valeur initiale 0, une chaîne de longueur variable prend pour valeur initiale une chaîne de longueur nulle (""), et une chaîne de longueur fixe est remplie de zéros. Les variables de type Variant ont la valeur Empty à l'initialisation. Chaque élément d'une variable de type défini par l'utilisateur est initialisé comme s'il s'agissait d'une variable distincte.


ReDim, instruction

Instruction utilisée au niveau procédure pour réattribuer de l'espace de stockage aux variables de tableaux dynamiques.

Syntaxe

ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .

La syntaxe de l'instruction ReDim comprend les éléments suivants :

Élément	Description
Preserve	Facultatif. Mot clé utilisé pour conserver les données d'un tableau préexistant dont vous modifiez la taille de la dernière dimension.
varname	Nom de la variable. Respecte les conventions standard d'affectation de noms aux variables.
subscripts	Dimensions d'une variable tableau. Vous pouvez déclarer jusqu'à 60 dimensions. La syntaxe de l'argument subscripts est la suivante : [lower To] upper [,[lower To] upper] . . . La limite inférieure d'un tableau qui n'est pas explicitement fixée dans l'argument lower est déterminée par l'instruction Option Base. Cette limite a la valeur zéro en l'absence d'instruction Option Base.
type	Facultatif. Type de données de la variable. Elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type objet. Utilisez une clause As type distincte pour chaque variable à définir. Pour une variable de type Variant contenant un tableau, l'argument type décrit le type des éléments du tableau, mais ne permet pas de passer du type Variant à un autre.
Remarques

L'instruction ReDim permet de dimensionner et de redimensionner un tableau dynamique ayant déjà été déclaré de manière formelle par le biais d'une instruction Private, Public ou Dim suivie de parenthèses vides (sans indices de dimension).

Vous pouvez utiliser l'instruction ReDim à plusieurs reprises pour modifier le nombre d'éléments et de dimensions d'un tableau. Cependant, vous ne pouvez changer a posteriori le type d'un tableau à l'aide de l'instruction ReDim, sauf si ce tableau est contenu dans une variable de type Variant. Dans ce cas, le type des éléments est modifiable en utilisant une clause As type, sauf si vous utilisez le mot clé Preserve. Aucun changement de type de données n'est alors possible.

Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner que la dernière dimension du tableau. Vous ne pouvez en aucun cas modifier le nombre de dimensions. Par exemple, si votre tableau n'a qu'une dimension, vous pouvez la modifier puisqu'il s'agit de la dernière et seule dimension. Toutefois, si le tableau compte plusieurs dimensions, seule la taille de la dernière dimension est modifiable si vous souhaitez préserver le contenu du tableau. L'exemple suivant montre comment augmenter la taille de la dernière dimension d'un tableau dynamique sans effacer les données qu'il contient :

ReDim X(10, 10, 10)

. . .

ReDim Preserve X(10, 10, 15)

De même, le mot clé Preserve ne permet de redimensionner un tableau qu'en modifiant la limite supérieure ; toute modification de la limite inférieure provoque une erreur.

Si vous réduisez la taille d'un tableau, les données contenues dans les éléments supprimés sont perdues. Si vous transmettez par référence un tableau à une procédure, ce dernier ne peut être redimensionné au sein de la procédure.

Lors de l'initialisation des variables, une variable numérique prend pour valeur initiale 0, une chaîne de longueur variable prend pour valeur initiale une chaîne de longueur nulle (""), et une chaîne de longueur fixe est remplie de zéros. Les variables de type Variant ont la valeur Empty à l'initialisation. Chaque élément d'une variable de type défini par l'utilisateur est initialisé comme s'il s'agissait d'une variable distincte. Une variable qui fait référence à un objet ne peut être utilisée avant d'avoir été associée à un objet existant avec l'instruction Set. Tant qu'elle n'est pas associée à un objet, la variable objet déclarée a la valeur spéciale Nothing, indiquant qu'elle ne fait référence à aucune instance spécifique d'un objet.

Attention   L'instruction ReDim a un effet déclaratif si la variable déclarée n'existe pas au niveau module ou au niveau procédure. Si une autre variable portant le même nom est créée ultérieurement, même avec une portée plus importante, l'instruction ReDim fait référence à cette dernière et n'engendre pas systématiquement d'erreur de compilation, même si Option Explicit est activé. Pour éviter tout conflit de ce type, l'instruction ReDim ne doit pas être utilisée dans un but déclaratif, mais uniquement pour redimensionner des tableaux.

Note   Pour redimensionner un tableau contenu dans une variable de type Variant, il vous faut au préalable déclarer explicitement cette variable.


Rem, instruction

Utilisée pour inclure des remarques explicatives dans un programme.

Syntaxe

Rem comment

Vous pouvez également utiliser la syntaxe suivante :

' comment

L'argument facultatif comment correspond au texte du commentaire à inclure. Insérez un espace entre le mot clé Rem et l'argument comment.

Remarques

Si vous utilisez des numéros de ligne ou des étiquettes de ligne, une instruction GoTo ou GoSub peut effectuer un branchement sur une ligne contenant une instruction Rem. L'exécution se poursuit à partir de la première instruction exécutable suivant l'instruction Rem. Si le mot clé Rem suit d'autres instructions sur une ligne, il doit être précédé du signe deux-points (:).

Le mot clé Rem peut être remplacé par une apostrophe ('). Lorsque vous utilisez l'apostrophe sur une ligne comportant d'autres instructions, il n'est pas nécessaire de la faire précéder du signe deux-points.


Set, instruction

Attribue une référence d'objet à une variable ou à une propriété.

Syntaxe

Set objectvar = {[New] objectexpression | Nothing}

La syntaxe de l'instruction Set comprend les éléments suivants :

Élément	Description
objectvar	Nom de la variable ou propriété. Respecte les conventions standard d'affectation de noms aux variables.
New	Facultatif. Le mot clé New est généralement utilisé dans les déclarations pour permettre les créations implicites d'objet. Utilisé avec Set, le mot clé New crée une nouvelle instance de la classe. Si l'argument objectvar contenait une référence à un objet, cette dernière est abandonnée lors de l'association de la nouvelle. Le mot clé New ne peut pas être utilisé pour créer de nouvelles instances de types de données intrinsèques ou des objets dépendants.
objectexpression	Expression représentant le nom d'un objet, d'une autre variable déclarée du même type objet ou d'une fonction ou méthode renvoyant un objet du même type.
Nothing	Facultatif. Met fin à l'association entre objectvar et un objet donné. L'attribution de la valeur Nothing à l'argument objectvar libère l'ensemble des ressources système et mémoire associées à l'objet anciennement référencé lorsqu'aucune autre variable ne le désigne.
Remarques

Pour être valide, l'argument objectvar doit avoir un type objet compatible avec l'objet auquel il est attribué.

Les instructions Dim, Private, Public, ReDim et Static déclarent exclusivement des variables faisant référence à un objet. Aucun objet réel n'est désigné tant que vous n'avez pas associé un objet particulier à la variable avec l'instruction Set.

L'exemple suivant montre comment déclarer un tableau de type Form1 avec l'instruction Dim. Aucune instance de Form1 n'existe réellement. L'instruction Set associe ensuite à la variable myChildForms des références à de nouvelles instances de Form1. Ce code peut être utilisé pour créer des feuilles filles dans une application MDI.

Dim myChildForms(1 to 4) As Form1

Set myChildForms(1) = New Form1

Set myChildForms(2) = New Form1

Set myChildForms(3) = New Form1

Set myChildForms(4) = New Form1

En règle générale, lorsque vous utilisez l'instruction Set pour associer une référence d'objet à une variable, aucune copie de l'objet n'est créée pour cette variable. En revanche, c'est une référence à l'objet qui est créée. Plusieurs variables objets peuvent faire référence au même objet. Ces variables constituant des références à l'objet et non des copies de ce dernier, toute modification apportée à l'objet est répercutée sur toutes les variables associées. Toutefois, lorsque vous utilisez le mot clé New dans l'instruction Set, vous créez en réalité une instance de l'objet.


Static, instruction

Instruction utilisée au niveau procédure pour déclarer des variables et attribuer de l'espace de stockage. Les variables déclarées à l'aide de l'instruction Static conservent leur valeur pendant toute la durée de l'exécution du code.

Syntaxe

Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]] . . .

La syntaxe de l'instruction Static comprend les éléments suivants :

Élément	Description
varname	Nom de la variable. Respecte les conventions standard d'affectation de noms aux variables.
subscripts	Facultatif. Dimensions d'une variable tableau. Vous pouvez déclarer jusqu'à 60 dimensions. La syntaxe de l'argument subscripts est la suivante : [lower To] upper [,[lower To] upper] . . . La limite inférieure d'un tableau qui n'est pas explicitement indiquée dans l'argument lower est déterminée par l'instruction Option Base. Cette limite a la valeur zéro en l'absence d'instruction Option Base.
New	Facultatif. Mot clé qui permet la création implicite d'un objet. Si vous utilisez le mot clé New lors de la déclaration d'une variable objet, une nouvelle instance de l'objet est générée lors de la première référence, ce qui évite de définir la référence d'objet par le biais de l'instruction Set. Le mot clé New ne peut être utilisé pour déclarer des variables de types de données intrinsèques et des instances d'objets indépendants.
type	Facultatif. Type de données de la variable. Elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String, (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type objet. Utilisez une clause As type distincte pour chaque variable à définir.
Remarques

Durant l'exécution du code du module, les variables déclarées avec l'instruction Static conservent leur valeur jusqu'au redémarrage ou la réinitialisation de ce dernier. Dans les modules de classe, les variables déclarées à l'aide de l'instruction Static conservent leur valeur dans chaque instance de classe jusqu'à la destruction de cette instance. Dans les modules de feuille, les variables statiques conservent leur valeur jusqu'à la fermeture de la feuille. Utilisez l'instruction Static dans les procédures non statiques pour déclarer explicitement les variables visibles seulement au sein de la procédure, mais dont la durée de vie est égale à celle du module dans lequel la procédure est définie.

Utilisez une instruction Static dans une procédure pour déclarer le type de données d'une variable devant conserver sa valeur entre les appels de procédure. Par exemple, l'instruction ci-dessous déclare un tableau de taille fixe contenant des entiers :

Static EmployeeNumber(200) As Integer

L'instruction suivante déclare une variable pour une nouvelle instance d'une feuille de calcul :

Static X As New Worksheet

Si le mot clé New n'est pas utilisé pour déclarer une variable d'objet, la variable qui fait référence à l'objet ne peut être utilisée avant d'avoir été associée à un objet existant avec l'instruction Set. Tant qu'elle n'est pas associée à un objet, la variable d'objet déclarée a la valeur spéciale Nothing, indiquant qu'elle ne fait référence à aucune instance spécifique d'un objet. Si vous utilisez le mot clé New lors de la déclaration, une instance de l'objet est créée lors de la première référence à ce dernier.

Si vous n'indiquez aucun type de données et si le module ne comporte aucune instruction Deftype, la variable est de type Variant par défaut.

Note   L'instruction Static et le mot clé Static sont apparentés, mais ont un effet différent. Si vous déclarez une procédure à l'aide du mot clé Static (comme dans Static Sub CountSales ()), l'espace de stockage est attribué une seule fois pour toutes les variables et la valeur de ces dernières est conservée pendant toute la durée de l'exécution du programme. Avec les procédures non statiques, l'espace de stockage est attribué aux variables à chaque appel de la procédure et est libéré à chaque sortie de procédure. L'instruction Static permet de déclarer des variables au sein de procédures non statiques et de conserver leur valeur pendant toute la durée de l'exécution du programme.

Lors de l'initialisation des variables, une variable numérique prend pour valeur initiale 0, une chaîne de longueur variable prend pour valeur initiale une chaîne de longueur nulle (""), et une chaîne de longueur fixe est remplie de zéros. Les variables de type Variant ont la valeur Empty à l'initialisation. Chaque élément d'une variable de type défini par l'utilisateur est initialisé comme s'il s'agissait d'une variable distincte.

Note   Lorsque vous utilisez des instructions Static dans une procédure, placez-les au début de la procédure avec les autres instructions déclaratives, comme Dim.


Sub, instruction

Déclare le nom, les arguments et le code formant le corps d'une procédure Sub.

Syntaxe

[Private | Public | Friend] [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]

End Sub

La syntaxe de l'instruction Sub comprend les éléments suivants :

Élément	Description
Public	Facultatif. Indique que la procédure Sub est accessible à toutes les autres procédures dans l'ensemble des modules. Dans un module contenant une instruction Option Private, la procédure n'est pas disponible en dehors du projet.
Private	Facultatif. Indique que la procédure Sub n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée.
Friend	Facultatif. Utilisé uniquement dans un module de classe. Indique que la procédure Sub est visible dans tout le projet, mais pas d'un contrôleur d'une instance d'objet.
Static	Facultatif. Indique que les variables locales de la procédure Sub sont conservées entre les appels. L'attribut Static n'a aucun effet sur les variables déclarées en dehors de la procédure Sub, même si elles sont utilisées dans cette dernière.
name	Nom de la procédure Sub. Respecte les conventions standard d'affectation de noms aux variables.
arglist	Facultatif. Liste de variables représentant des arguments qui sont passés à la procédure Sub lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules.
statements	Facultatif. Tout groupe d'instructions à exécuter dans la procédure Sub.
L'argument arglist suit la syntaxe et comprend les éléments suivants :

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

Élément	Description
Optional	Facultatif. Mot clé indiquant qu'un argument n'est pas nécessaire. S'il est utilisé, les arguments suivants de arglist doivent également être facultatifs et déclarés avec le mot clé Optional. Le mot clé Optional ne peut être appliqué à aucun argument si le mot clé ParamArray est utilisé.
ByVal	Facultatif. Indique que l'argument est passé par valeur.
ByRef	Facultatif. Indique que l'argument est passé par référence. ByRef est l'option par défaut dans Visual Basic.
ParamArray	Facultatif. Utilisé exclusivement comme dernier argument dans arglist pour indiquer que l'argument final est un tableau Optional contenant des éléments de type Variant. Le mot clé ParamArray, qui permet d'indiquer un nombre quelconque d'arguments, ne peut être utilisé avec les mots clé ByVal, ByRef ou Optional.
varname	Nom de la variable représentant l'argument. Respecte les conventions standard d'affectation de noms aux variables.
type	Facultatif. Type de données de l'argument passé à la procédure. Il peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (chaînes de longueur variable uniquement), Object, Variant ou un type objet spécifique. Si le paramètre n'est pas Optional, il est également possible d'indiquer un type défini par l'utilisateur.
defaultvalue	Facultatif. Toute constante ou expression constante. Valide uniquement pour les paramètres Optional. S'il s'agit d'un type Object, seul Nothing peut être explicitement indiqué en valeur par défaut.
Remarques

En l'absence des mentions Public, Private ou Friend, les procédures Sub sont publiques par défaut. Si le mot clé Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Le mot clé Friend ne peut être utilisé que dans les modules de classe. Toutefois, les procédures Friend sont accessibles aux procédures dans tout module du projet. Une procédure Friend ne figure pas dans la bibliothèque de types de sa classe parent et ne peut faire l'objet d'une liaison tardive.

Attention   Les procédures Sub peuvent être récursives ; en d'autres termes, elles peuvent faire appel à elles-mêmes pour exécuter une tâche. Cette caractéristique peut toutefois entraîner un dépassement de capacité de la pile. Le mot clé Static n'est généralement pas utilisé avec les procédures Sub récursives.

Tout code exécutable doit figurer dans des procédures. Il n'est pas possible de définir une procédure Sub au sein d'une procédure Sub, Function ou Property.

Les mots clés Exit Sub entraînent la sortie immédiate d'une procédure Sub. L'exécution du programme se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Sub. Une procédure Sub peut comporter plusieurs instructions Exit Sub en n'importe quel point.

Tout comme la procédure Function, une procédure Sub constitue une procédure séparée pouvant accepter des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement à la procédure Function, qui renvoie une valeur, il est impossible d'utiliser une procédure Sub dans une expression.

Pour appeler une procédure Sub, utilisez son nom suivi d'une liste d'arguments. Pour plus d'informations sur l'appel des procédures Sub, voir l'instruction Call.

Les variables utilisées dans les procédures Sub appartiennent à deux catégories : les variables qui sont déclarées explicitement au sein de la procédure (à l'aide de l'instruction Dim ou de l'équivalent) et celles qui ne le sont pas. Les premières sont locales au niveau de la procédure. Les variables utilisées sans avoir été explicitement déclarées sont également locales au niveau de la procédure, à moins qu'elles ne soient explicitement déclarées à un niveau supérieur en dehors de la procédure.

Attention   Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans cette dernière. Un conflit de nom peut toutefois survenir si un élément défini au niveau module porte le même nom. Si la procédure fait référence à une variable non déclarée portant le même nom qu'une autre procédure, constante ou variable, la procédure est supposée faire référence au nom de niveau module. Afin d'éviter ce type de conflit, déclarez explicitement les variables. Pour imposer la déclaration explicite des variables, vous pouvez utiliser l'instruction Option Explicit.

Note   Vous ne pouvez pas entrer dans une procédure Sub, ni en sortir, à l'aide des instructions GoSub, GoTo ou Return.


Type, instruction

Instruction utilisée au niveau module pour créer un type de données défini par l'utilisateur contenant un ou plusieurs éléments.

Syntaxe

[Private | Public] Type varname
 elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .

End Type

La syntaxe de l'instruction Type comprend les éléments suivants :

Élément	Description
Public	Facultatif. Utilisé pour déclarer des types définis par l'utilisateur disponibles dans toutes les procédures de l'ensemble des modules dans tous les projets.
Private	Facultatif. Utilisé pour déclarer des types définis par l'utilisateur disponibles uniquement dans le module dans lequel a lieu la déclaration.
varname	Nom du type défini par l'utilisateur. Respecte les conventions standard d'affectation de noms aux variables.
elementname	Nom d'un élément de type défini par l'utilisateur. Les noms d'éléments respectent également les conventions standard d'affectation de noms aux variables, mais des mots clés peuvent être utilisés.
subscripts	La limite inférieure d'un tableau qui n'est pas explicitement indiquée dans l'argument lower est déterminée par l'instruction Option Base. Cette limite a la valeur zéro en l'absence d'instruction Option Base.
type	Type de données de l'élément. Il peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type objet.
Remarques

L'instruction Type ne peut être utilisée qu'au niveau module. Une fois que vous avez déclaré un type défini par l'utilisateur en utilisant l'instruction Type, vous pouvez déclarer une variable de ce type n'importe où dans la portée de la déclaration. Utilisez les mots clés Dim, Private, Public, ReDim ou Static pour déclarer une variable de type défini par l'utilisateur.

Dans les modules standard, les types définis par l'utilisateur sont publics par défaut. Le mot clé Private permet de redéfinir ce niveau de visibilité. Cependant, dans les modules de classe, les types définis par l'utilisateur sont toujours privés et leur visibilité ne peut être modifiée par le mot clé Public.

Les numéros de ligne et les étiquettes de ligne ne peuvent être utilisés dans les blocs Type...End Type.

Les types définis par l'utilisateur sont souvent utilisés avec les enregistrements de données, car ces derniers sont fréquemment constitués d'un certain nombre d'éléments connexes n'ayant pas tous le même type de données.

L'exemple suivant montre l'utilisation de tableaux de taille fixe dans un type défini par l'utilisateur :

Type StateData

CityCode (1 To 100) As Integer	' Déclare un tableau statique.

County As String * 30

End Type

Dim Washington(1 To 100) As StateData

Dans l'exemple ci-dessus, StateData inclut le tableau statique CityCode, et l'enregistrement Washington a la même structure que StateData.

Lorsque vous déclarez un tableau de taille fixe dans un type défini par l'utilisateur, ses dimensions doivent être définies sous forme de littéraux numériques ou de constantes plutôt que sous forme de variables.


UBound, fonction

Renvoie une valeur de type Long contenant le plus grand indice disponible pour la dimension indiquée d'un tableau.

Syntaxe

UBound(arrayname[, dimension])

La syntaxe de la fonction UBound comprend les éléments suivants :

Élément	Description
arrayname	Nom de la variable de tableau. Respecte les conventions standard d'affectation de noms aux variables.
dimension	Facultatif. Donnée de type Variant (Long). Nombre entier définissant la dimension dont la limite supérieure est renvoyée. Utilisez 1 pour la première dimension, 2 pour la deuxième, etc. Si l'argument dimension est omis, la valeur supposée est 1.
Remarques

La fonction UBound est utilisée avec la fonction LBound pour déterminer la taille d'un tableau. Utilisez la fonction LBound pour connaître la limite inférieure d'une dimension de tableau.

La fonction UBound renvoie les valeurs ci-dessous pour un tableau dont les dimensions sont les suivantes :

Dim A(1 To 100, 0 To 3, -3 To 4)

Instruction	Valeur renvoyée
UBound(A, 1)	100
UBound(A, 2)	3
UBound(A, 3)	4


Array, fonction, exemple

Cet exemple utilise la fonction Array pour renvoyer une valeur de type Variant contenant un tableau.

Dim MyWeek, MyDay

MyWeek = Array("Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim")

' Les valeurs renvoyées supposent que la limite

' inférieure a été définie avec la valeur 1 (à l'aide

' de l'instruction Option Base).

MyDay = MyWeek(2)	' MyDay contient "Mar".

MyDay = MyWeek(4)	' MyDay contient "Jeu".


Const, instruction, exemple

Cet exemple utilise l'instruction Const pour déclarer des constantes à utiliser à la place de valeurs littérales. Les constantes Public sont déclarées dans la section Général d'un module standard, plutôt que d'un module de classe, et les constantes Private dans la section Général de tout type de module.

' Les constantes sont de type Private par défaut.

Const MyVar = 459

' Déclare une constante de type Public.

Public Const MyString = "AIDE"

' Déclare une constante Integer de type Private.

Private Const MyInt As Integer = 5

' Déclare plusieurs constantes sur la même ligne.

Const MyStr = "Bonjour", MyDouble As Double = 3.4567


CreateObject, fonction, exemple

Cet exemple utilise la fonction CreateObject pour définir une référence (xlApp) à Microsoft Excel. Il utilise la référence pour accéder à la propriété Visible de Microsoft Excel, puis la méthode Quit de Microsoft Excel pour fermer cette application. Enfin, la référence elle-même est libérée.

Dim xlApp As Object	' Déclare la variable devant

' contenir la référence.

Set xlApp = CreateObject("excel.application")

' Peut-être devrez-vous attribuer la valeur True à

' la propriété Visible pour afficher

' l'application.

xlApp.Visible = True

' Utilise xlApp pour accéder aux autres objets de

' Microsoft Excel.

xlApp.Quit	' Une fois terminé, utilise la méthode

' Quit pour fermer

Set xlApp = Nothing	' puis libère la référence.


Declare, instruction, exemple

Cet exemple montre comment l'instruction Declare est utilisée au niveau module d'un module standard pour déclarer une référence à une procédure externe dans une bibliothèque de liaisons dynamiques (DLL, Dynamic-Link Library). Vous pouvez placer les instructions Declare dans des modules de classe si les instructions Declare sont de type Private.

' Sous Microsoft Windows (16 bits):

Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

' Suppose que SomeBeep est un alias pour le nom de procédure.

Declare Sub MessageBeep Lib "User" _

Alias "SomeBeep"(ByVal N As Integer)

' Utilise un numéro d'ordre dans la locution Alias pour

' appeler GetWinFlags.

Declare Function GetWinFlags Lib "Kernel" Alias "#132"() As Long

' Sous les systèmes Microsoft Windows 32 bits, indiquez

' la bibliothèque USER32.DLL, plutôt que la

' bibliothèque USER.DLL. Vous pouvez utiliser la

' compilation conditionnelle pour écrire

' du code s'exécutant sur un système Win32 ou Win16.

#If Win32 Then

Declare Sub MessageBeep Lib "User32" (ByVal N As Long)

#Else

Declare Sub MessageBeep Lib "User" (ByVal N As Integer)

#End If


Deftype, instructions, exemple

Cet exemple illustre différentes utilisations des instructions Deftype pour définir des types de données par défaut de variables et de procédures de fonction dont les noms commencent par les caractères indiqués. Le type de données par défaut ne peut être remplacé que par affectation explicite à l'aide de l'instruction Dim. Les instructions Deftype ne peuvent être utilisées qu'au niveau module (autrement dit, elles ne peuvent pas être utilisées au sein de procédures).

' Les noms de variable commençant par un caractère

' compris entre A et K sont par défaut de type Integer.

DefInt A-K

' Les noms de variable commençant par un caractère

' compris entre L et Z sont par défaut de type String.

DefStr L-Z

CalcVar = 4	' Initialise la valeur de type Integer.

StringVar = "Bonjour les amis"	' Initialise la

' valeur de type

' String.

AnyVar = "Bonjour" 	' Entraîne l'erreur

' "Type incompatible".

Dim Calc As Double	' Définit explicitement le type en

' tant que Double.

Calc = 2.3455	' Attribue une valeur de type Double.

' Les instructions Deftype s'appliquent également aux

' procédures de fonction.

CalcNum = ATestFunction(4)	' Appelle une fonction

' définie par

' l'utilisateur.

' Définition de la procédure Function ATestFunction.

Function ATestFunction(INumber)

ATestFunction = INumber * 2	' La valeur renvoyée

' est un entier.

End Function


Dim, instruction, exemple

Cet exemple illustre l'instruction Dim utilisée pour déclarer des variables et des tableaux. La limite inférieure par défaut des indices de tableau est 0 et elle peut être redéfinie au niveau module à l'aide de l'instruction Option Base.

' AnyValue et MyValue sont déclarées par défaut en tant

' que Variant et leurs valeurs sont définies en tant

' qu'Empty.

Dim AnyValue, MyValue

' Déclare de manière explicite une variable de type

' Integer.

Dim Number As Integer

' Plusieurs déclarations sur une même ligne. AnotherVar

' est de type Variant car son type n'est pas précisé.

Dim AnotherVar, Choice As Boolean, BirthDate As Date

' DayArray est un tableau de valeurs de type Variant

' avec 51 éléments indexés, de 0 à 50, en supposant que

' Option Base est définie à l'aide de la valeur 0 (par

' défaut) pour le module en cours.

Dim DayArray(50)

' La matrice est un tableau bidimensionnel de nombres

' entiers.

Dim Matrix(3, 4) As Integer

' MyMatrix est un tableau tridimensionnel de valeur de

' type double avec des limites explicites.

Dim MyMatrix(1 To 5,  4 To 9,  3 To 5) As Double

' BirthDay est un tableau de dates avec des index

' allant de 1 à 10.

Dim BirthDay(1 To 10) As Date

' MyArray est un tableau dynamique de valeurs de type

' variant.

Dim MyArray()


Enum, instruction, exemple

L'exemple suivant illustre l'utilisation de l'instruction Enum pour définir une collection de constantes nommées. Ici, les constantes sont des couleurs que vous pourriez sélectionner pour créer des feuilles de saisie de données dans une base de données.

Public Enum InterfaceColors

icMistyRose = &HE1E4FF&

icSlateGray = &H908070&

icDodgerBlue = &HFF901E&

icDeepSkyBlue = &HFFBF00&

icSpringGreen = &H7FFF00&

icForestGreen = &H228B22&

icGoldenrod = &H20A5DA&

icFirebrick = &H2222B2&

End Enum


Erase, instruction, exemple

Cet exemple utilise l'instruction Erase pour réinitialiser les éléments de tableaux de taille fixe et libère la mémoire allouée à un tableau dynamique.

' Déclare les variables de type tableau.

Dim NumArray(10) As Integer	' Tableau d'entiers.

Dim StrVarArray(10) As String	' Tableau de chaînes

' de longueur

' variable.

Dim StrFixArray(10) As String * 10	' Tableau de chaînes

' de longueur fixe.

Dim VarArray(10) As Variant	' Tableau d'éléments de

' type Variant.

Dim DynamicArray() As Integer	' Tableau dynamique.

ReDim DynamicArray(10)	' Alloue de l'espace mémoire.

Erase NumArray	' Chaque élément prend la valeur 0.

Erase StrVarArray	' Chaque élément prend pour valeur

' une chaîne

' de longueur nulle ("").

Erase StrFixArray	' Chaque élément prend la valeur 0.

Erase VarArray	' Chaque élément prend la valeur Empty.

Erase DynamicArray	' Libère l'espace mémoire occupé par

' le tableau.


Event, instruction, exemple

L'exemple suivant utilise des événements pour chronométrer en secondes une démonstration du 100 mètres le plus rapide. Le code illustre toutes les méthodes, propriétés et instructions relatives aux événements, y compris l'instruction Event.

La classe qui déclenche un événement est la source de celui-ci, alors que les classes qui l'implémentent sont les récepteurs. Une source d'événement peut avoir plusieurs récepteurs pour les événements qu'elle génère. Après génération par une classe, l'événement est déclenché pour chaque classe réceptrice des événements pour cette instance de l'objet.

L'exemple utilise aussi une feuille (Form1) contenant un bouton (Command1), une étiquette (Label1) et deux zones de texte (Text1 et Text2). Lorsque vous cliquez sur le bouton, la première zone de texte affiche "Départ" et la seconde commence le chronométrage. Une fois le temps total (9,84 secondes) écoulé, la première zone de texte affiche "Arrivée", la seconde "9,84".

Le code correspondant à Form1 indique les états initial et final de la feuille. Elle contient aussi le code exécuté au déclenchement des événements.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Command1_Click()

Text1.Text = "Départ"

    Text1.Refresh

    Text2.Text = "0"

    Text2.Refresh

Call mText.TimerTask(9.84)

End Sub

Private Sub Form_Load()

    Command1.Caption = "Cliquez pour lancer la minuterie "

    Text1.Text = ""

    Text2.Text = ""

    Label1.Caption = "Le meilleur temps du 100 mètres est de :"

    Set mText = New TimerState

    End Sub

Private Sub mText_ChangeText()

    Text1.Text = "Arrivée"

    Text2.Text = "9,84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

    Text2.Text = Str(Format(dblJump, "0"))

    DoEvents

End Sub

Le code restant se trouve dans un module de classe appelé TimerState. Les instructions Event déclarent les procédures lancées lorsque les événements sont déclenchés.

Option Explicit

Public Event UpdateTime(ByVal dblJump As Double)

Public Event ChangeText()

Public Sub TimerTask(ByVal Duration As Double)

    Dim dblStart As Double

    Dim dblSecond As Double

    Dim dblSoFar As Double

    dblStart = Timer

    dblSoFar = dblStart

    Do While Timer < dblStart + Duration

        If Timer - dblSoFar >= 1 Then

            dblSoFar = dblSoFar + 1

            RaiseEvent UpdateTime(Timer - dblStart)

        End If

    Loop

    RaiseEvent ChangeText

End Sub


Function, instruction, exemple

Cet exemple utilise l'instruction Function pour déclarer le nom, les arguments et le code qui constituent le corps d'une procédure Function. Le dernier exemple utilise des arguments Optional initialisés et nommés explicitement.

' Cette fonction définie par l'utilisateur renvoie la

' racine carrée de l'argument qui lui est transmis.

Function CalculateSquareRoot(NumberArg As Double) As Double

If NumberArg < 0 Then	' Évalue l'argument.

Exit Function	' Quitte pour revenir à la

' procédure appelante.

Else

' Renvoie la racine carrée.

CalculateSquareRoot = Sqr(NumberArg)

End If

End Function

Le mot clé ParamArray permet à une fonction d'accepter un nombre variable d'arguments. Dans la définition suivante, FirstArg est transmis par valeur.

Function CalcSum(ByVal FirstArg As Integer, ParamArray OtherArgs())

Dim ReturnValue

' Si la fonction est appelée sous la forme:

ReturnValue = CalcSum(4, 3 ,2 ,1)

' Les variables locales ont les valeurs suivantes: FirstArg = 4,

' OtherArgs(1) = 3, OtherArgs(2) = 2, etc., en

' supposant que la limite inférieure par défaut des

' tableaux = 1.

Les arguments Optional peuvent être dotés de types et de valeurs par défaut autres que Variant.

' Si les arguments d'une fonction sont définis

' sous la forme:

Function MyFunc(MyStr As String, Optional MyArg1 As _

Integer = 5, Optional MyArg2 = "Dolly")

Dim RetVal

' La fonction peut être appelée de plusieurs façons:

' Les 3 arguments sont fournis.

RetVal = MyFunc("Bonjour", 2, "à tous")

RetVal = MyFunc("Test", , 5)	' Le deuxième argument est

' omis.

' Arguments un et trois indiqués en utilisant des

' arguments nommés.

RetVal = MyFunc(MyStr:="Bonjour ", MyArg1:=7)


GetObject, fonction, exemple

Cet exemple utilise la fonction GetObject pour obtenir une référence à une feuille de calcul Microsoft Excel spécifique (MyXL). Il utilise la propriété Application de la feuille de calcul pour rendre Microsoft Excel visible, pour fermer l'application, etc. Le premier appel à la fonction GetObject entraîne une erreur si Microsoft Excel n'est pas déjà en exécution. Dans notre exemple, l'erreur a pour conséquence d'attribuer la valeur True à l'indicateur ExcelWasNotRunning. Le deuxième appel à la fonction GetObject indique le fichier à ouvrir. Si Microsoft Excel n'est pas déjà en exécution, le deuxième appel lance l'application et renvoie une référence à la feuille de calcul représentée par le fichier indiqué, montest.xls. Ce fichier doit se trouver à l'emplacement spécifié ; dans le cas contraire, l'erreur Erreur Automation Visual Basic est générée. L'exemple de code rend ensuite Microsoft Excel et la fenêtre contenant la feuille de calcul indiquée visibles. Enfin, si Microsoft Excel n'était pas en exécution précédemment, le code utilise la méthode Quit de l'objet Application pour fermer Microsoft Excel. Si l'application était déjà en exécution, le code ne tente pas de la fermer. La référence elle-même est libérée en recevant la valeur Nothing.

' Déclare les routines d'API nécessaires:

Declare Function FindWindow Lib "user32" Alias _

"FindWindowA" (ByVal lpClassName as String, _

ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _

"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _

ByVal wParam as Long, _

ByVal lParam As Long) As Long

Sub GetExcel()

Dim MyXL As Object	' Variable devant contenir la

' référence à Microsoft Excel.

Dim ExcelWasNotRunning As Boolean	' Indicateur de libération finale.

' Test pour déterminer si une copie de Microsoft Excel

' est déjà en exécution.

On Error Resume Next	' Retarde la récupération d'erreur.

' La fonction Getobject appelée sans le premier

' argument renvoie une référence à une instance de

' l'application. Si l'application n'est pas en

' exécution, une erreur se produit.

Set MyXL = Getobject(, "Excel.Application")

If Err.Number <> 0 Then ExcelWasNotRunning = True

Err.Clear 	' Efface l'objet Err si une erreur s'est produite.

' Vérifie si Microsoft Excel est en exécution.

' Dans ce cas, l'ajoute à la table Running Object.

DetectExcel

' Définit la variable objet faisant référence au fichier à ouvrir.

Set MyXL = Getobject("c:\vb5\MONTEST.XLS")

' Affiche Microsoft Excel par l'intermédiaire de sa

' propriété Application. Affiche ensuite la fenêtre

' contenant le fichier à l'aide de la collection

' Windows de la référence à l'objet MyXL.

MyXL.Application.Visible = True

MyXL.Parent.Windows(1).Visible = True

' Effectue des opérations sur votre

 	' fichier ici.

' ...

' Si cette copie de Microsoft Excel n'était pas en cours

' d'exécution lorsque vous avez commencé, fermez-la

' à l'aide de la méthode Quit de la propriété

' Application.

' Notez que si vous tentez de quitter Microsoft Excel,

' la barre de titre clignote et un message s'affiche

' vous demandant si vous souhaitez enregistrer les

' fichiers chargés.

If ExcelWasNotRunning = True Then

MyXL.Application.Quit

End IF

Set MyXL = Nothing  ' Libère la référence à l'application

  ' et à la feuille de calcul.

End Sub

Sub DetectExcel()

' La procédure détecte une instance d'Excel en

' exécution et l'inscrit.

Const WM_USER = 1024

Dim hWnd As Long

' Si Excel est en exécution, cet appel d'API renvoie

' son descripteur.

hWnd = FindWindow("XLMAIN", 0)

If hWnd = 0 Then	' 0 signifie qu'Excel n'était
' pas en exécution.

Exit Sub

Else

' Excel est en exécution, donc utilise la fonction

' d'API SendMessage pour l'entrer dans la table

' Running Object.

SendMessage hWnd, WM_USER + 18, 0, 0

End If

End Sub


Implements, instruction, exemple

L'exemple suivant illustre l'utilisation de l'instruction Implements pour rendre un jeu de déclarations disponible auprès de plusieurs classes. Grâce à l'instruction Implements qui partage les déclarations, aucune classe n'a besoin de faire de déclaration elle-même.

Supposez qu'il y ait deux feuilles. La feuille de sélection comporte deux boutons, Données client et Données fournisseur. Pour saisir le nom et l'adresse d'un client ou d'un fournisseur, l'utilisateur clique sur le bouton Client ou Fournisseur de la feuille de sélection, puis entre les informations dans la feuille de saisie de données contenant deux champs, Nom et Adresse.

Le code suivant permettant le partage des déclarations appartient à une classe appelée PersonalData :

Public Name As String

Public Address As String

Le code prenant en charge les données client appartient à un module de classe appelé Customer :

Implements PersonalData

Private Property Get PersonalData_Address() As String

PersonalData_Address = "AdresseClient"

End Property

Private Property Let PersonalData_Address(ByVal RHS As String)

'

End Property

Private Property Let PersonalData_Name(ByVal RHS As String)

'

End Property

Private Property Get PersonalData_Name() As String

PersonalData_Name = "NomClient"

End Property

Le code prenant en charge les données fournisseur appartient à un module de classe appelé Supplier :

Implements PersonalData

Private Property Get PersonalData_Address() As String

PersonalData_Address = "AdresseFournisseur"

End Property

Private Property Let PersonalData_Address(ByVal RHS As String)

'

End Property

Private Property Let PersonalData_Name(ByVal RHS As String)

'

End Property

Private Property Get PersonalData_Name() As String

PersonalData_Name = "NomFournisseur"

End Property

Le code suivant prend en charge la feuille de sélection :

Private cust As New Customer

Private sup As New Supplier

Private Sub Command1_Click()

Dim frm2 As New Form2

    Set frm2.PD = cust

    frm2.Show 1

End Sub

Private Sub Command2_Click()

Dim frm2 As New Form2

    Set frm2.PD = sup

    frm2.Show 1

End Sub

Le code suivant prend en charge la feuille de saisie de données :

Private m_pd As PersonalData

Private Sub Form_Load()

    With m_pd

        Text1 = .Name

        Text2 = .Address

    End With

End Sub

Public Property Set PD(Data As PersonalData)

    Set m_pd = Data

End Property


LBound, fonction, exemple

Cet exemple utilise la fonction LBound pour déterminer l'indice le plus faible disponible pour la dimension indiquée d'un tableau. Utilisez l'instruction Option Base pour redéfinir la valeur par défaut d'indice de tableau de base, égale à 0.

Dim Lower

' Déclare les variables de tableau.

Dim MyArray(1 To 10, 5 To 15, 10 To 20)

Dim AnyArray(10)

Lower = Lbound(MyArray, 1) 	' Renvoie 1.

Lower = Lbound(MyArray, 3)	' Renvoie 10.

Lower = Lbound(AnyArray)	' Renvoie 0 ou 1, selon la

' valeur de Option Base.


Let, instruction, exemple

Cet exemple attribue les valeurs d'expressions à des variables en utilisant l'instruction Let explicite.

Dim MyStr, MyInt

' Les affectations de variable suivantes utilisent

' l'instruction Let.

Let MyStr = "Bonjour"

Let MyInt = 5

L'exemple suivant utilise les mêmes affectations sans l'instruction Let.

Dim MyStr, MyInt

MyStr = "Bonjour"

MyInt = 5


Option Base, instruction, exemple

Cet exemple utilise l'instruction Option Base pour redéfinir la valeur par défaut d'indice de tableau de base, égale à 0. La fonction LBound renvoie l'indice le plus faible disponible pour la dimension indiquée d'un tableau. L'instruction Option Base est utilisée au niveau module uniquement.

Option base 1	' Attribue la valeur 1 aux indices de

' tableau par défaut.

Dim Lower

' Déclare les variables de tableau.

Dim MyArray(20), TwoDArray(3, 4)

Dim ZeroArray(0 To 5)	' Remplace l'indice de base par

' défaut.

' Utilise la fonction LBound pour déterminer les

' limites inférieures de tableaux.

Lower = LBound(MyArray)	' Renvoie 1.

Lower = LBound(TwoDArray, 2)	' Renvoie 1.

Lower = LBound(ZeroArray)	' Renvoie 0.


Option Compare, instruction, exemple

Cet exemple utilise l'instruction Option Compare pour définir la méthode de comparaison de chaînes par défaut. L'instruction Option Compare est utilisée au niveau module uniquement.

' Attribue la valeur Binary à la méthode de comparaison

' de chaînes.

Option compare Binary 	' Autrement dit, "AAA" a une

' valeur inférieure à "aaa".

' Attribue la valeur Text à la méthode de comparaison

' de chaînes.

Option compare Text	' Autrement dit, "AAA" a la même

' valeur que "aaa".


Option Explicit, instruction, exemple

Cet exemple utilise l'instruction Option Explicit pour forcer la déclaration explicite de toutes les variables. Si vous essayez d'utiliser une variable non déclarée, une erreur se produit au moment de la compilation. L'instruction Option Explicit est utilisée au niveau module uniquement.

Option explicit	' Exige la déclaration explicite des

' variables.

Dim MyVar	' Déclare la variable.

MyInt = 10	' Une variable non déclarée génère une

' erreur.

MyVar = 10	' Une variable déclarée ne génère pas

' d'erreur.


Option Private, instruction, exemple

Cet exemple illustre l'instruction Option Private, utilisée au niveau module pour indiquer que la totalité du module est privée. Avec Option Private Module, les éléments de niveau module non déclarés en tant que Private sont disponibles pour les autres modules du projet, mais pas pour les autres projets ou applications.

Option private Module	' Indique que le module est privé.


Private, instruction, exemple

Cet exemple montre l'utilisation de l'instruction Private au niveau module pour déclarer des variables comme privées, ce qui signifie qu'elles ne sont disponibles que pour le module dans lequel elles sont déclarées.

' Variable Integer de type Private.

Private Number As Integer

' Variable tableau de type Private.

Private NameArray(1 To 5) As String

' Plusieurs déclarations, deux de type Variant et une

' de type Integer, toutes Private.

Private MyVar, YourVar, ThisVar As Integer


Property Get, instruction, exemple

Cet exemple utilise l'instruction Property Get pour définir une procédure de propriété qui extrait la valeur d'une propriété. La propriété identifie, sous forme de chaîne, la couleur en cours du pinceau.

Dim CurrentColor As Integer

Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

' Renvoie la couleur en cours du pinceau sous forme de

' chaîne.

Property Get PenColor() As String

Select Case CurrentColor

Case RED

PenColor = "Rouge"

Case GREEN

PenColor = "Vert"

Case BLUE

PenColor = "Bleu"

End Select

End Property

' Le code suivant extrait la couleur du pinceau

' en appelant la procédure Property Get.

ColorName = PenColor


Property Let, instruction, exemple

Cet exemple utilise l'instruction Property Let pour définir une procédure qui attribue une valeur à une propriété. La propriété identifie la couleur du pinceau d'un progiciel de dessin.

Dim CurrentColor As Integer

Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3

' Définit la propriété de couleur du pinceau.

' La variable de niveau module CurrentColor prend pour

' valeur une valeur numérique identifiant la couleur

' utilisée pour dessiner.

Property Let PenColor(ColorName As String)

Select Case ColorName	' Vérifie la chaîne de nom

' de couleur.

Case "Rouge"

CurrentColor = RED	' Attribue une valeur pour

' la couleur rouge.

Case "Vert"

CurrentColor = GREEN ' Attribue une valeur

 ' pour la couleur verte.

Case "Bleu"

CurrentColor = BLUE	' Attribue une valeur pour

' la couleur bleu.

Case Else

CurrentColor = BLACK	' Attribue une

' valeur par défaut.

End Select

End Property

' Le code suivant définit la propriété PenColor en

' appelant la procédure Property let.

PenColor = "Rouge"


Property Set, instruction, exemple

Cet exemple utilise l'instruction Property Set pour définir une procédure de propriété qui définit une référence à un objet.

' La propriété Pen peut prendre pour valeur différentes

' implémentations Pen.

Property Set Pen(P As Object)

' Attribue un objet à la propriété Pen

Set CurrentPen = P

End Property


Public, instruction, exemple

Cet exemple utilise l'instruction Public au niveau module (section Général) d'un module standard pour déclarer de manière explicite des variables comme publiques, ce qui signifie qu'elles sont disponibles pour toutes les procédures de tous les modules de toutes les applications à moins que Option Private Module soit activée.

' Variable Integer de type Public.

Public Number As Integer

' Variable tableau de type Public.

Public NameArray(1 To 5) As String

' Plusieurs déclarations, deux de type Variant et une

' de type Integer, toutes Public.

Public MyVar, YourVar, ThisVar As Integer


ReDim, instruction, exemple

Cet exemple utilise l'instruction ReDim pour allouer et réallouer de l'espace mémoire pour des variables de tableau dynamique. Il suppose que Option Base correspond à 1.

' Déclare un tableau dynamique.

Dim MyArray() As Integer

Redim MyArray(5)	' Alloue 5 éléments.

For I = 1 To 5	' Effectue la boucle 5 fois.

MyArray(I) = I	' Initialise le tableau.

Next I

L'instruction suivante redimensionne le tableau et efface les éléments.

Redim MyArray(10)	' Redimensionne pour 10 éléments.

For I = 1 To 10	' Effectue la boucle 10 fois.

MyArray(I) = I	' Initialise le tableau.

Next I

L'instruction suivante redimensionne le tableau mais n'efface pas les éléments.

' Redimensionne pour 15 éléments.

Redim Preserve MyArray(15)


Rem, instruction, exemple

Cet exemple illustre différentes formes de l'instruction Rem, utilisée pour inclure des explications dans un programme.

Dim MyStr1, MyStr2

MyStr1 = "Bonjour": Rem Commentaire après une _

 instruction, les deux éléments étant séparés par _

 le signe deux-points.

MyStr2 = "Au revoir" 	' Il s'agit également d'un _

 commentaire; les deux-points ne sont pas _

 nécessaires.


Set, instruction, exemple

Cet exemple utilise l'instruction Set pour attribuer des références d'objet à des variables. YourObject est supposé être un objet valide avec une propriété Text.

Dim YourObject, MyObject, MyStr

Set MyObject = YourObject	' Attribue la référence d'objet.

' MyObject et YourObject se rapportent au même objet.

YourObject.Text = "Bonjour "	' Initialise la propriété.

MyStr = MyObject.Text	' Renvoie "Bonjour".

' Annule l'association. MyObject ne fait plus référence

' à YourObject.

Set MyObject = Nothing	' Libère l'objet.


Static, instruction, exemple

Cet exemple utilise l'instruction Static pour conserver la valeur d'une variable tant que le code du module est en exécution.

' Définition de fonction.

Function KeepTotal(Number)

' Seule la variable Accumulate conserve sa valeur entre les appels.

Static Accumulate

Accumulate = Accumulate + Number

KeepTotal = Accumulate

End Function

' Définition de la fonction Static.

Static Function MyFunction(Arg1, Arg2, Arg3)

' Toutes les variables locales conservent leur

' valeur entre les appels de fonction.

Accumulate = Arg1 + Arg2 + Arg3

Half = Accumulate / 2

MyFunction = Half

End Function


Sub, instruction, exemple

Cet exemple utilise l'instruction Sub pour désigner le nom, les arguments et le code qui constituent le corps d'une procédure Sub.

' Définition de la procédure Sub.

' Procédure Sub avec deux arguments.

Sub SubComputeArea(Length, TheWidth)

Dim Area As Double	' Déclare la variable locale.

If Length = 0 Or TheWidth = 0 Then

' Si aucun argument = 0.

Exit Sub	' Quitte la procédure Sub immédiatement.

End If

Area = Length * TheWidth	' Calcule la zone du rectangle.

Debug.Print Area	' Imprime Area dans la fenêtre Exécution.

End Sub


Type, instruction, exemple

Cet exemple utilise l'instruction Type pour définir un type de données défini par l'utilisateur. L'instruction Type est utilisée au niveau module uniquement. Si elle apparaît dans un module de classe, une instruction Type doit être précédée du mot clé Private.

Type EmployeeRecord	' Crée un type défini par l'utilisateur.

ID As Integer	' Définit des éléments de type de données.

Name As String * 20

Address As String * 30

Phone As Long

HireDate As Date

End Type

Sub CreateRecord()

Dim MyRecord As EmployeeRecord	' Déclare la variable.

' L'affectation à la variable EmployeeRecord doit

' être effectuée dans une procédure.

MyRecord.ID = 12003	' Attribue une valeur à un élément.

End Sub


UBound, fonction, exemple

Cet exemple utilise la fonction UBound afin de déterminer l'indice le plus important disponible pour la dimension indiquée d'un tableau.

Dim Upper

' Déclare les variables de tableau.

Dim MyArray(1 To 10, 5 To 15, 10 To 20)

Dim AnyArray(10)

Upper = UBound(MyArray, 1)	' Renvoie 10.

Upper = UBound(MyArray, 3)	' Renvoie 20.

Upper = UBound(AnyArray)	' Renvoie 10.


CallByName, fonction, exemple

Cet exemple utilise la fonction CallByName pour appeler la méthode Move d'un bouton Command.

L'exemple utilise aussi une feuille (Form1) comportant un bouton (Command1) et une étiquette (Label1). Lorsque la feuille est chargée, la propriété Caption de l'étiquette a pour valeur "Move", nom de la méthode à appeler. Lorsque vous cliquez sur le bouton, la fonction CallByName appelle la méthode pour modifier l'emplacement du bouton.

Option Explicit

Private Sub Form_Load()

Label1.Caption = "Move"	' Nom de la méthode Move.

End Sub

Private Sub Command1_Click()

If Command1.Left <> 0 Then

CallByName Command1, Label1.Caption, vbMethod, 0, 0

Else

CallByName Command1, Label1.Caption, vbMethod, 500, 500

End If


As

Le mot clé As est employé dans les contextes suivants :

Const, instruction

Declare, instruction

Dim, instruction

Function, instruction

Name, instruction

Open, instruction

Private, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Public, instruction

ReDim, instruction

Static, instruction

Sub, instruction

Type, instruction


Binary

Le mot clé Binary est employé dans les contextes suivants :

Open, instruction

Option Compare, instruction


ByRef

Le mot clé ByRef est employé dans les contextes suivants :

Call, instruction

Declare, instruction

Function, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Sub, instruction


ByVal

Le mot clé ByVal est employé dans les contextes suivants :

Call, instruction

Declare, instruction

Function, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Sub, instruction


Date

Le mot clé Date est employé dans les contextes suivants :

Date, type de données

Date, fonction

Date, instruction


Else

Le mot clé Else est employé dans les contextes suivants :

If...Then...Else, instruction

Select Case, instruction


Error

Le mot clé Error est employé dans les contextes suivants :

Error, fonction

Error, instruction

On Error, instruction


For

Le mot clé For est employé dans les contextes suivants :

For...Next, instruction

For Each...Next, instruction

Open, instruction


Get

Le mot clé Get est employé dans les contextes suivants :

Get, instruction

Property Get, instruction


Input

Le mot clé Input est employé dans les contextes suivants :

Input, fonction

Input #, instruction

Line Input #, instruction

Open, instruction


Is

Le mot clé Is est employé dans les contextes suivants :

If...Then...Else, instruction

Is, opérateur

Select Case, instruction


Len

Le mot clé Len est employé dans les contextes suivants :

Len, fonction

Open, instruction


Let

Le mot clé Let est employé dans les contextes suivants :

Let, instruction

Property Let, instruction


Lock

Le mot clé Lock est employé dans les contextes suivants :

Lock, Unlock, instructions

Open, instruction


Mid

Le mot clé Mid est employé dans les contextes suivants :

Mid, fonction

Mid, instruction


New

Le mot clé New est employé dans les contextes suivants :

Dim, instruction

Private, instruction

Public, instruction

Set, instruction

Static, instruction


Next

Le mot clé Next est employé dans les contextes suivants :

For...Next, instruction

For Each...Next, instruction

On Error, instruction

Resume, instruction


On

Le mot clé On est employé dans les contextes suivants :

On Error, instruction

On...GoSub, instruction

On...GoTo, instruction


Option

Le mot clé Option est employé dans les contextes suivants :

Option Base, instruction

Option Compare, instruction

Option Explicit, instruction

Option Private, instruction


Optional

Le mot clé Optional est employé dans les contextes suivants :

Declare, instruction

Function, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Sub, instruction


ParamArray

Le mot clé ParamArray est employé dans les contextes suivants :

Declare, instruction

Function, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Sub, instruction


Print

Le mot clé Print est employé dans les contextes suivants :

Print, méthode

Print #, instruction


Private

Le mot clé Private est employé dans les contextes suivants :

Const, instruction

Declare, instruction

Enum, instruction

Function, instruction

Option Private, instruction

Private, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Sub, instruction

Type, instruction


Property

Le mot clé Property est employé dans les contextes suivants :

Property Get, instruction

Property Let, instruction

Property Set, instruction


Public

Le mot clé Public est employé dans les contextes suivants :

Const, instruction

Declare, instruction

Enum, instruction

Event, instruction

Function, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Public, instruction

Sub, instruction

Type, instruction


Resume

Le mot clé Resume est employé dans les contextes suivants :

On Error, instruction

Resume, instruction


Seek

Le mot clé Seek est employé dans les contextes suivants :

Seek, fonction

Seek, instruction


Set

Le mot clé Set est employé dans les contextes suivants :

Set, instruction

Property Set, instruction


Static

Le mot clé Static est employé dans les contextes suivants :

Function, instruction

Property Get, instruction

Property Let, instruction

Property Set, instruction

Static, instruction

Sub, instruction


Step

Le mot clé Step est employé dans les contextes suivants :

For...Next, instruction

For Each...Next, instruction


String

Le mot clé String est employé dans les contextes suivants :

String, type de données

String, fonction


Then

Le mot clé Then est employé dans les contextes suivants :

#If...Then...#Else, consigne

If...Then...Else, instruction


Time

Le mot clé Time est employé dans les contextes suivants :

Time, fonction

Time, instruction


To

Le mot clé To est employé dans les contextes suivants :

Dim, instruction

For...Next, instruction

Lock, Unlock, instructions

Private, instruction

Public, instruction

ReDim, instruction

Select Case, instruction

Static, instruction

Type, instruction


WithEvents

Le mot clé WithEvents est employé dans les contextes suivants :

Dim, instruction

Private, instruction

Public, instruction


Conventions typographiques

La documentation de Visual Basic utilise les conventions typographiques suivantes :

Convention	Description
Sub, If, ChDir, Print, True, Debug	Les mots en gras et commençant par une majuscule sont des mots-clés propres au langage.
Setup	Les mots que vous devez taper apparaissent en gras.
object, varname, arglist	Les lettres en minuscules et en italique indiquent des espaces réservés destinés aux données que vous entrez.
pathname, filenumber	Les lettres en minuscules, en gras et en italique indiquent des espaces réservés destinés aux arguments lorsque vous pouvez utiliser soit des arguments positionnels soit des arguments nommés.
[expressionlist]	Dans la syntaxe, les éléments entre crochets sont facultatifs.
{While | Until}	Dans la syntaxe, les éléments entre accolades et séparés par une barre verticale indiquent un choix obligatoire entre plusieurs éléments. Vous devez choisir l'un des éléments proposés sauf si tous les éléments sont encadrés par des crochets. Par exemple : [{Ceci | Ou Cela}]
ÉCHAP, ENTRÉE	Les mots en capitales indiquent des noms de touches et des combinaisons de touches.
ALT+F1, CTRL+R	Un signe plus (+) placé entre des noms de touches indique une combinaison de touches. Par exemple, ALT+F1 signifie maintenir la touche ALT enfoncée tout en appuyant sur la touche F1.
Conventions typographiques dans le code

Les conventions typographiques suivantes sont utilisées dans le code :

Exemple de code	Description
MyString = "Bonjour à tous!"	Cette police est utilisée pour le code, les variables et le texte des messages d'erreur.
' Ceci est un commentaire.	Une apostrophe (') introduit les commentaires de code.
MyVar = "Ceci est un " _ & "exemple" _ & " de suite de code."	Un espace et un trait de soulignement ( _) indiquent la suite d'une ligne de code.


Error, fonction, exemple

Cet exemple utilise la fonction Error pour afficher les messages d'erreur correspondant aux numéros d'erreur indiqués.

Dim ErrorNumber

For ErrorNumber = 61 To 64	' Boucle sur les valeurs 61 à 64.

Debug.Print Error(ErrorNumber)	' Affiche l'erreur dans la fenêtre Exécution.

Next ErrorNumber


Error, instruction, exemple

Cet exemple utilise l'instruction Error pour simuler le numéro d'erreur 11.

On Error Resume Next	' Diffère la gestion des erreurs.

Error 11	' Simule l'erreur "Division par zéro".


On Error, instruction, exemple

Cet exemple utilise tout d'abord l'instruction On Error GoTo pour indiquer l'emplacement d'une routine de gestion d'erreur au sein d'une procédure. Dans notre exemple, la tentative de suppression d'un fichier ouvert produit l'erreur 55. Cette erreur est traitée dans la routine de gestion d'erreur et le contrôle est ensuite renvoyé à l'instruction qui a provoqué l'erreur. L'instruction On Error GoTo 0 désactive la récupération d'erreur. L'instruction On Error Resume Next permet ensuite de différer la récupération d'erreur de sorte que le contexte de l'erreur générée par la prochaine instruction puisse être identifié clairement. Notez que Err.Clear est utilisé pour effacer les propriétés de l'objet Err une fois que l'erreur a été traitée.

Sub OnErrorStatementDemo()

' Active la routine de gestion d'erreur.

On Error GoTo ErrorHandler

' Ouvre le fichier en écriture.

Open "FICHTEST" For Output As #1

' Tente de supprimer le fichier ouvert.

Kill "FICHTEST"

' Désactive la récupération d'erreur.

On Error Goto 0

' Diffère la récupération d'erreur.

On Error Resume Next

' Essaie de lancer un objet qui n'existe pas,

' et le teste pour vérifier d'éventuelles erreurs

' Automation.

ObjectRef = GetObject("MyWord.Basic")

If Err.Number = 440 Or Err.Number = 432 Then

' Renseigne l'utilisateur. Puis efface l'objet

' Err.

Msg = "Erreur lors de la tentative " & _

"d'ouverture de l'objet Automation !"

MsgBox Msg, , "Test d'erreur différé"

Err.Clear	' Efface les champs d'objet Err

End If

' Quitte pour éviter le gestionnaire d'erreur.

Exit Sub

ErrorHandler:	' Routine de gestion d'erreur.

' Évalue le numéro d'erreur.

Select Case Err.Number

Case 55	' Erreur "Ce fichier est déjà ouvert".

Close #1	' Ferme le fichier.

Case Else

' Traite les autres situations ici...

End Select

Resume	' Reprend l'exécution au niveau de la

' ligne à l'origine de l'erreur

End Sub


Resume, instruction, exemple

Cet exemple utilise l'instruction Resume pour mettre fin à la gestion d'erreur dans une procédure et reprendre l'exécution au niveau de l'instruction qui a provoqué l'erreur. L'erreur numéro 55 est générée pour illustrer l'utilisation de l'instruction Resume.

Sub ResumeStatementDemo()

' Active la routine de gestion d'erreur.

On Error GoTo ErrorHandler

' Ouvre le fichier en écriture.

Open "FICHTEST" For Output As #1

' Tente de supprimer le fichier ouvert.

Kill "FICHTEST"

' Quitte la procédure pour éviter le gestionnaire d'erreur.

Exit Sub

ErrorHandler:	' Routine de gestion d'erreur.

' Évalue le numéro d'erreur.

Select Case Err.Number

Case 55	' Erreur "Ce fichier est déjà ouvert".

Close #1	' Ferme le fichier.

Case Else

' Traite les autres situations ici....

End Select

Resume	' Reprend l'exécution au niveau de la

' ligne à l'origine de l'erreur.

End Sub


Error, fonction

Renvoie le message d'erreur correspondant à un numéro d'erreur donné.

Syntaxe

Error[(errornumber)]

L'argument facultatif errornumber peut être n'importe quel numéro d'erreur valide. Si l'argument errornumber est un numéro d'erreur valide, mais non défini, la fonction Error renvoie la chaîne "Erreur définie par l'application ou par l'objet". Si l'argument errornumber n'est pas valide, une erreur se produit. Si l'argument errornumber est omis, le message correspondant à l'erreur d'exécution la plus récente est renvoyé. Si aucune erreur d'exécution n'est survenue, ou si l'argument errornumber est égal à 0, la fonction Error renvoie une chaîne de longueur nulle ("").

Remarques

Examinez les valeurs des propriétés de l'objet Err afin d'identifier les erreurs d'exécution les plus récentes. La valeur renvoyée par la fonction Error correspond à la propriété Description de l'objet Err.


Error, instruction

Simule l'occurrence d'une erreur.

Syntaxe

Error errornumber

L'argument errornumber demandé peut être n'importe quel numéro d'erreur valide.

Remarques

L'instruction Error est gérée pour assurer la compatibilité ascendante. Dans du nouveau code, notamment lors de la création d'objets, appliquez la méthode Raise à l'objet Err pour générer des erreurs d'exécution.

Si l'argument errornumber est défini, l'instruction Error appelle le gestionnaire d'erreurs après avoir affecté aux propriétés de l'objet Err les valeurs par défaut ci-dessous :

Propriété	Valeur
Number	Valeur indiquée comme argument de l'instruction Error. Il peut s'agir de n'importe quel numéro d'erreur valide.
Source	Nom du projet Visual Basic en cours.
Description	Expression de chaîne correspondant à la valeur renvoyée par la fonction Error pour la propriété Number indiquée, si la chaîne existe. Dans le cas contraire, la propriété Description contient une chaîne de longueur nulle ("").
HelpFile	Chemin complet, précisant le lecteur, le chemin d'accès et le nom du fichier d'aide Visual Basic.
HelpContext	Identificateur de contexte du fichier d'aide Visual Basic pour l'erreur correspondant à la propriété Number.
LastDLLError	Zéro.
Si aucun gestionnaire d'erreurs n'existe ou n'est activé, un message d'erreur est créé et affiché à partir des propriétés de l'objet Err.

Note   Toutes les applications hôtes Visual Basic ne sont pas à même de créer des objets. Vérifiez dans la documentation de votre application hôte qu'elle peut créer des classes et des objets.


On Error, instruction

Valide une routine de gestion d'erreur et définit son emplacement au sein d'une procédure ; cette instruction permet également d'invalider une routine de gestion d'erreur préalablement validée.

Syntaxe

On Error GoTo line

On Error Resume Next

On Error GoTo 0

La syntaxe de l'instruction On Error peut prendre les formes suivantes :

Instruction	Description
On Error GoTo line	Valide la routine de gestion d'erreur commençant à la ligne indiquée dans l'argument line. L'argument line peut être une étiquette de ligne ou un numéro de ligne. En cas d'erreur d'exécution, le contrôle est transmis au point indiqué dans l'argument line, ce qui valide le gestionnaire d'erreurs. La ligne indiquée dans l'argument line doit se trouver dans la même procédure que l'instruction On Error ; sinon, une erreur se produit au moment de la compilation.
On Error Resume Next	Lorsqu'une erreur d'exécution survient, le contrôle est transmis à l'instruction qui suit immédiatement celle où l'erreur s'est produite, et l'exécution continue. Il est recommandé d'utiliser cette formulation plutôt que l'instruction On Error GoTo pour accéder à des objets.
On Error GoTo 0	Invalide dans la procédure en cours tout gestionnaire d'erreurs validé.
Remarques

En l'absence d'instruction On Error, toute erreur d'exécution est fatale ; un message d'erreur apparaît et l'exécution s'arrête.

Un gestionnaire d'erreurs est "validé" lorsqu'il a été désigné par une instruction On Error ; le gestionnaire d'erreurs "actif" est un gestionnaire validé qui traite une erreur. Si une erreur se produit alors qu'un gestionnaire d'erreurs est actif (c'est-à-dire entre la ligne où survient une erreur et une instruction Resume, Exit Sub, Exit Function ou Exit Property), le gestionnaire d'erreurs de la procédure en cours ne peut gérer l'erreur. Le contrôle revient à la procédure appelante. Si la procédure appelante possède un gestionnaire d'erreurs validé, il est activé afin de gérer l'erreur. Si le gestionnaire d'erreurs de la procédure appelante est également actif, le contrôle est restitué aux procédures appelantes antérieures jusqu'à ce qu'un gestionnaire d'erreurs validé mais inactif soit trouvé. Si aucun gestionnaire d'erreurs validé et inactif n'est trouvé, l'erreur est fatale à l'emplacement où elle s'est produite. Chaque fois que le gestionnaire d'erreurs repasse le contrôle à une procédure appelante, cette procédure devient la procédure en cours. Lorsqu'une erreur est gérée par un gestionnaire d'erreurs dans n'importe quelle procédure, l'exécution reprend dans la procédure en cours à l'emplacement désigné par l'instruction Resume.

Note    Une routine de gestion d'erreur n'est pas une procédure Sub ou Function. Il s'agit d'une section de code désignée par une étiquette de ligne ou un numéro de ligne.

Les routines de gestion d'erreur utilisent la valeur de la propriété Number de l'objet Err pour déterminer la cause de l'erreur. La routine de gestion d'erreur doit tester ou sauvegarder les valeurs de la propriété pertinente de l'objet Err avant qu'une autre erreur ne se produise ou qu'une procédure susceptible de causer une erreur ne soit appelée. Les valeurs de la propriété de l'objet Err ne reflètent que l'erreur la plus récente. Le message d'erreur associé à Err.Number est contenu dans Err.Description.

L'instruction On Error Resume Next permet de poursuivre l'exécution à partir de l'instruction qui suit immédiatement celle qui a causé l'erreur d'exécution, ou qui suit immédiatement le dernier appel exécuté depuis la procédure contenant l'instruction On Error Resume Next. L'exécution peut ainsi continuer en dépit d'une erreur d'exécution. Vous pouvez placer la routine de gestion d'erreur au point où une erreur pourrait se produire, au lieu de transférer le contrôle vers un autre point de la procédure. Une instruction On Error Resume Next devient inactive lorsqu'une autre procédure est appelée ; il est donc conseillé de placer une instruction On Error Resume Next dans chaque routine nécessitant une gestion en ligne des erreurs survenues dans cette routine.

Note   La construction On Error Resume Next est plus appropriée que l'instruction On Error GoTo pour gérer les erreurs générées lors de l'accès à des objets. La vérification de la variable Err après chaque interaction avec un objet permet de savoir à quel objet votre code accédait lorsque l'erreur est survenue. Vous pouvez ainsi être certain de l'objet qui a placé le numéro d'erreur dans Err.Number et de celui qui a généré l'erreur initiale (objet précisé dans Err.Source).

L'instruction On Error GoTo 0 permet de désactiver la gestion d'erreur dans la routine en cours. Cette instruction ne déclare pas la ligne 0 comme étant le début du programme de gestion d'erreur, même si la procédure contient une ligne numéro 0. En l'absence d'instruction On Error GoTo 0, le gestionnaire d'erreurs est automatiquement désactivé lors de la sortie de procédure.

Pour éviter que le programme de gestion d'erreur ne s'exécute en l'absence d'erreur, placez une instruction Exit Sub, Exit Function ou Exit Property immédiatement avant la routine de gestion d'erreur, comme l'illustre l'exemple suivant :

Sub InitializeMatrix(Var1, Var2, Var3, Var4)

On Error GoTo ErrorHandler

. . .

Exit Sub

ErrorHandler:

. . .

Resume Next

End Sub

Dans cet exemple, le programme de gestion d'erreur suit l'instruction Exit Sub et précède l'instruction End Sub pour la séparer du déroulement normal de la procédure. Les programmes de gestion d'erreur peuvent être placés n'importe où dans une procédure.

Les erreurs issues d'objets et non interceptées sont renvoyées à l'application de contrôle durant le fonctionnement de l'objet comme fichier exécutable. Dans l'environnement de développement, les erreurs non interceptées ne sont renvoyées à l'application de contrôle que si les options correspondantes sont définies. Pour plus d'informations sur les options à activer durant le débogage, les méthodes d'activation et la création de classes par l'application hôte, reportez-vous à la documentation de cette dernière.

Si vous créez un objet accédant à d'autres objets, il est conseillé de traiter les erreurs que ces derniers ont retransmises sans les traiter. Si vous ne pouvez les gérer, établissez une correspondance entre le code d'erreur dans Err.Number et une des erreurs que vous aurez définies, puis retransmettez-le au code appelant votre objet. Pour définir une erreur, ajoutez votre numéro d'erreur à la constante vbObjectError. Par exemple, avec le numéro d'erreur 1052, procédez de la manière suivante :

Err.Number = vbObjectError + 1052

Note   Les erreurs système se produisant au cours d'appels de bibliothèques de liaisons dynamiques Windows (DLL) ou de ressources de code Macintosh ne génèrent pas d'exception et ne peuvent être interceptées par Visual Basic. Lors de l'appel de fonctions de DLL, vous devez vérifier si chaque valeur renvoyée indique un succès ou un échec (selon les spécifications de l'API) et, en cas d'échec, vérifier la valeur de la propriété LastDLLError de l'objet Err. La propriété LastDLLError retourne toujours zéro sur le Macintosh.


Resume, instruction

Reprend l'exécution après la fin du traitement par une routine de gestion d'erreur.

Syntaxe

Resume [0]

Resume Next

Resume line

La syntaxe de l'instruction Resume peut prendre l'une des formes suivantes :

Instruction	Description
Resume	Si l'erreur s'est produite dans la procédure contenant le gestionnaire d'erreurs, l'exécution reprend à partir de l'instruction qui a provoqué l'erreur. Si l'erreur s'est produite dans une procédure appelée, l'exécution reprend à l'instruction ayant appelé la procédure contenant la routine de gestion d'erreur.
Resume Next	Si l'erreur s'est produite dans une procédure contenant le gestionnaire d'erreurs, l'exécution reprend à partir de l'instruction qui suit immédiatement celle qui a provoqué l'erreur. Si l'erreur s'est produite dans une procédure appelée, l'exécution reprend à l'instruction qui suit immédiatement la dernière instruction ayant appelé la procédure contenant la routine de gestion d'erreur (ou l'instruction On Error Resume Next).
Resume line	L'exécution reprend à la ligne indiquée dans l'argument line. L'argument line, qui correspond à une étiquette de ligne ou à un numéro de ligne doit se trouver dans la même procédure que le gestionnaire d'erreurs.
Remarques

Si vous utilisez une instruction Resume en dehors d'une routine de gestion d'erreur, une erreur se produit.


La clause #Else doit être précédée du #If correspondant

#Else est une consigne de compilation conditionnelle. Cause et solution de cette erreur :

•	Une clause #Else a été détectée alors qu'elle n'est précédée d'aucun #If ou #ElseIf correspondant.

Vérifiez qu'un #If précédent a été séparé de cette clause #Else par #End If. Par ailleurs, remarquez qu'il ne peut y avoir qu'une seule clause #Else dans chaque bloc #If. Deux clauses #Else successives engendrent cette erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


#Else If, #Else ou #End If doit être précédé du #If correspondant.

#Else If, #Else et #End If sont des consignes de compilation conditionnelle. Cause et solution de cette erreur :

•	Un #Else If, #Else ou #End If a été détecté alors qu'il n'est précédé d'aucune clause #If correspondante.

Vérifiez que la clause #If prévue a été séparée de la clause en question par un bloc intermédiaire ou si la clause #If prévue est précédée d'un signe #. Si tout est correct à part cela, placez une clause #If à l'endroit approprié.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


#ElseIf doit être précédé du #If correspondant ou #ElseIf et suivi d'un #ElseIf, #Else ou #End If

#ElseIf est une consigne de compilation conditionnelle. Causes et solutions de cette erreur :

•	Un #ElseIf a été détecté alors qu'il n'est pas précédé de #If ou #ElseIf.

Placez une instruction #If avant #ElseIf ou supprimez un #End If antérieur mal placé.

•	Un #ElseIf a été détecté alors qu'il est précédé d'un #Else ou #End If.

Clôturez correctement le bloc #If précédent ou remplacez le #Else précédent par un #ElseIf.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Un composant ActiveX compatible doit être un exécutable Visual Basic ou une DLL.

Un composant ActiveX compatible est un composant que vous définissez comme compatible ActiveX. Cause et solution de cette erreur :

•	Visual Basic essaie d'accéder à un objet que vous avez spécifié comme composant ActiveX compatible, mais le fichier spécifié n'était pas un fichier exécutable ou une bibliothèque de liaisons dynamiques (DLL, Dynamic-Link Library) créé par Visual Basic.

Seuls les fichiers .exe et les DLL créés par Visual Basic constituent des entrées valides dans le champ Composant ActiveX compatible de la boîte de dialogue Propriétés du projet accessible par le biais du menu Projet. Dans la mesure du possible, chargez le projet dans Visual Basic et cliquez sur la commande Créer Projet.exe du menu Fichier pour créer un fichier exécutable Visual Basic. Si le fichier est déjà exécutable, mais n'a pas été créé par Visual Basic, ou bien s'il ne peut être chargé dans Visual Basic, consultez la documentation du fichier pour savoir s'il est possible de le convertir en fichier exécutable Visual Basic ou si le développeur peut vous fournir un fichier exécutable créé par Visual Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Un complément ne peut référencer un projet.
Un complément ne peut référencer un projet

Les projets sont dynamiques tandis que les compléments sont statiques. Cause et solution de cette erreur :

•	Vous avez essayé de créer un complément à partir d'un projet qui fait référence à un autre projet.

La modification de la sémantique des projets peut affecter la référence aux projets et aux compléments. Vous ne pouvez donc pas créer un complément à partir d'un projet qui fait référence à des projets.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Un module n'est pas un type valide.

Un module standard ne représente pas une classe et ne peut être instancié sous la forme d'une variable. Cause et solution de cette erreur :

•	Vous avez utilisé le nom d'un module standard dans une déclaration Dim ou Set.

Vérifiez l'orthographe du nom du module et assurez-vous qu'elle correspond à une feuille, une feuille MDI ou un module de classe.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Une procédure utilisant un argument ParamArray ne peut pas être appelée avec des arguments nommés.

Tous les arguments d'un appel à une procédure défini à l'aide d'un argument ParamArray doivent être positionnés. Cause et solution de cette erreur :

•	Une syntaxe constituée d'arguments nommés apparaît dans un appel de procédure.

La syntaxe appelant les arguments nommés ne permet pas d'appeler une procédure qui comporte un paramètre ParamArray. Pour fournir seulement certains éléments de l'argument ParamArray, utilisez des virgules comme espaces réservés pour les arguments que vous souhaitez omettre. Dans l'appel suivant par exemple, si les arguments ParamArray commencent après Arg2, seules la première, la troisième et la sixième valeur de l'argument ParamArray sont passées :

MySub Arg1, Arg2, 7,, 44,,,3

Note   L'argument ParamArray représente toujours les derniers éléments de la liste d'arguments.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Nom ambigu détecté

L'identificateur est en conflit avec un autre identificateur ou exige d'être qualifié. Causes et solutions de cette erreur :

•	Plusieurs objets de la même portée peuvent comporter des éléments qui portent le même nom.

Qualifiez le nom de l'élément en l'accompagnant du nom de l'objet et d'un point. Par exemple :

object.property

Les identificateurs de niveau module et les identificateurs de niveau projet (noms de module et noms de projet référencé) peuvent être réutilisés dans une procédure, bien que cela complique la gestion et le débogage des programmes. Toutefois, si vous souhaitez faire référence aux deux éléments dans la même procédure, vous devez qualifier l'élément qui possède la portée la plus large. Si, par exemple, MyID est déclaré au niveau module de MyModule et si une variable de niveau procédure est déclarée avec le même nom au sein de la procédure, les références à la variable de niveau module doivent être correctement qualifiées :

Dim MyID As String

Sub MySub

MyModule.MyID = "Voici un exemple de variable de niveau module"

Dim MyID As String

MyID = "Voici un exemple de variable de niveau procédure"

Debug.Print MyID

Debug.Print MyModule.MyID

End Sub

•	Un identificateur déclaré au niveau module est en conflit avec un nom de procédure. Cette erreur survient notamment si la variable MyID est déclarée au niveau module et qu'une procédure est ensuite définie avec le même nom :

Public MyID

Sub MyID

. . .

End Sub

Dans ce cas, vous devez modifier un des deux noms pour éliminer toute cause d'ambiguité. Par défaut, les noms de procédure sont Public, alors que les noms de variable sont Private, à moins qu'ils soient spécifiés comme étant Public.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Erreur AppleScript

Une erreur est survenue pendant le traitement de votre script. Causes et solutions de cette erreur :

•	Cette erreur peut être due à l'application cible.

Vérifiez que les identificateurs du script correspondent à ceux de l'application.

•	Cette erreur peut être due à AppleScript.

Assurez-vous que la syntaxe de votre script est une syntaxe AppleScript valide.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Erreur définie par l'application ou par l'objet

Ce message s'affiche lorsqu'une erreur générée par la méthode Raise ou l'instruction Error ne correspond pas à une erreur définie par Visual Basic pour Applications. Elle est également renvoyée par la fonction Error pour les arguments qui ne correspondent pas à des erreurs définies par Visual Basic pour Applications. Il peut donc s'agir d'une erreur que vous avez définie ou d'une erreur définie par un objet, y compris les applications hôtes, telles que Microsoft Excel, Visual Basic, etc. Les feuilles Visual Basic, par exemple, génèrent des erreurs liées aux feuilles qui ne peuvent pas être générées à partir du code en spécifiant simplement un nombre comme argument de la méthode Raise ou de l'instruction Error. Causes et solutions de ce message :

•	Votre application a exécuté une instruction Err.Raise n ou Error n, mais le nombre n n'est pas défini par Visual Basic pour Applications.

Si c'est votre intention, vous devez utiliser l'instruction Err.Raise et spécifier des arguments supplémentaires de sorte qu'un utilisateur final puisse comprendre la nature de l'erreur. Vous pouvez, par exemple, inclure une chaîne explicative, la source et des informations d'aide. Pour regénérer une erreur que vous avez récupérée, cette approche n'aboutira que si vous n'exécutez pas Err.Clear avant de regénérer l'erreur. Si vous exécutez d'abord l'instruction Err.Clear, vous devez compléter les arguments supplémentaires de la méthode Raise. Examinez le contexte dans lequel l'erreur s'est produite et assurez-vous que vous regénérez la même erreur.

•	Il se peut que lors de l'accès à des objets provenant d'autres applications, une erreur se soit propagée jusqu'à votre programme et qu'elle ne corresponde à aucune erreur Visual Basic.

Vérifiez la documentation des objets auxquels vous avez accédés. La propriété Source de l'objet Err doit contenir le nom de classe de l'application ou de l'objet qui a généré l'erreur. Pour comprendre le contexte d'une erreur renvoyée par un objet, vous pouvez insérer l'instruction On Error Resume Next dans le code d'accès aux objets plutôt que la syntaxe On Error GoTo ligne.

Note   Par le passé, les programmeurs ont souvent recouru à une boucle pour obtenir la liste des chaînes de message de toutes les erreurs récupérables. Ce code se présentait généralement de la manière suivante :

For index = 1 to 500

Debug.Print Error$(index)

Next index

Un tel code fournit toujours la liste de tous les messages d'erreur Visual Basic pour Applications, mais affiche "Erreur définie par l'application ou par l'objet" pour les erreurs définies par l'hôte, notamment les erreurs qui dans Visual Basic ont trait aux feuilles, aux contrôles, etc. Il s'agit souvent d'erreurs d'exécution récupérables. Pour rechercher la liste des erreurs récupérables propres à votre application hôte, utilisez la boîte de dialogue Rechercher de l'aide. Cliquez sur Rechercher, tapez Récupérable dans la première zone de texte. Cliquez sur Erreurs récupérables dans la zone de liste inférieure, puis sur Afficher.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Argument requis pour la propriété Let ou la propriété Set

Les procédures Property Let et Property Set ont pour but de donner une nouvelle valeur à une propriété. Causes et solutions de cette erreur :

•	Lors de la définition de la propriété, la valeur n'apparaît pas au bon endroit.

Placez la valeur que vous souhaitez affecter à la propriété dans la partie droite de l'expression qui définit la valeur de la propriété.

•	Dans la définition de la procédure, le paramètre défini pour recevoir la valeur passée dans la partie droite de l'expression est manquant ou mal placé.

Spécifiez un paramètre pour la liste d'arguments de valeur dans la définition de la procédure. Si la procédure accepte plusieurs arguments, le paramètre correspondant à la valeur de la propriété doit apparaître en dernière position dans la liste.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Tableau déjà dimensionné

Un tableau statique ne peut être dimensionné qu'une seule fois. Causes et solutions de cette erreur :

•	Vous avez essayé de modifier les dimensions d'un tableau statique à l'aide d'une instruction ReDim, alors que seuls les tableaux dynamiques peuvent être redimensionnés.

Vous devez supprimer le redimensionnement ou opter pour un tableau dynamique. Pour définir un tableau dynamique, utilisez une instruction Dim, Public, Private ou Static avec des parenthèses vides. Par exemple :

Dim MyArray()

Dans une procédure, vous pouvez définir un tableau dynamique à l'aide de l'instruction ReDim ou Static en utilisant une variable pour le nombre d'éléments :

ReDim MyArray(n)

•	Une instruction Option Base survient une fois que les dimensions du tableau ont été définies.

Assurez-vous que toute instruction Option Base éventuelle précède toutes les déclarations de tableaux.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


L'argument du tableau doit être ByRef.
L'argument du tableau doit être ByRef

Les tableaux déclarés à l'aide de l'instruction Dim, ReDim ou Static ne peuvent pas être passés avec l'option ByVal. Cause et solution de cette erreur :

•	Vous avez essayé de passer la totalité d'un tableau ByVal.

Un élément d'un tableau peut être passé avec l'option ByVal (par valeur), mais l'ensemble du tableau doit être passé avec l'option ByRef (par référence). Notez que ByRef constitue le mode de passage d'un tableau par défaut. Si vous devez passer un tableau ByVal pour empêcher que les modifications de ses éléments soient propagées jusqu'à l'appelant, vous pouvez passer l'argument tableau dans son propre jeu de parenthèses, à moins que vous ne préfériez le placer dans un Variant et passer ensuite ce Variant au paramètre ByVal, de la manière suivante :

Dim MyVar As Variant

MyVar = OldArray()

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Le début de la zone de recherche a été atteint; voulez-vous continuer la recherche depuis la fin?

Votre recherche n'a pas abouti. Cause et solution de cet échec :

•	La recherche vers l'amont a atteint le début de la zone spécifiée.

Vous pouvez poursuivre la recherche à partir de la fin de la zone de recherche, ou encore annuler et modifier la zone de recherche.


Bloc If sans End If

Une erreur a été provoquée par une instruction incomplète. Cause et solution de cette erreur :

•	Une instruction If est utilisée sans l'instruction End If correspondante.

Une instruction If multiligne doit se terminer par une instruction End If correspondante. Dans le cas des instructions If...End If imbriquées, assurez-vous qu'il existe une structure If...End If complète au sein de chaque structure If...End If qui l'entoure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Point d'arrêt non autorisé dans cette ligne

Les points d'arrêt ne peuvent être placés que dans certaines parties des instructions. Causes de cette erreur :

•	Vous avez essayé de placer un point d'arrêt dans une ligne qui n'accepte pas de point d'arrêt, par exemple :

•	Une ligne qui contient seulement des commentaires.

•	Une ligne qui contient seulement des étiquettes de ligne.

•	Une ligne qui contient seulement des déclarations (Const, Dim, Static, Type, etc.).

•	Une ligne d'un module caché.

•	Une ligne de la fenêtre Exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Type d'argument ByRef incompatible

Un argument passé avec l'option ByRef (par référence), à savoir le mode de passage par défaut, doit posséder le type de données qui correspond exactement à celui attendu dans la procédure. Cause et solution de cette erreur :

•	Vous avez passé un argument d'un type dont le type attendu n'a pas pu être forcé.

Cette erreur survient, par exemple, si vous essayez de passer une variable Integer alors qu'une variable Long est attendue. Pour la forcer à prendre ce type, même si cela entraîne la perte d'informations, vous pouvez passer l'argument dans son propre jeu de parenthèses. Par exemple, pour passer l'argument Variant MyVar à une procédure qui attend un argument Integer, vous pouvez écrire l'appel de la manière suivante :

Dim MyVar

MyVar = 3.1415

Call SomeSub((MyVar))

Sub SomeSub (MyNum As Integer)

MyNum = MyNum + MyNum

End Sub

Placer l'argument dans son propre jeu de parenthèses a pour effet de forcer son évaluation en tant qu'expression. Au cours de cette évaluation, la partie fractionnaire du nombre est arrondie (non tronquée) pour la rendre conforme au type d'argument attendu. Le résultat de l'évaluation est stocké dans un emplacement temporaire et la procédure reçoit une référence à cet emplacement. Ainsi la variable MyVar d'origine conserve sa valeur.

Note   Si vous ne spécifiez aucun type pour une variable, celle-ci reçoit le type par défaut, à savoir Variant. Ce n'est pas toujours évident. Par exemple, le code suivant déclare deux variables, la première, MyVar, est de type Variant tandis que la seconde, AnotherVar, est de type Integer.

Dim MyVar, AnotherVar As Integer

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Convention d'appel non gérée par Visual Basic

Visual Basic ne gère pas toutes les conventions d'appel des procédures qui spécifient l'ordre dans lequel les arguments doivent être passés, ainsi que la manière dont les types d'argument doivent être spécifiés. Cause et solution de cette erreur :

•	La procédure a été appelée en utilisant une convention d'appel qui n'est pas gérée par Visual Basic. Par exemple, Visual Basic ne gère pas la convention d'appel Pascal dans une version 16 bits de l'environnement Microsoft Windows.

Si la convention d'appel n'est pas gérée par Visual Basic, il n'est pas possible d'appeler la procédure à partir de Visual Basic. Consultez la documentation de l'objet pour vérifier si une autre solution est proposée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'ajouter une référence au fichier spécifié

Il n'est pas possible d'accéder à toutes les bibliothèques d'objets ou bibliothèques de types à partir de Visual Basic. Cause et solution de cette erreur :

•	Vous avez essayé d'utiliser la boîte de dialogue Références pour ajouter une référence à une bibliothèque de types ou une bibliothèque d'objets qui ne peut pas être utilisée par Visual Basic.

Consultez la documentation de l'objet représenté par la bibliothèque pour vérifier s'il est disponible sous une autre forme exploitable par Visual Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'affecter ou de forcer un tableau de chaînes de longueur fixe ou de type défini par l'utilisateur à un Variant

Un Variant ne peut accepter que l'affectation de données possédant un VarType valide. Causes et solutions de cette erreur :

•	Vous avez essayé de passer un tableau de chaînes de longueur fixe. Lorsqu'une seule chaîne de longueur fixe est affectée à un Variant, elle est transformée en une chaîne de longueur variable, ce qui n'est pas possible pour un tableau de chaînes de longueur fixe.

Si vous devez passer le tableau, utilisez une boucle pour affecter les différents éléments du tableau aux éléments d'un tableau temporaire de chaînes de longueur variable. Vous pouvez ensuite affecter le tableau à un variant et utiliser Erase pour libérer le tableau temporaire. Toutefois, vous ne pouvez pas libérer un tableau de taille fixe à l'aide de Erase.

•	Vous avez essayé de passer une chaîne de longueur fixe ou de type défini par l'utilisateur à la fonction VarType ou TypeName.

Un argument de la fonction VarType ou TypeName doit être un type Variant valide.

•	Vous avez essayé d'affecter un type défini par l'utilisateur à une variable Variant.

Bien que vous ne puissiez pas affecter directement la totalité d'une variable de type défini par l'utilisateur à un Variant, vous pouvez utiliser la fonction Array pour affecter les différents éléments d'une variable de type défini par l'utilisateur à un Variant. Vous obtenez ainsi un Variant contenant un tableau de variants. Le VarType de chaque élément de ce tableau correspond au type d'origine de chaque élément du type défini par l'utilisateur.

•	Vous avez essayé de passer un tableau de chaînes de longueur fixe ou de types définis par l'utilisateur comme argument dans un appel de procédure qui nécessite un argument Variant. Notez que chaque fois qu'une procédure est une liaison tardive, autrement dit chaque fois que l'appel doit être créé au moment de l'exécution, tous les arguments doivent être passés comme types Variant. Par exemple, le code suivant engendre cette erreur :

Dim MyForm As Object	' Comme MyForm est Object,

' la liaison est tardive.

Set MyForm = New Form1

Dim StringArray(10) As String * 12

' La ligne suivante génère l'erreur.

MyForm.MyProc StringArray

Dans le cas du tableau de chaînes, utilisez une boucle pour affecter chaque membre du tableau à un tableau temporaire de chaînes de longueur variable. Vous pouvez ensuite affecter ce tableau à un Variant à passer à la procédure. Dans le cas d'un tableau de types définis par l'utilisateur, vous pouvez utiliser la fonction Array pour affecter les divers éléments d'une variable de type défini par l'utilisateur à un Variant. Vous obtenez ainsi un Variant contenant un tableau de variants. Le VarType de chaque élément de ce tableau correspond au type d'origine de chaque élément du type défini par l'utilisateur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Affectation à un tableau impossible

La valeur de chaque élément d'un tableau doit être affectée individuellement. Causes et solutions de cette erreur :

•	Vous avez essayé par inadvertance d'affecter une valeur à une variable de tableau sans spécifier l'élément auquel la valeur devait être affectée.

Pour affecter une valeur à un élément de tableau, vous devez spécifier l'élément dans un indice. Par exemple, si MyArray est un tableau d'entiers, l'expression MyArray = 5 est incorrecte, alors que l'expression qui suit est valide :

MyArray(UBound(MyArray)) = 5

•	Vous avez essayé d'affecter la totalité d'un tableau à un autre tableau. Si, par exemple, Arr1 et Arr2 sont deux tableaux différents, les deux affectations suivantes sont toutes deux incorrectes :

Arr1 = Arr2	' Affectation incorrecte.

Arr1() = Arr2()	' Affectation incorrecte.

Pour affecter un tableau à un autre, assurez-vous que le tableau à gauche de l'affectation est redimensionnable et que les types de tableaux sont compatibles.

Note   Vous pouvez placer la totalité d'un tableau dans un Variant et obtenir ainsi une variable de type variant contenant l'ensemble du tableau :

Dim MyArr As Variant

MyVar = Arr2()

Vous pouvez ensuite référencer les éléments du tableau dans la variable de type variant avec une notation d'indice identique à celle d'un tableau ordinaire, par exemple :

MyVar(3) = MyVar(1) + MyVar(5)

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible de changer le type de données des éléments du tableau

ReDim ne peut être utilisé que pour modifier le nombre d'éléments dans un tableau. Cause et solution de cette erreur :

•	Vous avez essayé de déclarer de nouveau le type de données d'un tableau à l'aide de ReDim.

Déclarez un nouveau tableau du type souhaité, puis utilisez les fonctions de conversion pour affecter chaque élément de l'ancien tableau à l'élément correspondant du nouveau tableau.

Vous pouvez aussi placer le tableau dans une variable Variant. Une seule affectation suffit pour cela :

Dim MyVar As Variant

MyVar = MyIntegerArray()

Vous créez ainsi un Variant contenant un tableau défini comme possédant le type du tableau d'origine. Vous pouvez ensuite affecter des variables de n'importe quel VarType valide aux éléments du tableau, au sein d'un variant.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible de définir un type KWID_tkPUBLIC défini par l'utilisateur à l'intérieur d'un module objet privé

Un type défini par l'utilisateur qui apparaît au sein d'un module objet ne peut pas être Public. Cause et solution de cette erreur :

•	Vous avez essayé de définir un type Public défini par l'utilisateur au sein d'un module objet.

Déplacez la définition de type défini par l'utilisateur vers un module standard, puis déclarez les variables du type dans le module objet ou dans d'autres modules, selon le cas. Si vous souhaitez seulement que le type soit disponible dans le module au sein duquel il apparaît, vous pouvez placer sa définition Type...End Type dans le module objet et la faire précéder du mot clé Private.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'afficher une procédure cachée

Tout ce qui est contenu dans un module caché demeure caché. Cause et solution de cette erreur :

•	Vous avez essayé d'afficher une procédure contenue dans un module caché.

Affichez le module pour révéler la procédure. Pour afficher une ligne qui a engendré une erreur dans une procédure cachée, exécutez le code après avoir affiché le module de façon à révéler l'erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible de modifier le module

Les modules marqués comme protégés peuvent être affichés, mais pas modifiés. Cause et solution de cette erreur :

•	Vous avez essayé de modifier un module protégé.

Levez la protection du module, puis essayez de nouveau de le modifier.Dans la plupart des cas, cette erreur se produit lorsque le complément logiciel Visual SourceSafe est installé et que le fichier n'est pas extrait.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'entrer en mode Arrêt maintenant

Le mode Arrêt est l'état dans lequel l'exécution d'un programme se poursuit alors que son activité est momentanément arrêtée. Cause et solution de cette erreur :

•	Vous avez essayé d'entrer en mode Arrêt, par exemple, en appuyant sur CTRL+ATTN (sous Windows) ou COMMANDE+POINT (sur Macintosh), en cliquant sur le bouton Arrêt de la barre d'outils Standard ou de la barre d'outils Débogage, ou encore en exécutant un point d'arrêt dans le code en cours d'exécution.

Une modification a été programmée dans le projet à l'aide du modèle objet extensibility (complément). Cela empêche l'arrêt momentané de l'exécution du programme. Vous pouvez poursuivre l'exécution ou y mettre fin, mais pas l'arrêter momentanément.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'exécuter des instructions immédiates en mode création

Le moment de la création est un moment où le code n'est pas exécuté, ou un moment où l'exécution est arrêtée temporairement avant de se poursuivre. Cause et solution de cette erreur :

•	Vous avez essayé d'exécuter une instruction dans la fenêtre Exécution, mais votre code n'est pas en mode d'exécution.

Lancez l'exécution du code, puis arrêtez-la momentanément. Vous pouvez alors exécuter le code dans la fenêtre Exécution.

Pour plus d'informations, placez le curseur dans la fenêtre Exécution et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Projet ou bibliothèque introuvable

Vous ne pouvez exécuter votre code tant que toutes les références manquantes n'ont pas été résolues. Causes et solutions de cette erreur :

•	Un projet référencé est introuvable ou une bibliothèque d'objets référencée correspondant à la langue du projet n'a pu être localisée.

Les références insolubles sont précédées de MANQUANT dans la boîte de dialogue Références. Sélectionnez la référence manquante de façon à afficher le chemin et la langue de la bibliothèque ou du projet manquant. Pour résoudre la ou les références, procédez de la manière suivante :

Pour résoudre les références

1.	Affichez la boîte de dialogue Références.

2.	Sélectionnez la référence manquante.

3.	Démarrez l'Explorateur d'objets.

4.	Recherchez la référence manquante à l'aide de la boîte de dialogue Parcourir.

5.	Cliquez sur OK.

6.	Répétez les étapes ci-dessus jusqu'à ce que toutes les références manquantes soient résolues.

Lorsque vous trouvez un élément manquant, le préfixe MANQUANT disparaît pour indiquer que la liaison a été rétablie. Si le nom de fichier d'un projet référencé a été modifié, une nouvelle référence est ajoutée et l'ancienne doit être supprimée.

Pour supprimer une référence devenue inutile, désactivez simplement la case à cocher en regard de la référence obsolète. Notez que les références à la bibliothèque d'objets Visual Basic et à la bibliothèque d'objets de l'application hôte ne peuvent pas être supprimées.

Les applications peuvent prendre en charge des versions de leurs bibliothèques d'objets dans plusieurs langues. Pour connaître la langue de la version requise, cliquez sur la référence, puis vérifiez la langue indiquée au bas de la boîte de dialogue.

Les bibliothèques d'objets peuvent être des fichiers autonomes portant l'extension .OLB, à moins qu'ils ne soient intégrés dans une bibliothèque de liaisons dynamiques (DLL). Il peut en exister différentes versions pour chaque plate-forme. C'est pourquoi lorsque des projets migrent vers une autre plate-forme, notamment de Macintosh vers Microsoft Windows, la version correspondant à la langue de la bibliothèque référencée pour cette plate-forme doit être disponible à l'emplacement spécifié dans la documentation de votre application hôte.

Les noms des fichiers des bibliothèques d'objets sont généralement structurés de la manière suivante :

•	Windows (version 3.1 ou antérieure) : Code de l'application + Code de la langue + [Version].OLB. Par exemple :

La bibliothèque d'objets de la version française de Visual Basic pour Applications, Version 2 était vafr2.olb.

La bibliothèque d'objets de la version française de Microsoft Excel 5.0 était xlfr50.olb.

•	Sur Macintosh : Nom de l'application + Code de la langue [Version] OLB. Par exemple :

La bibliothèque d'objets de la version française de Visual Basic pour Applications, Version 2 était VA FR 2 OLB.

La bibliothèque d'objets de la version française de Microsoft Excel 5.0 était
MS Excel FR 50 OLB.

Si un projet ou une bibliothèque est introuvable sur votre système, contactez l'auteur du projet référant. Si la bibliothèque introuvable est une bibliothèque d'objets d'une application Microsoft, vous pouvez l'obtenir de la manière suivante :

•	Si vous pouvez accéder aux services de Support technique électronique Microsoft, reportez-vous à la section de ce fichier d'aide consacrée au Support technique. Sous les services électroniques, vous trouverez les instructions relatives à l'utilisation de l'option de service appropriée.

•	Si vous ne pouvez pas accéder aux services de Support technique électronique Microsoft, les bibliothèques d'objets Microsoft sont disponibles sur demande auprès de Microsoft, sous la forme d'une note d'application. Pour plus d'informations sur la manière de contacter le Support technique Microsoft de votre pays, reportez-vous également à la section de ce fichier d'aide consacrée au Support technique.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'utiliser l'instruction Get ou Put avec une variable de référence d'objet ou une variable de type définie par l'utilisateur contenant une référence d'objet

Une référence d'objet est temporaire et peut facilement devenir incorrecte entre le moment de la fermeture et de l'ouverture d'un fichier. Cause et solution de cette erreur :

•	La variable présente dans votre instruction Get ou Put contient une référence à un objet ou est déclarée comme telle.

Si la variable est une référence d'objet, vous ne pouvez pas l'utiliser avec les instructions Get et Put. Pour placer la valeur d'une partie ou de la totalité des propriétés de l'objet dans le fichier, chaque propriété doit être spécifiée individuellement.

•	La variable de type défini par l'utilisateur de votre instruction Get ou Put contient un élément qui est une référence d'objet.

Si l'instruction Type de la variable contient un élément qui représente un objet (par exemple, si elle est définie dans un module de classe, possède un type de données Object, est une feuille ou un contrôle, etc.), supprimez-la de la définition ou définissez un nouveau type destiné à être utilisé avec les instructions Get et Put, en veillant à ce que la définition ne contienne pas d'élément de type Object.

Si des éléments de type Variant figurent dans le type défini par l'utilisateur, assurez-vous qu'aucune référence d'objet n'est affectée à cet élément. Un Variant peut accepter une telle affectation, mais il entraînera cette erreur si son type défini par l'utilisateur est utilisé dans une instruction Get ou Put.

Notez que vous pouvez également utiliser Input #, Line Input #, Print # ou Write # pour écrire sur le disque la propriété par défaut d'un objet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible de charger le module; format incorrect.
Impossible de charger le module; format incorrect

Un module doit être au format texte. Cause et solution de cette erreur :

•	Vous avez essayé de charger comme module un fichier au format binaire.

Certaines versions de Visual Basic vous permettent d'enregistrer votre code au format binaire et au format texte. Si possible, chargez de nouveau le fichier dans l'application dans laquelle il a été enregistré pour la dernière fois, puis enregistrez-le au format texte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'affecter une valeur à une propriété en lecture seule

Certaines propriétés ne peuvent pas accepter d'affectation. Cause et solution de cette erreur :

•	Vous avez essayé d'affecter une valeur à une propriété qui ne peut accepter aucune affectation.

Dans certains cas, une propriété ne peut accepter d'affectation qu'à des moments bien précis. Une propriété peut, par exemple, accepter des affectations au moment de la création, mais pas au moment de l'exécution. Pour savoir si une propriété déterminée peut accepter des affectations, reportez-vous à la rubrique d'aide qui la concerne.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible d'exécuter l'opération demandée tant que le module est caché.
Impossible d'exécuter l'opération demandée tant que le module est caché

Cette erreur appartient au modèle objet extensibility (complément) Visual Basic. Cause et solution de cette erreur :

•	Le module est caché. Vous ne pouvez pas modifier un module caché ou obtenir des informations à partir de celui-ci.

Affichez le module et essayez de nouveau.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Impossible de créer un point d'arrêt conditionnel sur un tableau.
Impossible de créer un point d'arrêt conditionnel sur un tableau

Aucune valeur n'est associée à un tableau. Cause et solution de cette erreur :

•	Vous avez essayé de définir un point d'arrêt conditionnel (parfois appelé point espion) destiné à arrêter momentanément l'exécution du programme en cas de modification de la valeur de l'ensemble d'un tableau.

Définissez le point d'arrêt conditionnel au niveau d'un élément déterminé du tableau.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Enregistrement impossible dans un module en cours d'exécution

Vous devez mettre fin à l'exécution avant d'enregistrer. Cause et solution de cette erreur :

•	Vous avez essayé d'enregistrer une macro pendant l'exécution du code du module.

Arrêtez l'exécution ou appuyez sur CTRL+ATTN (sous Windows) ou COMMAND+POINT (sur Macintosh) et activez la fonction d'enregistrement .

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de supprimer la référence par défaut

Une référence par défaut existe toujours. Cause et solution de cette erreur :

•	Vous avez essayé de supprimer une référence qui doit toujours être disponible, par exemple, une référence à une bibliothèque de types ou à une bibliothèque d'objets.

Vous ne devez pas supprimer la référence.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Case Else en dehors d'un bloc Select Case

Une instruction Case Else ne peut figurer qu'entre les instructions Select Case et End Select correspondantes. Cause et solution de cette erreur :

•	Vous avez placé une instruction Case Else à l'extérieur du bloc Select Case...End Select.

Déplacez l'instruction Case Else au sein d'un bloc Select Case...End Select.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Case sans Select Case

Une instruction Case doit figurer au sein d'un bloc Select Case...End Select. Cause et solution de cette erreur :

•	Une instruction Case ne correspond à aucune instruction Select Case antérieure.

Vérifiez les structures de contrôle au sein de la structure Select Case...Case et assurez-vous que les correspondances sont correctes. Par exemple, cette erreur est engendrée par un If dépourvu de End If correspondant au sein de la structure Select Case...End Select.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Dépendances circulaires entre modules

Les références circulaires ne sont pas autorisées entre les modules, les constantes et les types définis par l'utilisateur. Cause et solution de cette erreur :

•	Un type défini par l'utilisateur ou une constante au sein d'un module fait référence à un type défini par l'utilisateur ou à une constante au sein d'un deuxième module qui, à son tour, fait référence à un autre type défini par l'utilisateur ou à une autre constante dans le premier module.

Supprimez les références dépendantes.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Un module objet doit implémenter toutes les procédures de l'interface.

Une interface est une collection de prototypes de procédures non mises en œuvre. Cause et solution de cette erreur :

•	Vous avez spécifié une interface dans une instruction Implements, mais vous avez omis d'ajouter dans l'interface le code de toutes les procédures.

Vous devez écrire le code de chaque procédure spécifiée dans l'interface. Une procédure vide est acceptable. La procédure doit mettre en œuvre le comportement requis.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Exécution interrompue

L'exécution du code peut être interrompue si nécessaire. Cause et solution de cette condition :

•	Une combinaison de touches CTRL+ATTN (Microsoft Windows), ÉCHAP (Microsoft Excel) ou COMMANDE+POINT (Macintosh) a été rencontrée.

Dans la boîte de dialogue, cliquez sur Déboguer pour passer en mode Arrêt, Continuer pour poursuivre ou Fin pour arrêter l'exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Erreur de compilation dans le module caché: <nom du module>

Un module protégé ne peut pas être affiché. Cause et solution de cette erreur :

•	Une erreur de compilation est apparue dans le code du module spécifié, mais celui-ci ne peut pas être affiché, car le projet est protégé.

Levez la protection du projet, puis exécutez de nouveau le code pour afficher l'erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Constante requise

Une constante doit être initialisée. Causes et solutions de cette erreur :

•	Vous avez essayé d'initialiser une constante à l'aide d'une variable, d'une occurrence d'un type défini par l'utilisateur, d'un objet ou de la valeur renvoyée par un appel de fonction.

Initialisez les constantes avec des littéraux, des constantes préalablement déclarées, ou des littéraux et des constantes liées par des opérateurs (à l'exception de l'opérateur logique Is).

•	Vous avez essayé de déclarer un tableau en spécifiant le nombre d'éléments qu'il contient à l'aide d'une variable.

Pour déclarer un tableau dynamique au sein d'une procédure, utilisez ReDim et spécifiez le nombre d'éléments à l'aide d'une variable.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Constantes, chaînes de longueur fixe, tableaux, types définis par l'utilisateur et instructions Declare non autorisés en tant que membres Public d'un module objet.
Constantes, chaînes de longueur fixe, tableaux, types définis par l'utilisateur et instructions Declare non autorisés en tant que membres Public d'un module objet

Toutes les variables d'un module objet ne peuvent pas nécessairement être déclarées Public. Toutefois, les procédures sont Public par défaut et les procédures Property peuvent être utilisées pour simuler des variables dans la syntaxe. Causes et solutions de cette erreur :

•	Vous avez déclaré une constante Public dans un module objet.

Bien que vous ne puissiez pas déclarer une constante Public dans un module objet, vous pouvez créer une procédure Property Get portant le même nom. Si vous ne créez pas de procédure Property Let ou Property Set de même nom, vous créez en réalité une procédure en lecture seule susceptible d'être utilisée exactement comme une constante.

•	Vous avez déclaré une chaîne de longueur fixe Public dans un module objet.

Vous pouvez simuler les chaînes de longueur fixe à l'aide d'un jeu de procédures Property qui peuvent soit tronquer les données de la chaîne lorsqu'elle dépasse la longueur autorisée, soit avertir l'utilisateur que la longueur est dépassée.

•	Vous avez déclaré un tableau Public dans un module objet.

Bien qu'une procédure ne puisse pas renvoyer un tableau, elle peut renvoyer un Variant contenant un tableau. Pour simuler un tableau Public dans un module de classe, utilisez un jeu de procédures Property qui accepte et renvoie un Variant contenant un tableau.

•	Vous avez placé une instruction Declare dans un module objet.

Les instructions Declare sont implicitement publiques. Faites précéder l'instruction Declare du mot clé Private.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Le module en cours ne gère pas la méthode Print

Les méthodes et les propriétés ne conviennent pas toutes à l'ensemble des modules. Causes et solutions de cette erreur :

•	Vous avez essayé d'utiliser la méthode Print avec un objet qui ne peut rien afficher. Par exemple, vous ne pouvez pas utiliser la méthode Print sans qualification dans un module standard.

Supprimez la référence à la méthode Print ou qualifiez-la avec un objet adéquat. Par exemple, qualifiez-la avec l'objet Debug de façon à afficher ses arguments dans la fenêtre Exécution au cours du débogage.

•	Vous avez essayé d'utiliser la méthode Line, Circle, Pset ou Scale avec un objet qui ne la prend pas en charge. Par exemple, ces méthodes ne peuvent pas apparaître non qualifiées dans un module standard ou un module de classe Automation.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Référence circulaire des projets non autorisée

Les références circulaires des projets ne sont pas autorisées. Par exemple, si MyProj fait référence à YourProj, YourProj (ou un projet qui fait référence à YourProj) ne peut pas faire référence à MyProj. Cause et solution de cette erreur :

•	Vous avez essayé d'ajouter une référence à un projet qui appartient déjà au projet.

Supprimez la ou les références circulaires.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Les définitions des procédures de propriété pour la même propriété ne sont pas cohérentes ou bien contiennent des paramètres optionnels ou un paramètre ParamArray.

Les paramètres des procédures Property Get, Property Let et Property Set d'une même propriété doivent correspondre exactement, si ce n'est toutefois que la procédure Property Let possède un paramètre supplémentaire (dont le type doit correspondre au type renvoyé de la procédure Property Get correspondante) et que la procédure Property Set possède un paramètre de plus que la procédure Property Get correspondante qui a pour type Variant, Object, un nom de classe, ou un type de bibliothèque d'objets spécifié dans une bibliothèque d'objets. Causes et solutions de cette erreur :

•	Le nombre de paramètres de la procédure Property Get n'est pas inférieur d'une unité au nombre de paramètres de la procédure Property Let ou Property Set correspondante.

Ajoutez un paramètre à la procédure Property Let ou Property Set, ou supprimez un paramètre de la procédure Property Get, selon ce qui vous semble le plus approprié.

•	Les types de paramètre de la procédure Property Get doivent correspondre exactement aux paramètres correspondants de la procédure Property Let ou Property Set, à l'exception toutefois du paramètre supplémentaire de la procédure Property Set.

Modifiez les déclarations des paramètres dans les définitions des procédures correspondantes afin que la concordance soit parfaite.

•	Le type du paramètre supplémentaire de la procédure Property Let doit correspondre au type renvoyé de la procédure Property Get correspondante.

Modifiez la déclaration du paramètre supplémentaire dans la procédure Property Let ou le type renvoyé de la procédure Property Get afin que la correspondance entre eux soit parfaite.

•	Le type du paramètre supplémentaire de la procédure Property Set peut être différent du type renvoyé de la procédure Property Get correspondante, mais il doit s'agir d'un Variant, Object, nom de classe ou type de bibliothèque d'objets valide.

Assurez-vous que le paramètre supplémentaire de la procédure Property Set est un Variant, Object, nom de classe ou type de bibliothèque d'objets.

•	Vous avez défini une procédure Property avec un paramètre Optional ou ParamArray.

Les paramètres ParamArray et Optional ne sont pas autorisés dans les procédures Property. Redéfinissez donc les procédures sans ces mots clés.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Les instructions Deftype doivent précéder les déclarations.
Les instructions Deftype doivent précéder les déclarations

Les instructions Deftype comprennent notamment DefInt, DefDbl, DefCur, etc. Causes et solutions de cette erreur :

•	Une déclaration de variable doit précéder une instruction Deftype au niveau module.

Déplacez l'instruction Deftype de façon à ce qu'elle précède toutes les déclarations de variables.

•	Une instruction Deftype apparaît dans une procédure.

Déplacez l'instruction Deftype jusqu'au niveau module de façon à ce qu'elle précède toutes les déclarations de variable.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Étiquette de destination trop éloignée; boucle, Select Case, ou bloc If trop grands.
Étiquette de destination trop éloignée; boucle, Select Case, ou bloc If trop grands

La taille des procédures peut atteindre 64 Ko, du début à la fin. Toutefois, comme le branchement peut survenir en amont ou en aval au sein d'une procédure, il est limité à 32 767 octets dans chaque sens. Causes et solutions de cette erreur :

•	L'étiquette de destination d'une instruction de branchement (GoTo, GoSub) se situe à plus de 32 767 octets de l'instruction de branchement source.

Rapprochez l'étiquette ou réduisez la taille de la procédure.

•	Vous êtes en présence d'une structure de boucle de très grande taille qui occupe plus de 32 Ko de mémoire, du début à la fin.

Réduisez la taille de la boucle.

•	Vous êtes en présence d'une très grande structure de bloc If qui contient une clause Then ou Else occupant plus de 32 Ko de mémoire, du début à la fin.

Réduisez la taille de la partie incriminée de la structure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Do sans Loop

À chaque instruction Do doit correspondre une instruction Loop de fin. Cause et solution de cette erreur :

•	Une instruction Do a été utilisée sans instruction Loop de fin.

Assurez-vous de la correspondance des autres structures de contrôle au sein de la structure Do...Loop. Cette erreur peut être générée, par exemple, par un bloc If dépourvu de End If correspondant au sein de la structure Do...Loop.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Déclaration existante dans la portée en cours

Le nom spécifié est déjà utilisé à ce niveau de portée. Par exemple, deux variables peuvent porter le même nom si elles sont définies dans des procédures différentes, mais pas si elles sont définies au sein de la même procédure. Causes et solutions de cette erreur :

•	Une nouvelle variable ou une nouvelle procédure possède le même nom qu'une variable ou une procédure existante. Par exemple :

Sub MySub()

Dim A As Integer

Dim A As Variant

. . .	' Présence ici d'autres déclarations ou

' du code d'autres procédures.

End Sub

Vérifiez la procédure, le module ou le projet en cours et supprimez les déclarations en double.

•	Une instruction Const utilise le même nom qu'une variable ou une procédure existante.

Supprimez ou renommez la constante en question.

•	Vous avez déclaré plusieurs fois un tableau fixe.

Supprimez ou renommez un des tableaux.

Recherchez le nom en double. Lorsque vous spécifiez le nom à rechercher, enlevez tout caractère de déclaration de type, car des noms identiques engendrent un conflit si les caractères de déclaration de type sont différents.

Notez qu'une variable de niveau module peut porter le même nom qu'une variable déclarée dans une procédure. Toutefois, lorsque vous souhaitez faire référence à la variable de niveau module au sein de la procédure, vous devez la qualifier avec le nom du module. Les noms des modules et les noms des projets référencés peuvent être réutilisés comme noms de variables au sein des procédures et peuvent également être qualifiés.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Cette définition existe déjà.
Cette définition existe déjà

Une constante de compilation conditionnelle que vous définissez ne peut posséder qu'une seule valeur. Cause et solution de cette erreur :

•	Vous avez spécifié deux valeurs différentes pour la même constante de compilation conditionnelle, par exemple :

#Const Mac = 0

#Const Mac = 1

Supprimez une des définitions.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


L'instruction Deftype existe déjà.
L'instruction Deftype existe déjà

Les instructions Deftype doivent spécifier des plages de lettres uniques au sein de la même portée. Cause et solution de cette erreur :

•	Une partie ou la totalité de la plage de lettres de cette instruction Deftype est déjà incluse dans une autre instruction Deftype.

Modifiez l'instruction de sorte que les plages de lettres ne se chevauchent pas.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Instruction Option dupliquée

Chaque module ne peut contenir qu'une seule instruction Option de chaque type. Cause et solution de cette erreur :

•	Vous avez défini plusieurs instructions Option Base, Option Compare, Option Explicit ou Option Private dans ce module.

Supprimez l'instruction en double dans le module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


La modification ne peut pas être annulée; continuer néanmoins?

Vous ne pouvez pas cliquer sur la commande Annuler pour restaurer l'état en cours une fois que vous avez terminé cette modification. Cause et solution de cette erreur :

•	Cette erreur survient généralement lorsque la taille de la modification est trop importante pour permettre son enregistrement.

Essayez d'apporter des modifications plus restreintes.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Else sans If

Une instruction Else doit être précédée d'une instruction If. Cause et solution de cette erreur :

•	Une instruction Else a été utilisée sans l'instruction If correspondante.

Assurez-vous de la correspondance des autres structures de contrôle au sein de la structure If...End If. Assurez-vous également que le format du bloc If est correct.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


La création d'un type Enum vide n'est pas autorisée

Un type Enum spécifie le nom et les membres d'une énumération. Cause et solution de cette erreur :

•	Vous avez nommé une énumération dans un bloc Enum…End Enum, mais vous avez omis de spécifier ses membres.

Ajoutez au moins un membre au bloc Enum…End Enum.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Expression espionne vide

La boîte de dialogue Ajouter un espion nécessite la saisie d'une expression. Cause et solution de cette erreur :

•	Vous n'avez pas tapé d'expression espionne dans la boîte de dialogue Ajouter un espion.

Ajoutez une expression à la boîte de dialogue Ajouter un espion ou appuyez sur la touche ÉCHAP.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


End If sans bloc If

Une instruction End If doit être accompagnée d'une instruction If correspondante. Cause et solution de cette erreur :

•	La clause If a été omise ou est séparée de l'instruction End If.

Assurez-vous de la correspondance des autres structures de contrôle au sein de la structure If...End If. Assurez-vous également que le format du bloc If est correct.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


La fin de la zone de recherche a été atteinte; voulez-vous continuer la recherche depuis le début?

Votre recherche n'a pas abouti. Cause et solution de cette erreur :

•	La recherche vers l'aval a atteint la fin de la zone spécifiée.

Vous pouvez poursuivre la recherche à partir du début de la zone de recherche, ou annuler la rechercher et modifier la zone de recherche.


End Select sans Select Case

À l'instruction End Select doit correspondre une instruction Select Case qui la précède. Cause et solution de cette erreur :

•	Vous avez utilisé une instruction End Select sans instruction Select Case correspondante.

Cette erreur s'explique généralement par la présence d'une instruction End Select supplémentaire sous un bloc Select Case ou par la présence d'une instruction End Select oubliée lors de la copie d'un bloc Select Case d'une procédure vers une autre. Vérifiez chaque instruction End Select pour vous assurer qu'elle termine bien une structure Select Case.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


End With sans With

À l'instruction End With doit correspondre une instruction With qui la précède. Cause et solution de cette erreur :

•	Vous avez utilisé une instruction End With sans instruction With correspondante.

Assurez-vous de la correspondance des autres structures de contrôle au sein de la structure With...End With. Cette  erreur peut être engendrée, par exemple, par un If dépourvu de End If correspondant au sein de la structure With...End With.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Les types Private Enum et Enum définis dans les modules standard ou dans les classes privées ne peuvent être utilisés dans les modules d'objets publics comme types renvoyés ou paramètres pour des procédures publiques, comme procédures ou membres de données publics ou comme champs de types publics définis par l'utilisateur

Cause et solution de cette erreur :

•	Un Enum non exposé a été utilisé comme type renvoyé ou paramètre d'une procédure publique, ou comme membre de données public d'une classe exposée.

'Exposé' signifie que le type Enum est exposé à partir du serveur ActiveX actuellement défini, ce qui équivaut à dire qu'il est déclaré dans une classe publique d'un EXE ActiveX ou d'un projet DLL.


Erreur d'accès à la base de registres système

Certaines opérations doivent accéder à la base de registres système. Cause et solution de cette erreur :

•	La base de registres système de votre ordinateur a été altérée.

Exécutez de nouveau le programme Setup à partir de l'application hôte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Gestionnaire d'événements non valide

La liste des paramètres d'une procédure de traitement des événements doit correspondre précisément à la déclaration de l'événement. Cause et solution de cette erreur :

•	Votre procédure de traitement des événements ne comporte pas le nombre de paramètres correct.

Éliminez les paramètres excédentaires ou ajoutez les paramètres manquants.

•	Un ou plusieurs paramètres de votre procédure de traitement des événements ne possèdent pas le type de données correct.

Assurez-vous que les types des paramètres correspondent à ceux de la déclaration d'événement.

•	Votre procédure de traitement des événements est une procédure Function plutôt qu'une procédure Sub.

Veillez à ce qu'il s'agisse d'une procédure Sub. Un gestionnaire d'événements ne peut pas renvoyer de valeur.

•	Une autre bibliothèque de types utilise le nom d'événement pour un de ses types.

Qualifiez le nom à l'aide du nom de la bibliothèque de types correct afin de lever toute ambiguïté.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


La déclaration de procédure ne correspond pas à la description de l'événement ou de la procédure de même nom.

Il existe un conflit entre le nom d'une procédure de votre module de classe et le nom d'un événement. Cause et solution de cette erreur :

•	Une procédure porte le même nom qu'un événement, mais ne possède pas la même signature (autrement dit, le nombre et les types des paramètres). Cette situation survient si, par exemple, vous ajoutez un nouvel événement à une procédure d'événement. Par exemple, si vous modifiez la définition de la procédure d'événement Form_Load d'une feuille de la manière suivante, vous obtiendrez cette erreur :

Sub Form_Load (MyParam As Integer)

. . .

End Sub

Si la procédure n'est pas la procédure d'événement correspondant à l'événement, modifiez son nom. Si la procédure correspond à l'événement, adaptez la liste des paramètres en fonction des exigences de l'événement éventuel.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Exit Do en dehors d'une boucle Do...Loop

L'instruction Exit Do n'est valide qu'au sein d'une instruction Do...Loop. Cause et solution de cette erreur :

•	Vous avez utilisé une instruction Exit Do à l'extérieur d'une instruction Do...Loop.

Assurez-vous que l'instruction Exit Do est précédée d'une instruction Do valide.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Exit For en dehors d'une boucle For...Next

L'instruction Exit For n'est valide qu'au sein d'une instruction For...Next. Cause et solution de cette erreur :

•	Vous avez utilisé une instruction Exit For à l'extérieur d'une instruction For...Next.

Assurez-vous que l'instruction Exit For est précédée d'une instruction For valide.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Exit Function non autorisé dans une procédure Sub ou Property

Une instruction Exit doit correspondre à la procédure dans laquelle elle figure. Cause et solution de cette erreur :

•	Vous avez utilisé Exit Function dans une procédure Sub ou Property.

Utilisez Exit Sub ou Exit Property pour ces types de procédures.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Exit Property non autorisé dans une procédure Function ou Sub

Une instruction Exit doit correspondre à la procédure dans laquelle elle figure. Cause et solution de cette erreur :

•	Vous avez utilisé Exit Property dans une procédure Sub ou Function.

Utilisez l'instruction Exit appropriée pour ce type de procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Exit Sub non autorisé dans une procédure Function ou Property

Une instruction Exit doit correspondre à la procédure dans laquelle elle figure. Cause et solution de cette erreur :

•	Vous avez utilisé Exit Sub dans une procédure Function ou Property.

Utilisez l'instruction Exit appropriée pour ce type de procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Tableau attendu

Un nom de variable accompagné d'un indice indique que la variable est un tableau. Cause et solution de cette erreur :

•	La syntaxe que vous avez spécifiée est correcte pour un tableau, mais la portée ne comporte aucun tableau de ce nom.

Vérifiez l'orthographe du nom de la variable. Si le module ne contient pas Option Explicit, une variable est créée lors de la première utilisation. Si vous orthographiez mal le nom d'une variable tableau, la variable peut être créée, mais pas en tant que tableau.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


End Function attendu

Une instruction End procedure doit correspondre à la procédure dans laquelle elle figure. Cause et solution de cette erreur :

•	Vous avez utilisé End Property ou End Sub pour mettre fin à une procédure Function.

Utilisez End Function pour ce type de procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


End Property attendu

Une instruction End procedure doit correspondre à la procédure dans laquelle elle figure. Cause et solution de cette erreur :

•	Vous avez utilisé End Function ou End Sub pour mettre fin à une Property.

Utilisez End Property pour ce type de procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


End Sub attendu

Une instruction End procedure doit correspondre à la procédure dans laquelle elle figure. Cause et solution de cette erreur :

•	Vous avez utilisé End Function ou End Property pour mettre fin à une procédure Sub.

Utilisez End Sub pour ce type de procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


End With attendu

Un bloc With doit être terminé. Cause et solution de cette erreur :

•	Vous n'avez pas correctement terminé un bloc With.

Insérez une instruction End With à la fin du bloc.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Fonction ou variable attendue

La syntaxe de votre instruction indique une variable ou un appel de fonction. Cause et solution de cette erreur :

•	Le nom n'est pas celui d'une variable ou d'une procédure Function connue.

Vérifiez l'orthographe du nom. Assurez-vous que toute variable ou fonction portant ce nom est visible dans la partie du programme à partir de laquelle vous la référencez. Si, par exemple, une fonction est définie comme Private ou si une variable n'est pas définie comme Public, elle n'est visible qu'au sein de son propre module.

•	Vous essayez d'affecter par erreur une valeur à un nom de procédure. Si, par exemple, MySub est une procédure Sub, le code suivant génère cette erreur :

MySub = 237	' Provoque l'erreur Fonction ou

' variable attendue

Bien que vous puissiez utiliser une syntaxe d'affectation avec une procédure Property Let ou avec une procédure Function qui renvoie un objet ou un Variant contenant un objet, vous ne pouvez pas employer une telle syntaxe avec une procédure Sub, Property Get ou Property Set.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Procédure attendue, et non un module

Il n'existe pas de procédure portant ce nom dans la portée en cours, mais bien un module. Vous pouvez appeler une procédure, pas un module. Cause et solution de cette erreur :

•	Le nom d'un module est utilisé comme appel de procédure.

Vérifiez l'orthographe du nom de la procédure et assurez-vous que la procédure que vous essayez d'appeler n'est pas propre à un autre module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Procédure attendue, et non un projet ou une bibliothèque

Il n'existe aucune procédure portant ce nom dans la portée en cours, mais bien un projet. Vous pouvez appeler une procédure, pas un projet. Cause et solution de cette erreur :

•	Le nom d'un projet est utilisé comme appel de procédure.

Vérifiez l'orthographe du nom de la procédure et assurez-vous que la procédure que vous essayez d'appeler n'est pas propre à un autre module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Procédure attendue, et non un type défini par l'utilisateur

Il n'existe aucune procédure portant ce nom dans la portée en cours, mais bien un type défini par l'utilisateur. Vous pouvez appeler une procédure, pas un type défini par l'utilisateur. Cause et solution de cette erreur :

•	Le nom d'un type défini par l'utilisateur est utilisé comme appel de procédure.

Vérifiez l'orthographe du nom de la procédure et assurez-vous que la procédure que vous essayez d'appeler n'est pas propre à un autre module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Procédure attendue, et non une variable

Il n'existe aucune procédure portant ce nom dans la portée en cours, mais bien une variable. Vous pouvez appeler une procédure, pas une variable. Cause et solution de cette erreur :

•	Le nom d'une variable est utilisé comme appel de procédure.

Cette erreur peut également être provoquée par la présence d'une faute d'orthographe dans le nom d'une procédure valide qui peut alors être mal interprétée et considérée comme une variable définie implicitement. Vérifiez l'orthographe du nom de la procédure et assurez-vous que la procédure que vous essayez d'appeler n'est pas propre à un autre module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Sub, Function ou Property attendue

La syntaxe de vos instructions indique l'utilisation d'une procédure Sub, Function ou Property. Cause et solution de cette erreur :

•	Le nom spécifié n'est pas celui d'une procédure Sub, Function ou Property appartenant à la portée dans cette partie de votre programme.

Vérifiez l'orthographe du nom. Notez que si la procédure est définie comme Private, elle ne peut être appelée qu'à partir de son module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Type défini par l'utilisateur attendu, et non un projet

Il n'existe pas de type défini par l'utilisateur portant ce nom dans la portée en cours, mais il existe un projet de ce nom. Vous pouvez définir une variable comme étant de type défini par l'utilisateur, mais pas de type projet. Cause et solution de cette erreur :

•	Le nom d'un projet est utilisé comme type défini par l'utilisateur.

Vérifiez l'orthographe du nom du type défini par l'utilisateur et assurez-vous que celui-ci n'est pas propreà un autre module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Variable ou procédure attendue, et non un type Enum

Le nom d'un type Enum apparaît seulement dans une instruction qui déclare une énumération du type, ou en tant que qualificateur. Cause et solution de cette erreur :

•	Un nom de type Enum est utilisé en lieu et place du nom d'une variable d'énumération de ce type.

Déclarez une variable du type Enum ou recherchez une déclaration antérieure dans la portée en cours et utilisez cette variable.

•	Un nom de type Enum est utilisé en lieu et place du nom d'une variable ou d'une procédure.

Vérifiez l'orthographe de l'identificateur qui a provoqué l'erreur. Utilisez le nom d'une variable ou d'une procédure dans laquelle vous avez spécifié un type Enum.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Variable ou procédure attendue, et non un module

Il n'existe pas de variable ou de procédure portant ce nom dans la portée en cours, mais il existe un module de ce nom. Cause et solution de cette erreur :

•	Le nom d'un module est utilisé comme variable ou procédure.

Vérifiez l'orthographe du nom de la variable ou de la procédure et assurez-vous que le nom auquel vous souhaitez faire référence n'est pas propre à un autre module. Un nom de module peut être un qualificateur, mais ne peut pas être utilisé de façon autonome.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Variable ou procédure attendue, et non un projet

Il n'existe pas de variable ou de procédure portant ce nom dans la portée en cours, mais il existe un projet de ce nom. Cause et solution de cette erreur :

•	Le nom d'un projet est utilisé comme variable ou procédure.

Vérifiez l'orthographe du nom de la variable ou de la procédure et assurez-vous que le nom auquel vous voulez faire référence n'est pas propre à un autre module. Un nom de projet peut être un qualificateur, mais ne peut pas être utilisé de façon autonome.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Attendu: <divers>

Une partie attendue de la syntaxe n'a pu être trouvée. Cette erreur se situe généralement à gauche de l'élément sélectionné, mais n'est pas toujours évidente. Par exemple, vous pouvez invoquer une procédure Sub avec ou sans le mot clé Call. Toutefois, si vous utilisez le mot clé Call, vous devez entourer de parenthèses la liste des arguments. Causes et solutions de cette erreur :

•	Attendu : Fin d'instruction. Mauvaise utilisation des parenthèses dans une invocation de procédure :

X = Workbook.Add F:= 5	' Erreur due à l'absence de

' parenthèses.

Call MySub 5	' Erreur due à l'absence de

' parenthèses.

Utilisez les parenthèses dans un appel de fonction qui spécifie un argument, ou avec une invocation de procédure Sub qui utilise le mot clé Call.

•	Attendu : ). Syntaxe incorrecte d'un appel de procédure. Par exemple, un appel de fonction ne peut pas être isolé et les appels de procédure Sub nécessitent parfois le mot clé Call, selon la manière dont vous spécifiez leurs arguments.

Workbook.Add (X:=5, Y:=7)	' Appel de fonction sans

' expression.

YourSub(5, 7)	' Invocation de Sub sans Call.

Utilisez toujours des appels de fonction dans des expressions. Si plusieurs arguments sont entourés de parenthèses au sein d'un appel de procédure Sub, vous devez utiliser le mot clé Call.

•	Attendu : Expression. Par exemple, lorsque vous collez du code de l'Explorateur d'objets, il se peut que vous ayez oublié de spécifier une valeur d'un argument nommé.

Workbook.Add (X:= )	' Erreur, car aucune valeur

' affectée à l'argument nommé.

Ajoutez une valeur pour l'argument ou supprimez celui-ci s'il est facultatif.

•	Attendu : Variable. Il se peut, par exemple, que vous ayez utilisé des mots clés avec restrictions pour des noms de variable. Dans l'exemple suivant, l'instruction Input # attend une variable comme deuxième argument. Type étant un mot clé avec restrictions, il ne peut être utilisé comme nom de variable.

Input # 1, Type	' Mot clé Type utilisé

' incorrectement comme nom de

' variable.

Renommez la variable de façon à éliminer tout conflit avec les mots clés avec restrictions.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Nom externe non défini

Vous pouvez indiquer des noms externes en les entourant de crochets ([ ]). Cause et solution de cette erreur :

•	L'identificateur spécifié entre crochets est dépourvu de signification dans l'application hôte.

Vérifiez l'orthographe du nom pour vérifier si elle correspond bien à l'attente de l'hôte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Ce format de fichier n'est plus géré.

Tous les formats de fichiers ne peuvent pas nécessairement être lus dans toutes les circonstances. Cause et solution de cette erreur :

•	Vous avez essayé de charger un fichier binaire créé dans une version antérieure de Visual Basic.

Chargez le fichier dans la version de Visual Basic dans laquelle il a été créé, enregistrez-le au format texte, puis essayez de nouveau de le charger.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Les chaînes de longueur fixe et l'utilisation du qualificateur 'new' ne sont pas autorisées pour les champs dans un type Public défini par l'utilisateur dans un module d'objet

Cause et solution de cette erreur :

•	Les chaînes de longueur fixe et l'utilisation du qualificateur 'new' ne sont pas autorisées pour les champs dans un type Public défini par l'utilisateur dans un module d'objet.


Les chaînes de longueur fixe ne sont pas autorisées comme type d'un membre public d'un module d'objet ; les modules d'objet privés ne sont pas autorisés comme type d'un membre public d'un module d'objet public

Cause et solution de cette erreur :

•	Vous ne pouvez pas définir le type d'un membre public d'un module d'objet par une chaîne de longueur fixe. Utilisez un autre type de variable.

•	Vous ne pouvez pas définir le type d'un membre public d'un module d'objet public par un module d'objet privé. Utilisez un autre type.


Une donnée fixe ou statique ne peut pas dépasser 64 Ko

Les données fixes et statiques comportent des variables non automatiques, des chaînes de longueur fixe et des tableaux fixes. Causes et solutions de cette erreur :

•	Vous avez essayé d'allouer plus de 64 Ko de données de niveau module.

Réduisez la quantité de données déclarées. Notez que bien que la taille des données de niveau module soit limitée à 64 Ko, la taille des tableaux et des chaînes de longueur variable de niveau module peut être supérieure.

•	Vous avez essayé d'allouer plus de 64 Ko de données statiques de niveau procédure dans le module.

Réduisez la quantité de ce type de données déclarées. Les données statiques de l'ensemble des procédures d'un module ne peuvent pas dépasser 64 Ko (et non 64 Ko par procédure). Notez que cette limite ne doit pas être respectée par les tableaux et les chaînes statiques de longueur variable.

•	La taille d'un type défini par l'utilisateur dépasse 64 Ko.

Réduisez la taille du type défini par l'utilisateur. En règle générale, la taille d'un type défini par l'utilisateur est égale à la somme des tailles spécifiées pour ses éléments. Sur certaines plates-formes, un remplissage peut être pratiqué entre les éléments pour les maintenir alignés sur les limites des mots. Si vous imbriquez un type défini par l'utilisateur dans un autre, la taille du type imbriqué doit être comprise dans la taille du nouveau type.

•	Dans une procédure, vous avez essayé de déclarer une variable de type défini par l'utilisateur qui nécessite plus de 32 Ko.

Bien que la taille limite d'une variable de type défini par l'utilisateur soit de 64 Ko au niveau module, la taille d'une telle variable ne peut pas dépasser 32 Ko dans une procédure. Réduisez la taille requise pour le type défini par l'utilisateur ou recourez à une variable de niveau module.

•	La taille d'une chaîne de longueur fixe déclarée dans une procédure dépasse 65 464 caractères.

Réduisez la longueur de la chaîne de longueur fixe. Notez que cette limite n'est pas imposée aux chaînes de longueur variable.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Variable de contrôle For déjà utilisée

Lorsque vous imbriquez des boucles For...Next, vous devez utiliser des variables de contrôle différentes dans chaque boucle. Cause et solution de cette erreur :

•	Une boucle For intérieure utilise le même compteur qu'une boucle For extérieure.

Vérifiez la répétition des boucles imbriquées. Par exemple, si la boucle extérieure utilise For Count = 1 To 25, les boucles intérieures ne peuvent pas employer Count comme variables de contrôle.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


La variable de contrôle For Each doit être de type Variant ou Object.

Une variable de contrôle constitue la partie element de la syntaxe de l'instruction For Each...Next. Causes et solutions de cette erreur :

•	Une collection possède une variable de contrôle qui n'est pas de type Variant ou Object.

Assurez-vous que la partie element de l'instruction For Each...Next est un Variant ou Object.

•	Un tableau possède une variable de contrôle qui n'est pas un Variant.

Assurez-vous que la partie element de l'instruction For Each...Next est un Variant.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Une variable de contrôle For Each sur les tableaux doit être de type Variant.

Une variable de contrôle constitue la partie element de la syntaxe de l'instruction For Each...Next. Cause et solution de cette erreur :

•	Un tableau possède une variable de contrôle qui n'est pas un Variant.

•	Assurez-vous que la partie group de l'instruction For Each...Next est une variable de type Variant.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


For Each ne peut pas être utilisé sur les chaînes de type défini par l'utilisateur ou de longueur fixe.

Les constructions For Each ne sont valides que pour les collections et les tableaux de types intrinsèques, y compris les tableaux d'objets. En outre, les tableaux de chaînes de longueur fixe ne peuvent pas être itérés à l'aide de For Each. Causes et solutions de cette erreur :

•	Les éléments du tableau de votre construction For Each possèdent un type défini par l'utilisateur.

Utilisez une boucle For...Next ordinaire pour itérer les éléments du tableau.

•	Les éléments du tableau de votre construction For Each possèdent un type de chaîne de longueur fixe.

Utilisez une boucle For...Next ordinaire pour itérer les éléments du tableau.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


For Each ne peut itérer que sur un objet Collection ou un tableau.

La construction For Each ne peut être utilisée qu'avec des collections et des tableaux. Cause et solution de cette erreur :

•	Vous avez spécifié comme partie group de la syntaxe For Each un objet qui n'est ni une collection, ni un tableau.

Vérifiez l'orthographe de l'élément sur lequel vous souhaitez itérer afin de vous assurer qu'il correspond à une collection ou un tableau dans la portée de cette partie du code.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


For sans Next

À chaque instruction For doit correspondre une instruction Next. Cause et solution de cette erreur :

•	Une instruction For est utilisée sans l'instruction Next correspondante.

Recherchez une structure For...Next incomplète au sein de la structure For...Next extérieure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Référence vers l'avant d'un type défini par l'utilisateur

Un type défini par l'utilisateur doit être défini avant de pouvoir être référencé. Causes et solutions de cette erreur :

•	Vous avez déclaré une variable avec un type défini par l'utilisateur qui n'était pas encore défini. Dans l'exemple suivant, la variable OtherVar est déclarée avant que son type (OtherType) soit connu :

Type MyType

OtherVar As OtherType

End Type

Type OtherType

WholeVar As Integer

RealVar As Double

End Type

Repositionnez les définitions de type afin d'éliminer la référence vers l'avant.

•	Vous avez imbriqué en son sein un type défini par l'utilisateur.

Type MyType

MyVar As Integer

OtherVar As MyType

End Type

Supprimez le type imbriqué qui fait référence à lui-même. Cette erreur peut survenir indirectement si vous imbriquez un type au sein d'un autre type à l'intérieur duquel le premier est déjà déclaré. Vérifiez la définition de chaque type imbriqué afin d'éliminer les doublons.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Un appel de fonction dans la partie gauche de l'affectation doit renvoyer une valeur de type Variant ou Object.

Un appel de fonction peut apparaître dans la partie gauche d'une affectation, mais uniquement si la valeur renvoyée par la fonction est un Object ou Variant. Cause et solution de cette erreur :

•	Le type du renvoi de la fonction située dans la partie gauche de l'affectation n'est pas un Variant ou Object.

Changez de type de renvoi. Notez que si la valeur renvoyée est un objet ou un Variant qui contient un objet, l'affectation concerne la propriété par défaut de l'objet. Si le Variant renvoyé n'est pas un objet, l'affectation est sans effet.

•	Le contenu de l'appel est correct, mais celui-ci ne peut pas aboutir. Par exemple, vous essayez de définir une propriété qui ne peut l'être qu'au moment de la création.

Passez en mode Création et définissez la propriété dans la fenêtre Propriétés. Supprimez le code qui a essayé de définir la propriété par programmation.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Fonction marquée restreinte ou qui utilise un type non géré par Visual Basic.

Tous les langages de programmation ne peuvent pas nécessairement accéder à l'ensemble des procédures qui apparaissent dans une bibliothèque de types ou une bibliothèque d'objets. Le créateur d'une bibliothèque de types ou d'objets peut définir certaines fonctions avec des restrictions d'accès de façon à empêcher leur utilisation par des langages macro. Causes et solutions de cette erreur :

•	Vous avez essayé d'utiliser une fonction qui possède une restriction d'accès.

Vous ne pouvez pas utiliser la fonction dans votre programme. Si vous disposez de la documentation relative à l'objet représenté par la bibliothèque, vérifiez s'il existe une méthode qui fournit une fonctionnalité équivalente.

•	Vous avez essayé d'utiliser une fonction qui nécessite un type de paramètre ou qui renvoie un type non disponible dans Visual Basic.

Vous pouvez parfois simuler des renvois de types à l'aide d'équivalents Visual Basic. Examinez à cet effet les sous-types du type de données Variant. Cette façon de procéder peut également être appliquée aux types de paramètres non Basic qui sont attendus comme références. Toutefois, vous ne pouvez pas passer un type de données Variant par valeur lorsque vous essayez de simuler un type non Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Identificateur trop long

Les identificateurs ne peuvent pas compter plus de 255 caractères. Cause et solution de cette erreur :

•	La longueur de l'identificateur dépasse 255 caractères.

Réduisez-la.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


L'identificateur sélectionné n'est pas un nom de procédure

Vous avez essayé d'afficher une procédure, mais l'identificateur situé au niveau du point d'insertion n'était pas un nom de procédure. Cause et solution de cette erreur :

•	L'identificateur n'est pas un nom de procédure.

Vérifiez l'orthographe de l'identificateur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Version de DLL incorrecte

Chacune des versions de Visual Basic n'est utilisable qu'avec la bibliothèque de liaisons dynamiques (DLL) (Windows) ou la resource de code (Macintosh) qui lui est associée. Cause et solution de cette erreur :

•	La version de votre bibliothèque de liaisons dynamiques Visual Basic ou de votre ressource de code n'est pas celle attendue par cette application hôte. Le programme essaie d'appeler des routines dans une DLL ou une ressource de code, mais la version de la bibliothèque ou de la ressource est incompatible avec Visual Basic ou avec l'application hôte.

Procurez-vous la version correcte de la bibliothèque ou de la ressource et assurez-vous que les versions antérieures ne précèdent pas celle-ci dans votre chemin d'accès.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Version OLE incorrecte

Vos versions des bibliothèques de liaisons dynamiques (DLL) (Windows) ou la resource de code (Macintosh) OLE ne correspondent pas à celles attendues par l'application hôte. Dans Microsoft Windows, l'application recherche d'abord les DLL dans le répertoire en cours, puis dans le chemin d'accès, et enfin dans le répertoire WINDOWS\SYSTEM. Cause et solution de cette erreur :

•	D'anciennes DLL OLE ont été rencontrées avant les DLL attendues par l'application hôte.

Vous ne devez pas essayer d'utiliser les deux versions des DLL.

Sur Macintosh, les fichiers OLE se trouvent, en principe, uniquement dans le dossier Extensions. Il est donc peu probable que ce type d'erreur se produise.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Mémoire insuffisante dans la fenêtre Exécution pour la création des variables

La mémoire est limitée dans la fenêtre Exécution. Cause et solution de cette erreur :

•	Vous avez spécifié, dans la fenêtre Exécution, une variable qui doit être instanciée, puisqu'elle n'a pas été créée dans le contexte du code du programme.

Supprimez la référence à la variable dans la fenêtre Exécution, ou déclarez la variable dans le contexte du code du programme de sorte qu'il ne soit pas nécessaire de la créer dans la fenêtre Exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Mémoire insuffisante pour enregistrer les informations d'annulation

Vous ne pourrez pas cliquer sur la commande Annuler pour restaurer l'état en cours, une fois cette modification terminée. Cause et solution de cette erreur :

•	La modification est trop importante pour être enregistrée, puis effacée à l'aide de la commande Annuler.

Essayez d'effectuer des modifications de moindre ampleur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Informations insuffisantes pour charger le projet sur la plate-forme ou dans la version actuellement utilisée

Lorsque vous enregistrez un projet, des informations supplémentaires sont également enregistrées afin de permettre le chargement du projet avec une version ultérieure ou sur une autre plate-forme. Cause et solution de cette erreur :

•	Lorsque vous avez enregistré ce projet, un message d'erreur vous a indiqué que la mémoire était insuffisante pour enregistrer toutes les informations qui pourraient être nécessaires au chargement du projet dans une version différente ou sur une autre plate-forme.

Chargez le fichier à l'aide de la version de Visual Basic dans laquelle il a été précédemment enregistré, ou sur la plate-forme sur laquelle il avait été enregistré, puis enregistrez-le de nouveau. Si vous ne voyez apparaître aucun message d'erreur au cours de l'enregistrement, vous devriez normalement pouvoir charger le fichier dans la version actuelle ou sur la plate-forme en cours.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface non valide pour les implémentations

Toutes les interfaces ne peuvent pas être mises en œuvre dans Visual Basic. Cause et solution de cette erreur :

•	L'interface contient certains éléments qui ne sont pas gérés par Visual Basic. Par exemple, Visual Basic ne possède pas d'équivalent pour le type entier long non signé, Visual Basic est incapable de désigner un paramètre de procédure comme "en sortie seule". Bien que Visual Basic gère l'utilisation du trait de soulignement (_) dans les identificateurs Visual Basic, il ne peut pas mettre en œuvre une interface dont les membres portent des noms qui contiennent des traits de soulignement.

Vous ne pouvez pas mettre en œuvre l'interface dans Visual Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Mode d'accès incorrect

Dans votre instruction Open, vous avez défini un accès incorrect pour le type de fichier spécifié. Causes et solutions de cette erreur :

•	Vous avez essayé d'ouvrir un fichier en lecture (Input), mais en spécifiant un mode d'accès incorrect.

Vous pouvez omettre la spécification du mode d'accès lorsque vous ouvrez un fichier en lecture. Toutefois, si vous le définissez, le mode d'accès doit être Read. Les modes d'accès Write et Read Write sont incorrects dans le cas d'un fichier ouvert en Input.

•	Vous avez essayé d'ouvrir un fichier en ajout (Append), mais en spécifiant un mode d'accès incorrect.

Vous pouvez omettre la spécification du mode d'accès lorsque vous ouvrez un fichier en ajout. Toutefois, si vous le définissez, le mode d'accès doit être Write. Les modes d'accès Write et Read Write sont incorrects dans le cas d'un fichier ouvert en Append.

•	Vous avez essayé d'ouvrir un fichier en écriture (Output), mais en spécifiant un mode d'accès incorrect.

Vous pouvez omettre la spécification du mode d'accès lorsque vous ouvrez un fichier en écriture. Toutefois, si vous le définissez, le mode d'accès doit être Write. Les modes d'accès Write et Read Write sont incorrects dans le cas d'un fichier ouvert en Output.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Attribut incorrect dans une procédure Sub, Function ou Property

Certains attributs sont incorrects dans des procédures. Cause et solution de cette erreur :

•	Un attribut Public ou Private apparaît au sein d'une définition de procédure.

Supprimez l'attribut de la procédure. Pour élargir la portée de la variable, déplacez la déclaration jusqu'au niveau module. Les variables déclarées au sein des procédures sont toujours Private.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Caractère incorrect

Le caractère ne peut pas être utilisé dans le contexte en cours. Cause et solution de cette erreur :

•	Vous avez probablement utilisé un caractère incorrect, notamment un crochet ou un trait d'union, au sein d'un nom de variable.

Comparez l'orthographe du nom avec sa déclaration.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Format de données incorrect

Les données lues dans un fichier ne possédaient pas le format attendu. Causes et solutions de cette erreur :

•	Un fichier de projet ou un fichier de bibliothèque d'objets est altéré ou possède un format non reconnu.

Procurez-vous une nouvelle version du fichier de projet ou du fichier de bibliothèque d'objets.

•	Vous avez peut-être essayé de charger un fichier .exe dans un module.

Chargez plutôt le code source.

•	Vous avez peut-être utilisé la boîte de dialogue Références et l'Explorateur d'objets pour ajouter une référence à un fichier qui n'est pas une bibliothèque d'objets valide ou qui contient un projet Basic dans un format non reconnu par l'application hôte. Par exemple, sur la plateforme Windows, Microsoft Excel ne reconnait pas les fichiers .bas ou .frm ou les fichiers Microsoft Project contenant du code Basic.

Chargez le fichier incriminé dans l'application dans laquelle il a été créé, puis enregistrez-le dans un format compatible. Par exemple, le code source d'une bibliothèque d'objets peut être traité par MkTypLib, tandis que du code QuickBasic et Visual Basic peut être enregistré au format texte, etc.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Type de données incorrect pour une constante

Il n'est pas possible d'affecter tous les types de données à des constantes. Cause et solution de cette erreur :

•	Vous avez essayé de déclarer un type défini par l'utilisateur, un objet ou un tableau comme type d'une constante.

Supprimez la déclaration ou déclarez une variable à la place de la constante

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Incorrect dans la fenêtre Exécution

Toutes les instructions ne sont pas autorisées dans la fenêtre Exécution. Causes et solutions de cette erreur :

•	Une instruction de déclaration a été utilisée. Par exemple, Const, Declare, Deftype, Dim, Function, Option Base, Option Explicit, Option Compare, Option Private, Private, Public, des instructions de déclaration de procédure (Property Let, Property Set et Property Get), ReDim, Static, Sub et Type ne sont pas autorisées dans la fenêtre Exécution.

Supprimez les instructions de déclaration de la fenêtre Exécution.

•	Une instruction de contrôle du déroulement a été utilisée, par exemple, Sub, Function, Property, GoSub, GoTo, Return et Resume.

Supprimez ces instructions de la fenêtre Exécution.

•	Il n'existe aucun lien logique entre les différentes lignes physiques de la fenêtre Exécution, ce qui empêche l'exécution correcte des instructions présentées sous la forme de lignes physiques multiples, notamment les instructions de bloc If.

De tels blocs peuvent être tapés sur une seule ligne physique en séparant les diverses instructions par un signe deux-points (:). Par contre, vous pouvez répartir une même instruction sur plusieurs lignes physiques, au sein de la fenêtre Exécution, en utilisant le caractère de continuité de ligne, à savoir un espace suivi d'un trait de soulignement ( _).

•	Vous avez essayé d'exécuter, dans la fenêtre Exécution, du code qui annule l'état en cours de votre programme et exige sa réinitialisation.

Supprimez le code en question de la fenêtre Exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Instruction incorrecte dans une procédure

L'instruction ne peut pas figurer dans une procédure Sub ou Function. Cause et solution de cette erreur :

•	Une des instructions suivantes apparaît dans une procédure : Declare, Deftype, Private, Public, Option Base, Option Compare, Option Explicit, Option Private, Enum et Type.

Supprimez l'instruction de la procédure. Les instructions peuvent être placées au niveau module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Longueur incorrecte pour une chaîne de longueur fixe

Causes et solutions de cette erreur :

•	Une chaîne de longueur fixe a été déclarée avec une longueur nulle.

Une chaîne de longueur fixe doit compter au moins un caractère.

•	Une chaîne de longueur fixe dépasse la limite des 65 526 caractères.

Réduisez la longueur de la chaîne.

Note   Les chaînes de longueur variable peuvent avoir une longueur nulle ou dépasser la limite supérieure mentionnée ci-dessus.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Référence de variable de contrôle incorrecte dans Next

La variable numérique de la partie Next d'une boucle For...Next doit correspondre à la variable de la partie For. Cause et solution de cette erreur :

•	La variable de la partie Next d'une boucle For...Next est différente de la variable de la partie For. Par exemple :

For Counter = 1 To 10

MyVar = Counter

Next Count

Vérifiez l'orthographe de la variable dans la partie Next pour vous assurer qu'elle correspond à celle de la partie For. Vérifiez également que vous n'avez pas supprimé par inadvertance des parties de la boucle extérieure qui utilisait la variable.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Référence incorrecte ou non qualifiée

Un identificateur commençant par un point n'est valide qu'au sein d'un bloc With. Cause et solution de cette erreur :

•	L'identificateur commence par un point.

Complétez la qualification de l'identificateur ou supprimez le point.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Instruction incorrecte à l'extérieur d'une procédure

L'instruction doit figurer dans une procédure Sub ou Function, ou bien dans une procédure de propriété (Property Get, Property Let, Property Set). Cause et solution de cette erreur :

•	Une instruction exécutable, Static ou ReDim, apparaît au niveau module.

Static est inutile au niveau module, puisque toutes les variables de niveau module sont statiques. Utilisez Dim plutôt que ReDim au niveau module. Pour créer un tableau dynamique au niveau module, déclarez-le à l'aide de Dim en utilisant des parenthèses vides.

Note   Au niveau module, vous ne pouvez utiliser que des commentaires et des instructions de déclaration, telles que Const, Declare, Deftype, Dim, Option Base, Option Compare, Option Explicit, Option Private, Private, Public et Type. Les instructions Sub, Function et Property figurent à l'extérieur du corps de leurs procédures, mais à l'intérieur de la déclaration de procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Utilisation incorrecte de ParamArray

Le paramètre défini comme ParamArray n'est pas correctement utilisé dans la procédure. Causes et solutions de cette erreur :

•	Vous avez essayé de passer ParamArray comme argument à une procédure qui attend un tableau ou un ByRef Variant.

Affectez le paramètre ParamArray à un Variant, puis passez le variant.

•	Vous avez essayé d'utiliser une instruction Erase ou ReDim avec un paramètre ParamArray au sein de sa procédure.

Supprimez l'instruction Erase ou ReDim. Ces opérations ne peuvent pas être exécutées sur le paramètre ParamArray.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Nom de procédure incorrect

Outre les règles applicables à l'affectation des noms des identificateurs, certaines restrictions s'appliquent aux noms des procédures. Cause et solution de cette erreur :

•	Vous avez essayé de définir une procédure, mais le nom utilisé est incorrect, car l'hôte emploie déjà cet identificateur à d'autres fins. Si, par exemple, l'application hôte est Microsoft Excel, vous ne pouvez définir une procédure qui a pour nom L1C1, puisque cet identificateur est déjà utilisé par Microsoft Excel.

Choisissez un autre nom pour la procédure.

•	Le nom de votre procédure est celui d'un mot clé restreint, dépasse 255 caractères ou ne commence pas par une lettre.

Choisissez un autre nom pour la procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Qualificateur incorrect

Les qualificateurs sont utilisés pour écarter toute ambiguïté. Cause et solution de cette erreur :

•	Le qualificateur n'identifie pas un projet, un module, un objet ou une variable de type défini par l'utilisateur au sein de la portée en cours.

Vérifiez l'orthographe du qualificateur. Assurez-vous que l'identificateur correspondant figure dans la portée en cours. Par exemple, une variable de type défini par l'utilisateur dans un module Private n'est visible qu'au sein de ce module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


ReDim incorrect

Il n'est pas possible de redimensionner tous les tableaux. Causes et solutions de cette erreur :

•	Une variable a été déclarée implicitement en tant que Variant et vous avez essayé de la transformer en tableau à l'aide de ReDim.

Un Variant peut contenir un tableau, mais s'il n'est pas déclaré explicitement, vous ne pouvez pas le transformer en tableau à l'aide de ReDim. Déclarez le Variant avant d'utiliser ReDim pour spécifier le nombre d'éléments qu'il peut contenir. Par exemple, dans le code suivant, ReDim AVar(10) engendre une erreur ReDim incorrect, mais pas ReDim BVar(10) :

AVar = 1	' Déclaration implicite de AVar.

ReDim AVar(10)	' Engendre une erreur ReDim

' incorrect.

.

.

.

Dim BVar	' Déclaration explicite de BVar.

ReDim BVar(10)	' Aucune erreur.

•	Vous avez essayé d'utiliser ReDim pour modifier plusieurs dimensions d'un tableau contenu au sein d'un Variant.

Vous ne pouvez utiliser ReDim que pour modifier la taille de la dernière dimension d'un tableau au sein d'un Variant. Pour créer un tableau à plusieurs dimensions susceptible d'être redimensionné, il est nécessaire qu'il ne soit pas contenu à l'intérieur d'un Variant et qu'il soit déclaré normalement.

•	Vous ne pouvez utiliser ReDim que pour modifier le nombre d'éléments d'un tableau normal et non le type de ces éléments.

Si vous souhaitez pouvoir modifier les types des éléments d'un tableau, utilisez un tableau contenu dans un Variant. Si vous déclarez d'abord le tableau, la modification des types et du nombre d'éléments peut être réalisée de la manière suivante :

Dim MyVar As Variant	' Déclare la variable.

' Redimensionne (ReDim) la variable sous forme de

' tableau de sous-types String.

ReDim MyVar(10) As String

' Redimensionne (ReDim) la variable sous forme de

' tableau de sous-types Integer.

ReDim MyVar(20) As Integer

' Redimensionne (ReDim) la variable sous forme de

' tableau de sous-types Variant.

ReDim MyVar(5) As Variant

•	Vous avez essayé d'utiliser ReDim avec un tableau qui est membre d'un objet ActiveX.

Supprimez ReDim.

Note   Si vous ne spécifiez pas le type d'une variable, celle-ci se voit affecter le type par défaut, à savoir Variant. Cela n'est pas toujours évident. Par exemple, le code suivant déclare deux variables, la première, MyVar, est un Variant, tandis que la deuxième, AnotherVar, est un Integer.

Dim MyVar, AnotherVar As Integer

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Syntaxe incorrecte dans la déclaration de constantes de compilation conditionnelle

La saisie de constantes de compilation conditionnelle dans une boîte de dialogue Options ne doit pas être assimilée à la déclaration de constantes dans le code. Cause et solution de cette erreur :

•	Vous n'avez pas utilisé la syntaxe correcte lors de la saisie d'une déclaration de constante dans la boîte de dialogue Options.

La seule syntaxe valide est une affectation simple d'une valeur entière à l'identificateur. Assurez-vous que la syntaxe de l'entrée se présente de la manière suivante ; chaque constante étant séparée par un signe deux-points (:) :

constantname = [{+ | – }]integervalue : [{+ | – }]constantname = integervalue [...]

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Caractère de déclaration de type incorrect

Les caractères de déclaration de type sont valides, mais n'existent pas pour tous les types de données. En outre, ils ne sont pas autorisés dans toutes les situations. Causes et solutions de cette erreur :

•	Un caractère de déclaration de type est ajouté à une variable déclarée dans une instruction Private, Public ou Static avec une clause As.

Supprimez le caractère de déclaration de type.

•	Un caractère de déclaration de type est ajouté à un littéral incohérent. Par exemple, comme le caractère de déclaration de type d'un entier Long est &, son ajout à un littéral d'un autre type engendre l'erreur suivante :

10.253&

Supprimez le caractère de déclaration de type ou remplacez-le par le caractère correct.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Utilisation incorrecte de l'opérateur AddressOf

L'opérateur AddressOf modifie un argument de façon à passer l'adresse d'une fonction plutôt que le résultat de l'appel de fonction. Cause et solution de cette erreur :

•	Vous avez essayé d'utiliser AddressOf avec le nom d'une méthode de classe.

Seuls les noms des procédures Visual Basic d'un module .bas peuvent être modifiés à l'aide de AddressOf. Vous ne pouvez pas spécifier une méthode de classe.

•	Le nom de procédure modifié par AddressOf est défini dans un module d'un autre projet.

•	Vous avez essayé de modifier le nom d'une fonction DLL ou d'une fonction définie dans une bibliothèque de types à l'aide de AddressOf.

•	Les fonctions DLL et les fonctions de bibliothèque de types ne peuvent pas être modifiées à l'aide de AddressOf.

La définition de la procédure doit figurer dans un module au sein du projet en cours. Déplacez la définition vers un module de ce projet ou insérez son module dans le projet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Utilisation incorrecte du mot clé Me

Le mot clé Me peut apparaît dans les modules de classe. Causes et solutions de cette erreur :

•	Le mot clé Me est apparu dans un module standard.

Le mot clé Me ne peut pas apparaître dans un module standard, car ce dernier ne représente pas un objet. Si vous avez copié le code en question à partir d'un module de classe, vous devez remplacer le mot clé Me par le nom d'objet ou de feuille de façon à préserver la référence d'origine.

•	Le mot clé Me est apparu dans la partie gauche d'une affectation Set, par exemple :

' Provoque l'affiche du message

' "Utilisation incorrecte du mot clé Me".

Set Me = MyObject

Supprimez l'affectation Set.

Note   Le mot clé Me peut apparaître dans la partie gauche d'une affectation Let. La propriété par défaut de l'objet représenté par Me est alors définie. Par exemple :

Let Me = MyObject	' Affectation valide à l'aide de Let

' explicite.

Me = MyObject	' Affectation valide à l'aide de Let

' implicite.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Utilisation incorrecte du mot clé New

Le mot clé New n'est applicable qu'à un objet qui peut être créé (une instance de classe ou un objet ActiveX). Causes et solutions de cette erreur :

•	Vous avez essayé d'instancier un élément qui ne peut connaître qu'une seule instance. Par exemple, vous avez essayé de créer une nouvelle instance d'un module en spécifiant Module1 dans une instruction semblable à celle-ci :

Dim MyMod As New Module1

Vous ne pouvez pas créer la nouvelle occurrence, puisqu'un module ne peut avoir qu'une seule instance.

•	Vous avez essayé d'instancier un objet ActiveX, mais il ne s'agissait pas d'un objet qui peut être créé. Par exemple, vous avez essayé de créer une nouvelle instance d'une zone de liste en spécifiant ListBox dans une instruction semblable à celle-ci :

' Syntaxe valide pour créer la variable.

Dim MyListBox As ListBox

Dim MyFormInst As Form

' Syntaxe incorrecte pour instancier l'objet.

Set MyFormInst = New Form

Set MyListBox = New ListBox

ListBox et Form sont des noms de classe, et pas des noms d'objets spécifiques. Vous pouvez les utiliser pour spécifier qu'une variable constituera une référence à un type d'objet déterminé, comme dans l'exemple des instructions Dim valides ci-dessus. Toutefois, vous ne pouvez pas les utiliser pour instancier les objets proprement dits dans une instruction Set. Vous devez spécifier un objet déterminé, plutôt que le nom de classe générique, au sein de l'instruction Set :

' Syntaxe valide pour créer une nouvelle instance

' d'une feuille ou d'une zone de liste.

Set MyFormInst = New Form1

Set MyListBox = New List1

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Utilisation incorrecte de l'objet

Vous avez essayé d'utiliser un objet, mais de façon incorrecte. Causes et solutions de cette erreur :

•	Vous avez essayé de rompre une référence à un objet en lui affectant Nothing, mais en omettant le mot clé Set :

MyObject = Nothing

Utilisez l'instruction Set pour lui affecter Nothing. En supposant que MyObject soit un objet, vous devez lui affecter Nothing à l'aide de l'instruction Set :

Set MyObject = Nothing

L'omission du mot clé Set est une utilisation implicite de Let qui entraîne une tentative d'affectation de valeur plutôt qu'une affectation de référence. Nothing ne peut pas être utilisé dans une affectation de valeur.

•	Vous avez essayé d'utiliser Nothing dans une expression.

Reformulez l'expression sans Nothing.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Utilisation incorrecte de Property

Vous utilisez un type de procédure Property alors qu'un autre type est attendu. Causes et solutions de cette erreur :

•	Vous essayez d'écrire dans une propriété qui est en lecture seule.

Si la seule procédure de propriété définie pour la propriété est une procédure Property Get, vous ne pouvez pas affecter de valeur à la propriété. Écrivez une procédure Property Let adéquate ou n'essayez pas d'écrire dans la propriété.

•	Vous essayez de lire une propriété qui est en écriture seule.

Si la seule procédure de propriété définie pour cette propriété est une procédure Property Let, vous ne pouvez pas lire la valeur de la propriété. Écrivez une procédure Property Get adéquate ou n'essayez pas d'écrire dans la propriété.

•	Vous essayez de définir une référence, mais la propriété ne possède que des procédures Property Get ou Property Let.

Écrivez une procédure Property Set pour la propriété ou n'essayez pas de définir une référence à celle-ci.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Expression espionne incorrecte

L'expression espionne spécifiée n'est pas une expression valide. Cause et solution de cette erreur :

•	La syntaxe de l'expression espionne est incorrecte.

Vérifiez la syntaxe de tous les composants de l'expression. Notez que la syntaxe d'une expression espionne correspond aux paramètres régionaux du projet dans lequel elle est définie.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Étiquette non définie

Cause et solution de cette erreur :

•	Il est fait référence (notamment dans une instruction GoTo) à une étiquette de ligne ou un numéro de ligne qui ne figure pas au sein de la portée de la référence.

L'étiquette doit apparaître au sein de la procédure qui contient la référence. Les étiquettes de ligne ne sont visibles que dans leurs propres procédures.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Les paramètres langue/pays ont changé.
Les paramètres langue/pays ont changé

Cause et solution de cette erreur :

•	Vous avez modifié les paramètres langue/pays par défaut de l'environnement Visual Basic.

Bien qu'une telle modification soit autorisée, elle peut engendrer des problèmes.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Cette ligne ne contient pas d'instruction exécutable

Les déclarations et les commentaires ne sont pas des instructions exécutables. Cause et solution de cette erreur :

•	Vous avez cliqué sur la commande Exécuter jusqu'au curseur, mais le curseur ne se trouvait pas sur une ligne contenant une instruction exécutable.

Placez le curseur sur une instruction exécutable à proximité de la ligne en cours.

Pour plus d'informations, cliquez sur la commande Exécuter jusqu'au curseur du menu Exécution et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Ligne trop longue

Une ligne physique de code Visual Basic peut compter jusqu'à 1 023 caractères. Cause et solution de cette erreur :

•	Une ligne compte un trop grand nombre de caractères.

Vous pouvez créer une ligne logique plus longue en joignant des lignes physiques à l'aide d'un caractère de continuité de ligne, autrement dit un espace suivi d'un trait de soulignement ( _). Jusqu'à 25 lignes physiques ou encore 24 caractères de continuité de ligne successifs peuvent être joints de la sorte et constituent ainsi une même ligne logique. Celle-ci pourrait donc compter jusqu'à 10 230 caractères. Au-delà, vous devez diviser la ligne en instructions isolées ou affecter certaines expressions à des variables intermédiaires.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Loop sans Do

Une boucle Do doit commencer par une instruction Do. Cause et solution de cette erreur :

•	Un bloc de boucle non terminé est imbriqué dans une autre boucle.

Vérifiez que la syntaxe Do...Loop est correcte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


LSet autorisé seulement sur les chaînes et les types définis par l'utilisateur

LSet est utilisé pour aligner à gauche les données au sein de chaînes et de variables de type défini par l'utilisateur. Causes et solutions de cette erreur :

•	La variable spécifiée n'est pas une chaîne ou une variable de type défini par l'utilisateur.

Si vous essayez d'affecter un type avec un autre type, LSet est sans effet. Vous devez recourir à une boucle pour affecter chaque élément individuellement.

•	Vous avez essayé d'utiliser LSet avec un objet.

LSet permet également d'affecter les éléments d'une variable de type défini par l'utilisateur aux éléments d'un autre type défini par l'utilisateur pour autant que celui-ci soit compatible. Bien que les objets soient semblables aux types définis par l'utilisateur, vous ne pouvez pas leur appliquer Lset. De même, vous ne pouvez pas appliquer LSet à des variables de types définis par l'utilisateur qui contiennent des chaînes, des objets ou des variants.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


LSet non autorisé

LSet est utilisé pour aligner à gauche les données au sein de chaînes et de variables de type défini par l'utilisateur. Cause et solution de cette erreur :

•	Vous avez essayé d'appliquer LSet à un type défini par l'utilisateur alors que celui-ci contient des chaînes, des objets ou des variants.

Les éléments de cette variable de type défini par l'utilisateur doivent être affectés individuellement à une autre.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorrecte pour l'implémentation : l'interface est dérivée d'une autre interface intégrale avec des méthodes sans restrictions

Cause et solution de cette erreur :

•	L'interface est directement ou indirectement dérivée d'une interface intégrale contenant des méthodes sans restrictions.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorrecte pour l'implémentation : l'interface contient des champs de données

Cause et solution de cette erreur :

•	L'interface ou la classe contient des champs de données.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorrecte pour l'implémentation : le nom de la méthode contient un caractère de soulignement

L'instruction Implements permet d'indiquer une interface ou une classe qui va être implémentée dans le module de classe où elle apparaît. Cause et solution de cette erreur :

•	L'interface ou la classe contient une méthode dont le nom comporte un caractère de soulignement.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorrecte pour l'implémentation : la méthode ne renvoie pas le type HRESULT

L'instruction Implements permet d'indiquer une interface ou une classe qui va être implémentée dans le module de classe où elle apparaît. Cause et solution de cette erreur :

•	L'interface ou la classe contient un nom de méthode renvoyant une valeur qui n'est pas de type HRESULT.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorrecte pour l'implémentation : la méthode possède un paramètre LCID ou en sortie seule

L'instruction Implements permet d'indiquer une interface ou une classe qui va être implémentée dans le module de classe où elle apparaît. Cause et solution de cette erreur :

•	L'interface ou la classe contient une méthode comportant un paramètre LCID ou en sortie seule.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorrecte pour l'implémentation : un paramètre de la méthode a trop de niveaux d'indirection

L'instruction Implements permet d'indiquer une interface ou une classe qui va être implémentée dans le module de classe où elle apparaît. Cause et solution de cette erreur :

•	L'interface ou la classe contient une méthode dont un paramètre comporte trop de niveaux d'indirection. Par exemple, l'utilisation d'indirections doubles d'entier ou d'indirections triples de types définis par l'utilisateur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorrecte pour l'implémentation : la méthode utilise des types non gérés par Visual Basic

L'instruction Implements permet d'indiquer une interface ou une classe qui va être implémentée dans le module de classe où elle apparaît. Cause et solution de cette erreur :

•	L'interface ou la classe contient une méthode qui n'est pas gérée par Visual Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Interface incorecte pour l'implémentation : l'interface n'est pas dérivée de Iunknown

L'instruction Implements permet d'indiquer une interface ou une classe qui va être implémentée dans le module de classe où elle apparaît. Cause et solution de cette erreur :

•	L'interface ou la classe contient une méthode utilisant des types de données qui ne sont pas gérés par Visual Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh).


Nombre maximum d'expressions espionnes ajoutées

Une limite est imposée quant au nombre d'expressions espionnes que la fenêtre Espions peut contenir. Cause et solution de cette erreur :

•	Vous avez atteint le nombre maximum d'expressions espionnes dans la fenêtre Espions.

Retirez une expression espionne pour chaque nouvelle expression à ajouter ou affichez la valeur que vous désirez connaître dans la fenêtre Exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le membre existe déjà dans un module objet dont le présent module est dérivé

Les identificateurs utilisés pour les membres d'un module objet ne peuvent pas être en conflit avec des noms déjà employés dans un module objet d'où il est dérivé. Cause et solution de cette erreur :

•	Un identificateur de procédure ou de membre de données dans votre module objet utilise un identificateur déjà employé dans le module objet d'où il est dérivé. Par exemple, si une feuille a une propriété BackColor, le code suivant provoque cette erreur :

' Une feuille a déjà une propriété BackColor.

Dim BackColor As Integer	' Génère l'erreur.

Function BackColor()	' Génère l'erreur.

End Function

Changez l'identificateur qui crée un conflit avec l'identificateur du membre dans votre module objet.

Note   Les noms suivants ne peuvent pas être utilisés comme noms de propriétés ou de méthodes car ils appartiennent aux interfaces sous-jacentes IUnknown et IDispatch : QueryInterface, AddRef, Release, GetTypeInfoCount, GetTypeInfo, GetIDsOfNames et Invoke. Leur utilisation provoque une erreur de compilation.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Méthode incorrecte sans un objet approprié

Certaines méthodes ne peuvent pas être exécutées par tous les objets. Cause et solution de cette erreur :

•	Vous avez appelé une méthode sans spécifier d'objet, et la méthode n'est pas valide pour l'objet implicite. Par exemple, vous ne pouvez pas utiliser la méthode Line dans un module standard sans qualificateur d'objet valide parce qu'un module standard ne peut pas afficher la sortie de la méthode Line.

Qualifiez explicitement l'appel de méthode avec un objet pouvant accepter la méthode. Par exemple, vous pouvez spécifier une feuille ou une zone d'image avec la méthode Line.

Note   D'autres méthodes nécessitent un qualificateur d'objet explicite lorsqu'ils sont utilisés dans un module standard, notamment Circle, Print et PSet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Parenthèse fermante manquante

Les parenthèses dans une instruction doivent être employées par paires correspondantes. Cause et solution de cette erreur :

•	Une parenthèse ouvrante n'est pas appariée à une parenthèse fermante.

Placez une parenthèse fermante à la fin des informations à mettre entre parenthèses.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Module introuvable

Les modules ne sont pas chargés à partir d'une référence de code. Ils doivent faire partie du projet. Cause et solution de cette erreur :

•	Le module demandé n'existe pas dans le projet spécifié. Par exemple, l'instruction MyModule.SomeVar = 5 génère cette erreur lorsque MyModule n'est pas visible dans le projet MyProject.

Pour plus d'informations sur l'inclusion du module dans le projet, consultez la documentation de votre application hôte.


Module trop grand

Un module contient du code dans le projet. Cause et solution de cette erreur :

•	Le module contient un code trop volumineux.

Créez un nouveau module et transférez-y certaines des procédures de ce module. Si le module courant contient des déclarations niveau module de données devant être visibles par les procédures du nouveau module, déclarez ces données comme Public.

Note   Les commentaires ne sont pas reconnus comme lignes de code. Par conséquent, la suppression de commentaires ne corrige pas cette erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette instruction doit être la première de la ligne

Certains mots clés ne peuvent pas apparaître au début d'une ligne de code. Causes et solutions de cette erreur :

•	Vous avez fait précéder une instruction Sub, Function ou Property d'une autre instruction sur la même ligne.

Une instruction Sub, Function ou Property doit toujours être la première d'une ligne (sauf si elle est précédée des mots clés Public, Private ou Static).

•	Une instruction précède l'instruction End If, Else ou ElseIf sur une ligne.

Une instruction End If, Else ou ElseIf (sauf si elle est employée dans une structure de bloc If) doit toujours être la première de la ligne.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Nom de module, de projet ou de bibliothèque d'objets déjà utilisé

Les modules, les bibliothèques d'objets et les projets référencés doivent porter un nom qui leur est propre dans un projet. Causes et solutions de cette erreur :

•	Il y a déjà un module, un projet ou une bibliothèque d'objets de ce nom référencé dans ce projet. Une extension de nom de fichier n'étant pas considérée comme faisant partie du nom, des extensions différentes ne peuvent pas être employées pour distinguer un fichier d'un autre.

Utilisez un nom différent pour l'une des références de module, de projet ou de bibliothèque d'objets en double.

•	Vous avez tenté d'ajouter une référence à un projet ou à une bibliothèque d'objets dont le nom de fichier (sans extension) est identique à celui d'un des modules du projet en cours.

Changez le nom du module ou le nom du fichier ne pouvant pas être ajouté.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Argument nommé déjà spécifié

Vous ne pouvez utiliser un argument nommé qu'une seule fois dans la liste d'arguments de chaque appel de procédure. Causes et solutions de cette erreur :

•	Vous avez spécifié le même argument nommé plusieurs fois dans un appel. Par exemple, si la procédure MySub attend les arguments nommés Arg1 et Arg2, l'appel suivant générerait cette erreur :

Call MySub(Arg1 := 3, Arg1 := 5)

Retirez l'une des spécifications dupliquées.

•	Vous avez spécifié le même argument par position et avec un argument nommé, par exemple :

Call MySub(1, Arg1 := 3)

Retirez l'une des spécifications en double.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Arguments nommés interdits

Les arguments nommés ne sont pas permis dans toutes les situations. Causes et solutions de cette erreur :

•	Vous avez tenté de spécifier un argument nommé comme index de tableau, par exemple :

MyVar = MyArray(MyNamedArg := 1)

Utilisez une variable ordinaire ou une expression constante comme index de tableau.

•	Vous avez tenté de spécifier un argument nommé avec un objet, par exemple :

MyVar = MyObject(MyNamedArg := 1)

Utilisez une variable ou une expression constante si l'objet nécessite un argument. Par exemple, si la valeur par défaut d'un objet est une méthode, le nom de l'objet représente la méthode par défaut. S'il nécessite des arguments, spécifiez-les par position.

•	Vous avez tenté de spécifier un argument nommé avec un nom externe :

MyVar = [MyName](MyNamedArg := 1)

Utilisez une variable ordinaire ou une expression constante si le nom externe a besoin d'un argument.

•	Vous avez tenté de spécifier un argument nommé avec un membre de données d'un objet, par exemple :

MyVar = [MyObject].MyProperty(MyNamedArg := 1)

Utilisez une variable ordinaire ou une expression constante si le membre de données a besoin d'un argument.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Next sans For

Une instruction Next doit être précédée d'une instruction For appariée. Cause et solution de cette erreur :

•	Une instruction Next est employée sans instruction For appariée.

Vérifiez que les autres structures de contrôle de la structure For...Next sont correctement appariées. Par exemple, un If sans End If correspondant à l'intérieur de la structure For...Next génère cette erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Pas de texte sélectionné

Vous devez sélectionner du texte pour effectuer cette opération. Cause et solution de cette erreur :

•	Vous n'avez pas sélectionné de texte avant de lancer une opération Recherche ou Remplacement.

Certaines applications hôte permettent de spécifier une portée de sélection lors d'une recherche et d'un remplacement de texte, même si aucun texte n'est réellement sélectionné. Pour sélectionner du texte, placez le pointeur au début de la sélection désirée, puis maintenez enfoncée la touche MAJ et utilisez l'une des touches de direction ou cliquez à la fin du texte pour marquer la fin de la sélection. Si vous ne souhaitez pas rechercher du texte sélectionné, désactivez l'option Sélection.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Mémoire insuffisante pour enregistrer le projet dans son intégralité

Lorsqu'un projet est enregistré, des informations complémentaires sont généralement enregistrées pour permettre le chargement du projet dans une version ultérieure ou sur une plate-forme différente. Cause et solution de cette erreur :

•	La mémoire disponible est insuffisante pour enregistrer les informations nécessaires permettant le chargement du projet dans une version ultérieure de Visual Basic ou sur une autre plate-forme.

Si vous prévoyez d'ouvrir le projet dans une version ultérieure de Visual Basic ou sur une autre plate-forme, fermez certaines applications et recommencez.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Pas d'expression espionne sélectionnée

Une expression doit être sélectionnée lorsque vous choisissez la commande Espion express. Cause et solution de cette erreur :

•	Vous n'avez pas sélectionné d'expression à espionner avant de choisir la commande Espion express.

Mettez en surbrillance l'expression espionne dans la fenêtre de Code avant de sélectionner Espion express.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Mécanisme de bibliothèque d'objets non géré

Il est possible d'inclure des fonctions dans une bibliothèque d'objets n'ayant aucun équivalent dans Visual Basic. Cause et solution de cette erreur :

•	Vous avez tenté d'accéder à un type de données ou à une fonction d'une bibliothèque d'objets non gérés par Visual Basic.

Pour plus d'informations sur l'utilisation de la bibliothèque d'objets et sur les outils avec lesquels elle doit être employée, contactez le créateur de la bibliothèque.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Bibliothèque d'objets pour Visual Basic pour Applications non trouvée

La bibliothèque d'objets Visual Basic pour Applications n'est plus un fichier autonome ; elle est intégrée dans la bibliothèque de liaisons dynamiques (DLL).

Dans des circonstances inhabituelles, une version précédente de la bibliothèque d'objets (vaxxx.olb ou vaxxxx.olb) correspondant à la langue du projet peut être requise, mais demeurer introuvable. Causes et solutions de cette erreur :

•	La bibliothèque d'objets est absente, ne se trouve pas dans le répertoire attendu, ou a une version incorrecte.

Vérifiez que la bibliothèque d'objets se trouve dans le bon répertoire sur votre disque, tel que spécifié dans la documentation de l'application hôte.

Si la bibliothèque manquante est une version nationale installée par l'application hôte, vous pourriez simplement relancer le programme d'installation. Si un projet nécessite une bibliothèque d'objets d'une langue différente de celle accompagnant votre application hôte (par exemple, si une personne vous envoie un projet écrit sur une machine configurée dans une langue différente), vérifiez que la bonne version nationale de la bibliothèque d'objets Visual Basic est incluse avec le projet et installée à l'endroit prévu.

Les applications peuvent gérer différentes versions nationales de leurs bibliothèques d'objets. Pour trouver la version requise, ouvrez la boîte de dialogue Références, et vérifiez la langue indiquée en bas de celle-ci.

Les bibliothèques d'objets sont proposées dans différentes versions pour chaque plate-forme. Par conséquent, lorsque des projets sont transférés d'une plate-forme à l'autre, par exemple de Macintosh à Microsoft Windows, la version nationale adéquate de la bibliothèque référencée pour cette plate-forme doit être disponible à l'emplacement spécifié dans la documentation de votre application hôte. Notez que certains codes de langue sont composés de deux caractères, d'autres de trois.

Le nom de fichier de la bibliothèque d'objets Visual Basic a la structure suivante :

•	Windows : Code d'application + Code de langue + [Version].OLB. Par exemple :

La bibliothèque d'objets Visual Basic pour Applications pour la version 2 française était vafr2.olb.

•	Macintosh : Code d'application + Code de langue + [Version].OLB. Par exemple :

La bibliothèque d'objets Visual Basic pour Applications pour la version 2 française était VA FR 2 OLB.

Si vous ne pouvez pas trouver un projet ou une bibliothèque d'objets sur votre système, contactez l'auteur du projet référant. Si la bibliothèque manquante est une bibliothèque d'objets d'application Microsoft, vous pouvez l'obtenir de la façon suivante :

•	Si vous avez accès aux services de support technique électronique Microsoft, reportez-vous à la section de support technique de ce fichier d'aide. Dans les services électroniques, vous trouverez des informations sur l'utilisation de l'option de service appropriée.

•	Si vous n'avez pas accès au service de support technique électronique Microsoft, les bibliothèques d'objets Microsoft peuvent être obtenues sur demande à Microsoft. Pour savoir comment contacter votre agence de support produit Microsoft locale, reportez-vous à la section de support technique de ce fichier d'aide.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Bibliothèque d'objets non enregistrée

La bibliothèque d'objets Visual Basic pour Applications n'est plus un fichier autonome, mais est intégrée dans la bibliothèque de liaisons dynamiques (DLL).

Dans les versions antérieures, lorsque vous lanciez une application utilisant Visual Basic pour Applications, certaines bibliothèques d'objets étaient chargées. Cause et solution de cette erreur :

•	Vous avez tenté de charger une version précédente de la bibliothèque d'objets Visual Basic pour Applications (vaxxx.olb) ou des bibliothèques d'objets de l'application hôte. Cependant, la version nationale appropriée de ces bibliothèques d'objets est introuvable dans la base de registres de votre système.

Enregistrez de nouveau votre application. Sur Macintosh, supprimez le fichier vba.ini du dossier Macintosh Préférences et redémarrez votre application.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Langue de la bibliothèque d'objets incompatible avec le projet en cours

La référence n'a pas pu être ajoutée. Cause et solution de cette erreur :

•	Vous avez tenté d'ajouter une référence à une bibliothèque d'objets dont les paramètres régionaux ne sont pas compatibles avec les paramètres régionaux du projet courant. La référence n'a pas été ajoutée. Pour utiliser cette bibliothèque d'objets, il faut créer un projet dont les paramètres régionaux sont compatibles avec elle.

Essayez d'enregistrer Visual Basic pour Applications et l'application hôte pour la langue donnée. La bibliothèque d'objets devient alors disponible dans la boîte de dialogue Références.

Note   Lorsque Visual Basic est l'application hôte, il est impossible de changer le paramètre de langue du projet. Toutes les bibliothèques d'objets utilisées doivent être compatibles avec le paramètre English/U.S.


Type non géré dans Visual Basic

Certains types ne sont pas gérés dans Visual Basic. Cause et solution de cette erreur :

•	Vous avez tenté d'utiliser un type dans votre programme n'ayant aucun équivalent dans Visual Basic pour Applications. Par exemple, Visual Basic ne comportant aucun type pointeur ou entier non signé, cette erreur se produit si vous tentez de créer une variable de l'un de ces types à partir d'une bibliothèque d'objets. Dans l'exemple suivant, même si Rainbow est une structure correcte, Visual Basic ne peut pas créer de variables de ce type s'il contient un type que Visual Basic ne reconnaît pas :

Dim MyVar As Rainbow	' Provoque une erreur.

Si le type correspond à un type de paramètre correct pour une fonction dans une bibliothèque d'objets, cette erreur signifie simplement que vous ne pouvez pas créer de variable de ce type dans votre propre code. Bien que vous puissiez toujours déclarer les variables avec un type de données spécifié dans la documentation d'un objet, il existe souvent un équivalent Visual Basic. Par exemple, bien que Visual Basic ne comporte aucun type pointeur, vous pouvez passer un pointeur vers une fonction dans une fonction API à l'aide de l'opérateur AddressOf. En outre, vérifiez les sous-types du type Variant. Vous pouvez souvent les utiliser comme équivalents de types non directement gérés dans Visual Basic. Cependant, dans certains cas, Visual Basic n'offre aucun équivalent. Par exemple, les pointeurs de données ne sont pas disponibles.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Seuls des commentaires peuvent apparaître après End Sub, End Function ou End Property

Seuls les commentaires, les directives et les déclarations sont permises en dehors des procédures. Cause et solution de cette erreur :

•	Vous avez placé un code exécutable en dehors d'une procédure.

Toute ligne non déclarative en dehors d'une procédure doit commencer par un délimiteur de commentaire ('). Les instructions déclaratives doivent apparaître avant la première déclaration de procédure. Les commentaires ne sont pas pris en compte lors de l'exécution du code.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'argument optionnel doit être de type Variant ou intrinsèque avec une valeur par défaut

Les arguments optionnels peuvent avoir n'importe quel type de données intrinsèque, mais doivent correspondre à un type ayant une valeur par défaut. Cause et solution de cette erreur :

•	Vous avez tenté de spécifier Optional avec un paramètre n'ayant aucune valeur par défaut, par exemple un tableau.

Vérifiez que tout argument spécifié comme Optional a une valeur par défaut.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Option Private Module non autorisée dans un module objet

Option Private Module rend le contenu d'un module non disponible dans d'autres projets, tout en maintenant sa disponibilité pour votre projet. Cause et solution de cette erreur :

•	L'instruction Option Private Module apparaît dans un module objet.

Retirez l'instruction Option Private Module du module. Les modules d'objet ont par défaut les caractéristiques d'un Option Private Module. La modification de la valeur par défaut ne peut pas être effectuée à partir d'un code. Pour plus d'informations sur l'élargissement de la visibilité des membres d'un module objet, consultez la documentation de votre application hôte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Mémoire insuffisante ; certains espions ont pu être supprimés

Lors d'une saturation de la mémoire disponible, des expressions espionnes sont supprimées pour libérer de la mémoire et permettre une récupération. Cause et solution de cette erreur :

•	Vous avez chargé trop d'applications, de projets ou de modules.

Pour continuer à travailler, retirez les éléments non indispensables de la mémoire, notamment les applications, les projets ou les modules non nécessaires pouvant être chargés.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ressources insuffisantes

Certains types de ressources qualifiés de "descripteurs" sont utilisés en interne pour de nombreuses opérations. Cause et solution de cette erreur :

•	Votre code a atteint une limite de ressource.

Essayez d'enregistrer, de fermer et de recharger votre code. Si ce message d'erreur apparaît toujours, réduisez le nombre d'objets référencés dans le code.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


ParamArray doit être déclaré comme tableau Variant

Chaque argument d'un paramètre ParamArray peut être d'un type de données différent. Par conséquent, le paramètre lui-même doit être déclaré comme un tableau de type Variant. Vous pouvez également fournir n'importe quel nombre d'arguments à un paramètre ParamArray. Lorsque l'appel est effectué, chaque argument fourni dans l'appel devient un élément correspondant du tableau Variant. Par exemple :

Sub MySub(ParamArray VarArg())

. . .

End Sub

Call MySub ("Premier argument", 2, 3.54)

Causes et solutions de cette erreur :

•	Dans la définition de la procédure, le paramètre ParamArray est déclaré comme un tableau d'un type autre que Variant.

Redéclarez le type de paramètre comme un tableau d'éléments Variant.

•	Aucun type de données n'a été spécifié dans le paramètre ParamArray, mais la définition de procédure se trouvant dans la portée de l'instruction Deftype, le paramètre est implicitement déclaré avec un type autre que Variant.

Utilisez une clause explicite As Variant dans la spécification du paramètre ParamArray.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Pour plus d'informations sur cette erreur, consultez le fichier Readme

Certaines rubriques ont été ajoutées à ce produit une fois l'aide terminée. Vous trouverez des informations sur ces rubriques dans le fichier Readme de l'application hôte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les types énumérés privés et les types définis par l'utilisateur ne peuvent pas être utilisés comme paramètres ou valeurs de retour pour les procédures publiques, comme données des membres publics ou comme champs des types publics définis par l'utilisateur

Une procédure Public est visible dans tous les modules d'un projet, tandis qu'un type Private Enum n'est pas visible à l'extérieur de son propre module. Cause et solution de cette erreur :

•	Votre procédure Public est dans une classe Public, mais renvoie une valeur ou un paramètre défini dans un module standard ou dans une classe Private.

Déclarez le type Enum Public. La déclaration doit être dans un module de classe.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Procédure trop grande

Une fois compilé, la taille du code d'une procédure doit être inférieure à 64 Ko. Cause et solution de cette erreur :

•	La taille du code de cette procédure dépasse 64 Ko après compilation.

Fractionnez ce code et toute autre grande procédure en plusieurs procédures plus petites.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le projet contient trop de procédures, variables et noms de constantes

Les noms de procédure, de variable, de constante et de paramètre d'un projet sont stockés dans une table de noms. Cause et solution de cette erreur :

•	Le nombre de noms de la table de noms du projet dépasse 32 768.

La table de noms peut contenir certains duplicatas temporaires. Pour compacter la table de noms, enregistrez le projet sur un disque, puis fermez-le. Si le problème persiste après la réouverture du projet, réduisez le nombre de noms en réutilisant des noms de variables locales dans plusieurs procédures, puis, pour recompacter la table, enregistrez le projet, fermez-le et ouvrez-le de nouveau.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Projet introuvable

Le projet est introuvable. Cause et solution de cette erreur :

•	Vous avez spécifié un nom de projet introuvable.

Vérifiez que la spécification du projet ne comporte pas d'erreurs.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Nom qualifié interdit dans la portée du module

Dans des circonstances particulières, certaines applications hôtes ne permettent pas les appels de procédure incluant des noms qualifiés. Cause et solution de cette erreur :

•	Vous avez spécifié un nom de module dans un appel de procédure en utilisant la notation point (qualificateur.élément).

Cette erreur est probablement due au fait que l'application hôte connaît déjà le qualificateur spécifié et n'a pas besoin de cette information dans l'appel de procédure. Dans ce cas, vous pouvez simplement omettre le qualificateur. Recherchez dans la documentation de l'application hôte la raison de toute autre restriction sur les noms qualifiés.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le qualificateur doit être une collection

L'utilisation d'un point d'exclamation entre deux identificateurs est spécifique des collections. Cause et solution de cette erreur :

•	Vous avez utilisé un nom à gauche du point d'exclamation (!) ne correspondant pas à un nom de collection.

Si le nom est censé représenter une collection, vérifiez son orthographe. Notez que le point d'exclamation est également le caractère de déclaration de type pour le type de données Single. Si le nom en question n'est pas supposé représenter une collection, il se peut que le caractère de déclaration de type ! ajouté à un nom de variable ait été concaténé à un autre nom.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les limites de la plage ne sont pas spécifiées

Des restrictions sont imposées quant au mode de spécification du nombre d'éléments dans un tableau. Cause et solution de cette erreur :

•	Vous n'avez pas spécifié correctement les limites de votre tableau. Par exemple, les portées suivantes ne sont pas correctes :

Dim MyArray(10 To -5)	' Ordre décroissant interdit.

Dim MyArray(0 To 0)	' Aucun élément dans le tableau.

Vérifiez la syntaxe. Par exemple, la portée suivante n'est pas valide :

Dim MyArray(-5 To 10)

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


RSet autorisé seulement sur des chaînes

RSet permet de cadrer à droite des données de chaîne dans des chaînes à longueur fixe ou à longueur variable. Cause et solution de cette erreur :

•	Vous avez tenté d'utiliser l'instruction RSet sur une variable n'étant pas une chaîne.

Le cas échéant, tentez de convertir la variable en une chaîne. Sinon, n'utilisez pas RSet.

Note   Bien que l'instruction LSet puisse être utilisée pour affecter les éléments d'une variable du type défini par l'utilisateur aux éléments d'un type défini par l'utilisateur compatible, de telles affectations ne sont pas recommandées parce que leur portabilité n'est pas garantie.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur d'exécution <numéro> :

Cette erreur est définie par l'utilisateur, et a la cause et la solution suivantes :

•	Une erreur générée ne correspond pas à une erreur Visual Basic.

Traitez l'erreur selon les instructions de la documentation de l'objet ou de la bibliothèque d'objets l'ayant généré.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La chaîne recherchée est trop longue ou trop complexe

Les possibilités des critères spéciaux de Visual Basic ne sont pas illimitées. Cause et solution de cette erreur :

•	La chaîne recherchée spécifiée est trop longue, ou la combinaison de spécifications des caractères génériques ne peut pas être interprétée.

Réduisez la longueur ou la complexité de la chaîne recherchée et recommencez.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La chaîne recherchée doit être spécifiée

Vous devez préciser une chaîne recherchée. Cause et solution de cette erreur :

•	Vous avez tenté d'effectuer une opération de recherche sans indiquer de chaîne de comparaison.

Vous devez préciser la chaîne recherchée. Bien que vous puissiez spécifier une chaîne de longueur nulle ("") comme chaîne de remplacement, une chaîne de longueur nulle n'a aucune signification comme chaîne recherchée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Texte recherché introuvable

Le texte recherché est introuvable. Causes et solutions de cette erreur :

•	Aucun texte correspondant n'a été trouvé dans la portée de recherche spécifiée.

Vous pouvez élargir la portée de la recherche pour continuer celle-ci.

•	Vous n'avez pas spécifié de parenthèses ouvrantes lors de l'utilisation d'une expression de critères spéciaux.

Tapez la parenthèse ouvrante.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur d'accès : lecture/écriture impossible sur le disque

Des instructions Seek sont exécutées directement sur le disque. Causes et solutions de cette erreur :

•	Vous avez tenté de lire un disque ou un fichier protégé en écriture, en lecture seule ou verrouillé.

Retirez l'attribut de protection en écriture ou changez l'attribut de lecture seule ou le verrou. Notez que si le fichier est verrouillé par un autre processus, vous ne pouvez pas retirer le verrou.

•	Le fichier est devenu inaccessible, par exemple à la suite d'un changement physique de disque amovible.

Si le fichier a été transféré sur un autre disque, accédez-y sur ce disque. Sinon, vous ne pouvez pas accéder au fichier.

•	Vous avez tenté de lire un fichier de projet, une bibliothèque d'objets ou une bibliothèque de types, mais le fichier a été altéré.

Procurez-vous une nouvelle copie du fichier de bibliothèque ou de projet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Select Case sans End Select

Chaque structure Select Case doit être terminée par une instruction End Select. Cause et solution de cette erreur :

•	Vous avez utilisé une instruction Select Case sans instruction End Select correspondante.

Vérifiez la présence d'une structure Select Case...End Select correcte à l'intérieur d'une structure extérieure Select Case...End Select. Si vous avez imbriqué des instructions Select Case, chacune doit avoir une instruction End Select appariée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Expression espionne sélectionnée incorrecte

Il n'est pas toujours possible de sélectionner une expression espionne valide. Causes et solutions de cette erreur :

•	Vous avez sélectionné la commande Espion express, mais l'expression sélectionnée n'est pas correcte. Par exemple, vous ne pouvez pas espionner un commentaire ou un appel de procédure Sub.

Sélectionnez une expression valide, ou choisissez Ajouter un espion et tapez une expression valide.

•	L'expression espionne doit avoir une syntaxe de code correspondant aux paramètres régionaux du projet définissant l'expression espionnée.

Écrivez de nouveau une expression conforme aux paramètres régionaux.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Définir l'instruction suivante s'applique uniquement au code exécutable dans la procédure en cours

Vous pouvez sélectionner la commande Définir l'instruction suivante pour indiquer l'endroit de reprise d'un programme suspendu lors de la poursuite de l'exécution. Causes et solutions de cette erreur :

•	Lorsque vous avez sélectionné la commande, le curseur se trouvait sur une ligne ne contenant pas d'instructions exécutables.

Placez le curseur sur une ligne comportant une instruction exécutable et recommencez. Les déclarations, les étiquettes de ligne et les commentaires n'étant pas exécutables, les lignes comportant ces éléments ne peuvent pas constituer les cibles de la commande Définir l'instruction suivante.

•	Lorsque vous avez sélectionné la commande, le curseur se trouvait sur une ligne en dehors de la procédure actuellement exécutée.

Placez le curseur sur une ligne se trouvant à l'intérieur de la procédure actuellement exécutée.


SHARE.EXE requis

Le programme share.exe doit être exécuté lorsque vous lancez Visual Basic. Cause et solution de cette erreur :

•	Vous n'avez pas lancé share.exe avant de lancer Visual Basic.

Fermez votre application, lancez share.exe, puis relancez votre application. Pour ne plus rencontrer ce problème, placez une ligne supplémentaire contenant share.exe dans votre fichier autoexec.bat de façon à lancer ce programme automatiquement lors de la mise sous tension de l'ordinateur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Bibliothèque ou projet spécifiés déjà référencés

La boîte de dialogue Références affiche les bibliothèques et les projets référencés. Cause et solution de cette erreur :

•	Vous avez cliqué sur le bouton Parcourir dans la boîte de dialogue Références, puis sélectionné une bibliothèque de types ou un projet figurant déjà dans la zone Références disponibles de la boîte de dialogue Références.

Pour inclure un projet ou une bibliothèque de types dans votre projet, ouvrez la boîte de dialogue Références et vérifiez que la bibliothèque de types ou le nom de projet sont cochés.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Instruction non valide à l'intérieur du bloc Type

Seuls les noms d'élément, leurs clauses As type et des commentaires sont autorisés dans un bloc d'instructions Type...End Type. Cause et solution de cette erreur :

•	Vous avez placé une instruction incorrecte dans une définition de type défini par l'utilisateur.

Retirez tout élément n'étant ni un commentaire, ni un nom d'élément, ni une clause As type.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Instruction non valide en dehors du bloc Type

La syntaxe de déclaration de variables en dehors d'un bloc d'instructions Type...End Type est différente de la syntaxe de déclaration des éléments de type défini par l'utilisateur. Causes et solutions de cette erreur :

•	Vous avez tenté de déclarer une variable en dehors d'un bloc Type...End Type ou en dehors d'une instruction.

Lors de la déclaration d'une variable avec une clause As en dehors d'un bloc Type...End Type, utilisez l'une des instructions Dim, ReDim, Static, Public ou Private. Par exemple, la première déclaration de MyVar dans le code suivant génère cette erreur, tandis que les deuxième et troisième déclarations de MyVar sont valides :

MyVar As Double	' Syntaxe de déclaration incorrecte.

Dim MyVar As Double

Type AType

MyVar As Double	' Déclaration correcte

End Type	' car dans un bloc Type.

•	Vous avez utilisé une instruction End Type sans l'instruction Type correspondante.

Recherchez une instruction End Type non appariée, et faites précéder son bloc d'une instruction Type, ou supprimez l'instruction End Type si elle n'est pas nécessaire.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Instruction trop complexe

Visual Basic ne peut pas analyser cette instruction. Causes et solutions de cette erreur :

•	Cette instruction étant trop complexe, elle ne peut pas être analysée.

Essayez de fractionner l'instruction en plusieurs composantes plus petites ou remplacez les clauses conditionnelles complexes par une combinaison d'opérateurs logiques et d'instructions If...Then...Else.

•	Votre instruction ou fonction utilise un trop grand nombre d'appels de fonction imbriqués.

Effectuez les appels de fonction plus tôt et affectez des résultats à des variables spécifiques, puis utilisez les variables dans l'instruction causant cette erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Instructions ou étiquettes incorrectes entre Select Case et la première clause Case

Vous ne pouvez placer qu'un commentaire entre l'instruction Select Case et la première clause Case. Cause et solution de cette erreur :

•	Vous avez placé une instruction entre Select Case et sa première clause Case. Par exemple :

Select Case SomeVar

' Commentaire valide.

Stop	' Même une instruction Stop est incorrecte.

Case SomeValue

. . .

End Select

L'instruction Select Case doit être immédiatement suivie de sa première instruction Case. Si l'expression incriminée est un commentaire, faites-la précéder d'un délimiteur de commentaire ('). Sinon, positionnez correctement l'expression ou supprimez-la.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur de syntaxe

Visual Basic ne peut pas déterminer l'action à effectuer. Causes et solutions de cette erreur :

•	Une faute de frappe s'est glissée dans un mot clé ou un argument.

Les mots clés et les noms d'arguments nommés doivent correspondre exactement à ceux indiqués dans les spécifications de syntaxe. Vérifiez l'aide en ligne, puis corrigez les fautes de frappe.

•	Erreur de ponctuation.

Par exemple, lorsque vous omettez des arguments de position facultatifs, vous devez remplacer chaque argument omis par une virgule (,).

•	Une procédure n'est pas définie.

Vérifiez l'orthographe du nom de la procédure.

•	Vous avez tenté de spécifier Optional et ParamArray dans la même déclaration de procédure.

Un argument ParamArray ne peut pas être Optional. Choisissez l'un et supprimez l'autre.

•	Vous avez tenté de définir une procédure d'événement à l'aide d'un paramètre Optional ou ParamArray.

Supprimez le mot clé Optional ou ParamArray de la spécification du paramètre.

•	Vous avez tenté d'utiliser un argument nommé dans une instruction RaiseEvent.

Les événements ne gèrent pas les arguments nommés.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La DLL ou l'EXE compatible binaire contient un type d'implémentation dont la définition est introuvable

Si vous disposez d'un serveur compatible binaire qui implémente une interface contenue dans une autre DLL, vous devez être prudent lors de sa recompilation. Causes et solutions de cette erreur :

•	L'autre DLL a été recompilée en Compatible projet, ce qui modifie le GUID de l'interface. Étant donné qu'il ne s'agit pas d'une modification visible, l'erreur peut être inattendue. Elle peut également se produire si un tiers vous donne une DLL compatible projet à référencer.

En général, cette erreur se produit lorsque la DLL ou l'EXE compatible binaire d'un projet possède un fichier typelib comportant une référence altérée. Les références altérées se produisent lorsqu'un fichier typelib référencé est remplacé par un autre fichier (tel qu'un fichier DLL/EXE recompilé), lorsque vous supprimez le fichier typelib, ou lorsque vous amenez un typelib de référence sur une machine. Toutefois, quelle qu'en soit la raison, celle-ci ne déplace ni n'enregistre le typelib référencé.

Une correction possible consiste à obtenir une copie du fichier typelib référencé pour la placer sur votre machine, puis à l'enregistrer. Vous ne pouvez pas utiliser l'ancien fichier car celui-ci est remplacé à la recompilation. Si cette solution échoue, la seule solution consiste à ne plus utiliser le fichier DLL/EXE comme version compatible binaire.


La DLL ou l'EXE compatible binaire contient un type de paramètre ou un type de retour dont la définition est introuvable

Si vous disposez d'un serveur compatible binaire qui comporte un paramètre ou un type de retour contenu dans une autre DLL, vous devez être prudent lors de sa recompilation. Causes et solutions de cette erreur :

•	Lorsque vous affectez à un projet la valeur Compatible binaire, puis que vous le recompilez, la compatibilité de projet est définie automatiquement, ce qui modifie le GUID interne de l'interface. Étant donné qu'il ne s'agit pas d'une modification visible, l'erreur peut être inattendue.

En général, cette erreur se produit lorsque la DLL ou l'EXE compatible binaire d'un projet possède un fichier typelib comportant une référence altérée. Les références altérées peuvent se produire lorsqu'un typelib référencé est remplacé par un autre fichier (tel qu'un fichier DLL/EXE recompilé), lorsque vous supprimez le fichier typelib, ou lorsque vous amenez un typelib de référence sur une machine. Toutefois, quelle qu'en soit la raison, celle-ci ne déplace ni n'enregistre le typelib référencé.

Une solution possible consiste à obtenir une copie du fichier typelib référencé pour la placer sur votre machine, puis à l'enregistrer. Vous ne pouvez pas utiliser l'ancien fichier car celui-ci est remplacé à la recompilation. Si cette solution échoue, la seule solution consiste à ne plus utiliser le fichier DLL/EXE comme version compatible binaire.


Il se peut que cette modification rende le module de classe incompatible avec le composant ActiveX compatible spécifié précédemment

Si un élément compatible ActiveX existe déjà sous forme de fichier exécutable précédemment distribué ou de bibliothèque de liaisons dynamiques (DLL), il ne faut surtout pas modifier son interface. Cause et solution de cet avertissement :

•	Vous tentez de modifier le code d'un module objet déjà représenté par un fichier exécutable.

Si vous effectuez des modifications ayant une incidence sur l'interface de l'objet, la classe n'offrira pas de compatibilité ascendante avec la version précédente et il ne sera pas possible d'utiliser la nouvelle version à la place de l'ancienne pour le code compilé.

Dans Visual Basic, le nom de l'élément compatible ActiveX apparaît dans la boîte de dialogue affichée lorsque vous sélectionnez Options dans le menu Outils.

Important   Pour accepter la modification, cliquez sur OK dans la boîte de dialogue du message d'erreur. Si vous souhaitez annuler la modification, cliquez sur le bouton Annuler.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La zone de recherche spécifiée a été parcourue

Lorsque vous cliquez sur les boutons Suivant et Remplacer dans la boîte de dialogue Remplacer, le nombre total de remplacements n'est pas spécifié. Cause et effet de cette erreur :

•	Lors de l'exécution d'une opération recherche et remplacement, vous pouvez préciser la zone à couvrir (sélection, procédure, module ou projet).

Si une zone est sélectionnée, elle constitue la région de recherche par défaut. Si aucune zone n'est sélectionnée, la zone de recherche par défaut correspond au module courant. Pour changer la portée d'une recherche, sélectionnez une autre option dans la boîte de dialogue Remplacer.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La zone de recherche spécifiée a été parcourue. 1 remplacement effectué

Lorsque vous cliquez sur le bouton Remplacer tout dans la boîte de dialogue Remplacer, ce message indique le nombre total de remplacements. Cause et effet de cette condition :

•	Pendant l'opération de recherche et remplacement, une seule instance du texte spécifié a été trouvée, et le remplacement a été effectué. Vous pouvez spécifier la zone à couvrir (sélection, procédure, module ou projet).

Si une zone est sélectionnée, elle constitue la zone de recherche par défaut. Si aucune zone n'est sélectionnée, la zone de recherche par défaut correspond au module courant. Pour changer la portée d'une recherche, sélectionnez une autre option dans la boîte de dialogue Remplacer.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La zone de recherche spécifiée a été parcourue. 'n' remplacements effectués

Lorsque vous cliquez sur le bouton Remplacer tout dans la boîte de dialogue Remplacer, ce message indique le nombre total de remplacements. Cause et effet de cette condition :

•	Lors de l'exécution d'une opération recherche et remplacement, vous pouvez préciser la zone à couvrir (sélection, procédure, module ou projet).

Si une zone est sélectionnée, elle constitue la zone de recherche par défaut. Si aucune zone n'est sélectionnée, la zone de recherche par défaut correspond au module courant. Pour changer la portée d'une recherche, sélectionnez une autre option dans la boîte de dialogue Remplacer.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le fichier .VBP de ce projet contient un identificateur de références de bibliothèque incorrect ou endommagé

Lorsque vous enregistrez un projet pour lequel une référence a été sélectionnée dans la boîte de dialogue Références, une entrée est effectuée dans le fichier.vbp du projet (nommé fichier .mak dans les versions antérieures de Visual Basic). Par exemple, l'entrée d'un objet d'accès aux données est :

Reference=*\G{00025E01-0000-0000-C000-000000000046}#0.0#0#C:\WINDOWS\SYSTEM\DAO2516.DLL#Microsoft

DAO 2.5 Object Library

Cette erreur se produit lors de l'édition ou de l'altération d'une telle référence. Cause et solution de cette erreur :

•	Une référence dans le fichier .vbp est devenue incorrecte.

Supprimez la ligne incorrecte du fichier .vbp et cochez la bibliothèque d'objets appropriée dans la boîte de dialogue Références accessible depuis le menu Outils. Enregistrez ensuite le projet pour entrer les informations appropriées dans le fichier .vbp.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce composant ne déclenche aucun événement

Une procédure d'événement doit correspondre à un événement pouvant être déclenché par un objet. Cause et solution de cette erreur :

•	Vous avez écrit une procédure d'événement pour un objet ne provoquant pas d'événements.

Vous ne pouvez pas écrire de procédure d'événement ne correspondant pas à un événement.

•	Vous avez tenté d'utiliser WithEvents sur une classe ne provoquant pas d'événements.

Vous ne pouvez pas utiliser WithEvents sur ce type de classe.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Trop d'arguments

Une procédure ne peut pas comporter plus de 60 arguments. Cause et solution de cette erreur :

•	Vous avez spécifié plus de 60 arguments.

Si vous devez spécifier plus d'arguments, définissez un type défini par l'utilisateur pour collecter plusieurs arguments de type différent, ou utilisez un paramètre ParamArray comme argument final et passez-lui plusieurs valeurs. Vous pouvez également passer des arguments multiples en les plaçant dans un tableau.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Trop de dimensions

Les tableaux ne peuvent pas avoir plus de 60 dimensions. Causes et solutions de cette erreur :

•	Vous avez tenté de déclarer un tableau comportant plus de 60 dimensions.

Réduisez le nombre de dimensions.

•	Votre déclaration de tableau respecte les limites spécifiées, mais il n'y a pas assez de mémoire pour créer le tableau.

Libérez de la mémoire ou réduisez le nombre de dimensions. Si votre tableau est un tableau de type Variant ou s'il est contenu dans une variable de type Variant, vous pourriez être en mesure de créer le tableau avec le même nombre de dimensions en le redéclarant avec le type de données de ses éléments. Par exemple, s'il contient uniquement des nombres entiers, sa déclaration sous forme de tableau de type Integer utilise moins de mémoire que si chaque élément était de type Variant.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Trop de caractères de continuité de ligne

Une limite est imposée quant au nombre de lignes que vous pouvez joindre avec des caractères de continuité de ligne. Cause et solution de cette erreur :

•	Votre code comporte plus de 25 lignes jointes par des caractères de continuité de ligne ou une ligne composée de plus de 24 caractères de continuité de ligne successifs.

Allongez physiquement certaines des lignes concernées pour réduire le nombre de caractères de continuité de ligne requis ou fractionnez la structure en plusieurs instructions.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Trop de variables locales non statiques

Les variables locales, non statiques sont définies à l'intérieur d'une procédure et réinitialisées à chaque appel de la procédure. Cause et solution de cette erreur :

•	La somme des besoins en mémoire des variables locales et non statiques de cette procédure et des variables temporaires générées par le compilateur est supérieure à 32 Ko.

Déclarez certaines de vos variables avec l'instruction Static. Les variables de type Static conservent leurs valeurs entre les invocations de procédure parce qu'elles sont allouées à partir de ressources mémoire différentes des variables non statiques.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Trop de variables de niveau module

Les variables de niveau module sont déclarées dans la section déclaration d'un module, avant les procédures du module. Cause et solution de cette erreur :

•	La somme des besoins en mémoire de toutes les variables de niveau module dans ce module est supérieure à 64 Ko.

Cette valeur correspond à la limite de stockage du module. Vous pouvez éventuellement déclarer certaines de vos variables comme Public dans un autre module, ou si certaines variables de niveau module sont employées uniquement dans une procédure, les déclarer dans celle-ci. En revanche, si vous avez déclaré des variables au niveau module parce que vous souhaitiez qu'elles conservent leur valeur entre appels de procédure, vous pouvez les déclarer comme Static dans la procédure où elles sont référencées.

Note   L'espace disponible peut varier selon le système d'exploitation utilisé.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le caractère de déclaration de type ne correspond pas au type de données déclaré

Vous ne pouvez pas changer le type de données d'une variable en ajoutant le caractère de déclaration de type d'un autre type. Cause et solution de cette erreur :

•	Vous avez déclaré une variable d'un type spécifique, fait référence à une variable du même nom dans la même portée, puis ajouté un caractère de déclaration de type incohérent.

Si vous souhaitez modifier le type de données d'une variable, déclarez la variable avec le type Variant. Si vous avez simplement ajouté un caractère de déclaration de type, supprimez-le ou modifiez-le.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Caractère de déclaration de type non autorisé

Bien que l'utilisation de caractères de déclaration de type soit permis dans Visual Basic, certains types de données (notamment Byte, Boolean, Date, Object et Variant) ne sont associés à aucun caractère de déclaration de type. Causes et solutions de cette erreur :

•	Vous avez tenté d'utiliser un caractère de déclaration de type dans la déclaration d'une variable utilisant la clause As, par exemple, avec Dim, Static, Public, etc.

Retirez le caractère de déclaration de type, ou retirez la clause As.

•	Vous avez tenté d'utiliser un caractère de déclaration de type dans une référence à une variable qui était implicitement déclarée sans caractère de déclaration de type :

MyVar = 20	' Déclaration implicite.

MyVar% = 25	' Génère une erreur.

Supprimez le caractère de déclaration de type ou redéclarez la variable initiale.

Note   Si une déclaration de variable explicite contient un caractère de déclaration de type, l'utilisation du caractère est facultative dans les références ultérieures. Par exemple :

Dim MyStr$

MyStr = "Ayant été explicitement déclarée, le $ est facultatif."

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Caractère de déclaration de type requis

L'utilisation obligatoire de caractères de déclaration de type est fonction de la forme de déclaration de l'identificateur. Cause et solution de cette erreur :

•	Une variable ayant été déclarée implicitement avec des caractères de déclaration de type a été référencée sans caractère de déclaration de type. Par exemple :

MyStr$ = "Déclaration implicite"

MyStr = "Référence à MyStr$, mais une erreur se" & _

 " produit lorsqu'elle est appelée MyStr."

Employez une déclaration explicite, ou ajoutez le caractère de déclaration de type aux références ultérieures.

Note   Si une déclaration de variable explicite contient un caractère de déclaration de type, l'utilisation du caractère est facultative dans les références ultérieures. Par exemple :

Dim MyStr$

MyStr = "Ayant été déclarée explicitement, le $ est facultatif."

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Incompatibilité de type : tableau ou type défini par l'utilisateur attendu

Le type d'un argument ou d'un paramètre indique s'il s'agit d'un tableau ou d'un type défini par l'utilisateur. Cause et solution de cette erreur :

•	Votre argument a spécifié un élément simple d'un tableau ou un type défini par l'utilisateur, ou une variable simple, un littéral ou une constante. Cependant, il est passé à un paramètre attendant un tableau entier ou un type défini par l'utilisateur.

Changez l'argument ou changez la définition du paramètre.

•	Votre argument a spécifié un tableau ou un type défini par l'utilisateur, mais il n'était pas du même type que le paramètre.

Passez un tableau du type prévu ou changez la définition de la déclaration du paramètre.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de lire sur le disque

Incident général de lecture d'un disque. Causes et solutions de cette erreur :

•	Le clapet du lecteur n'est pas fermé.

S'il s'agit d'un disque amovible, vérifiez le clapet du lecteur. Fermez-le correctement si nécessaire.

•	Le disque peut avoir été introduit à l'envers.

Réintroduisez-le à l'endroit.

•	Le disque peut ne pas être correctement formaté.

Reformatez-le si vous n'avez pas besoin des données qu'il contient.

•	Vous subissez des incidents réseau.

Essayez de redémarrer le réseau.

•	Vous avez placé un disque d'une certaine densité dans un lecteur ne pouvant pas le lire.

Utilisez un autre lecteur ou copiez les informations désirées sur un disque pouvant être lu sur votre lecteur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'écrire sur le disque

Incident général d'écriture sur un disque. Causes et solutions de cette erreur :

•	Le clapet du lecteur n'est pas bien fermé.

S'il s'agit d'un disque amovible, vérifiez le clapet du lecteur. Fermez-le correctement si nécessaire.

•	Le disque a été introduit à l'envers.

Réintroduisez-le à l'endroit.

•	Le disque peut ne pas avoir été correctement formaté.

Reformatez-le si vous n'avez pas besoin des données qu'il contient.

•	Vous subissez des incidents réseau.

Essayez de redémarrer le réseau.

•	Vous avez placé un disque d'une certaine densité dans un lecteur ne pouvant y écrire.

Utilisez un autre lecteur ou copiez les informations désirées sur un disque pouvant être lu sur votre lecteur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur inattendue ; veuillez prendre contact avec le support technique Microsoft

Cette erreur pourrait être grave. Cause et solution de cette erreur :

•	Une erreur imprévue s'est produite dans l'application hôte ou dans Visual Basic.

Cette erreur n'est pas nécessairement grave. Cependant, il convient d'en noter le numéro et de la signaler au support technique Microsoft.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Parenthèses non appariées dans la chaîne recherchée

Une parenthèse ouvrante doit être appariée à une parenthèse fermante. Cause et solution de cette erreur :

•	Vous avez ouvert une paire de parenthèses dans une chaîne recherchée, mais ne l'avez pas fermée avec une parenthèse fermante.

Placez une parenthèse fermante à l'endroit approprié.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Langue du projet non reconnue

Les paramètres régionaux de code spécifiés pour le projet à charger ne sont actuellement pas gérés par cette application. Causes et solutions de cette erreur :

•	Le projet a été créé sur un système gérant les paramètres régionaux de code, mais a été transféré sur un système où ces paramètres ne sont pas reconnus. Par exemple, la version du fichier ole2nls.dll sur la machine en cours peut ne pas reconnaître les paramètres régionaux de code.

Installez la bibliothèque de liaisons dynamiques (DLL) adéquate sur le système en cours.

•	La bibliothèque d'objets du projet est introuvable.

Vérifiez que les bibliothèques d'objets adéquates sont disponibles, par exemple, vérifiez que le chemin d'accès inclut leurs répertoires.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Un type défini par l'utilisateur ne peut être passé par valeur (ByVal)

Les types définis par l'utilisateur peuvent être passés uniquement par référence (par défaut), et non par valeur. L'erreur n'est signalée que lors de l'appel. Cause et solution de cette erreur :

•	Vous avez utilisé un mot clé ByVal dans la définition d'un paramètre représentant un type défini par l'utilisateur.

Retirez le mot clé ByVal. Pour éviter que des modifications soient répercutées au demandeur, déclarez (Dim) une variable temporaire du type et passez-la dans la procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Type défini par l'utilisateur non défini

Vous pouvez créer vos propres types de données dans Visual Basic, mais ils doivent d'abord être définis dans une instruction Type...End Type ou dans une bibliothèque d'objets ou dans une bibliothèque de types correctement enregistrée. Causes et solutions de cette erreur :

•	Vous avez tenté de déclarer une variable ou un argument avec un type de données non défini ou vous avez spécifié une classe ou un nom d'objet inconnu.

Utilisez l'instruction Type dans un module pour définir un nouveau type de données. Si vous tentez de créer une référence à une classe, celle-ci doit être visible pour le projet. Si vous faites référence à une classe dans votre programme, vous devez avoir un module de classe du nom spécifié dans votre projet. Vérifiez l'orthographe du nom du type ou du nom de l'objet.

•	Le type à déclarer se trouve dans un autre module, mais a été déclaré Private.

Placez la définition du type dans un module standard où il peut être Public.

•	Le type est correct, mais la bibliothèque d'objets ou la bibliothèque de types dans laquelle il est défini n'est pas enregistrée dans Visual Basic.

Affichez la boîte de dialogue Références, puis sélectionnez la bibliothèque d'objets ou la bibliothèque de types appropriée. Par exemple, si vous ne cochez pas la ligne concernant les Objets d'accès aux données dans la boîte de dialogue Références, les types Database, Recordset et TableDef ne sont pas reconnus et les références à ceux-ci dans votre code causent cette erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Type défini par l'utilisateur sans membre interdit

Les types définis par l'utilisateur doivent comporter au moins un élément. Cause et solution de cette erreur :

•	Vous avez spécifié un type défini par l'utilisateur vide dans une définition Type...End Type.

Vérifiez que l'instruction Type ne comporte pas de délimiteurs de commentaire mal placés.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Variable non définie

Vous utilisez l'instruction Option Explicit pour que vos modules ne comportent pas de variables non déclarées et pour éviter que des fautes de frappe ne créent accidentellement de nouvelles variables. Cause et solution de cette erreur :

•	Vous avez utilisé une instruction Option Explicit nécessitant la déclaration explicite de variables, mais avez employé une variable sans la déclarer.

Déclarez explicitement la variable, ou modifiez l'orthographe de la variable pour qu'elle corresponde à la variable souhaitée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Variable pas encore créée dans ce contexte

Une variable doit être déclarée avant d'être affichée dans la fenêtre Espions ou la fenêtre Exécution, et avant de pouvoir lui attribuer des valeurs dans la fenêtre Exécution. Causes et solutions de cette erreur :

•	Vous avez tenté d'afficher la valeur d'une variable locale que vous venez d'entrer dans votre code avant d'exécuter au moins une commande Pas à pas dans le mode Arrêt.

Parcourez le code pas à pas pour forcer la compilation de la nouvelle instruction.

•	Vous avez tenté d'afficher une valeur d'une variable locale que vous venez d'ajouter dans une procédure plus loin dans la chaîne d'appel en passant à la procédure à l'aide de la boîte de dialogue Appels.

Vous devez réellement revenir à la procédure pour pouvoir afficher la variable dans son contexte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Variable requise. Impossible de l'affecter à cette expression

Cette erreur se produit généralement lorsque vous tentez d'attribuer une valeur à un élément ne pouvant pas accepter cette attribution. Causes et solutions de cette erreur :

•	Vous avez tenté d'utiliser une expression numérique comme argument de la fonction Len.

La fonction Len n'accepte pas d'expression numérique, de littéral numérique ou d'expression numérique binaire, mais accepte une chaîne ou une variable numérique, une expression de chaîne, ou une variable de type défini par l'utilisateur.

•	Vous avez utilisé un appel de fonction ou une expression comme argument à Input #, Let, Get ou Put. Par exemple, vous pourriez avoir employé un argument comme référence à une variable de tableau alors qu'il s'agissait d'un appel à une fonction du même nom.

Input #, Let, Get et Put n'acceptent pas d'appel de fonction comme argument.

•	Vous avez tenté d'attribuer une valeur à un identificateur précédemment déclaré comme constante.

Choisissez un autre nom pour l'identificateur.

•	Vous avez tenté d'utiliser un élément non-variable comme compteur de boucle dans une structure For...Next.

Utilisez une variable comme compteur.

•	Vous avez tenté d'affecter une valeur à une propriété en lecture seule ou à une expression formée de plusieurs variables (telles que X + Y). Une affectation place une valeur à une adresse mémoire. L'expression spécifiée doit représenter un emplacement unique, permettant l'écriture.

Écrivez de nouveau l'affectation en la destinant à un nom de variable simple pouvant accepter les données.

•	Vous avez tenté d'utiliser une variable non déclarée définie comme constante dans une bibliothèque de types.

Utilisez un nom différent pour la variable ou déclarez-la explicitement.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Avertissement : les paramètres de langage personnalisés ne sont pas portables

Certains paramètres de langue ne sont pas portables. Cause et solution de cet avertissement :

•	Vous avez utilisé un paramètre de langue personnalisé dans votre code.

Lorsque vous choisissez un paramètre de langue/pays personnalisé pour votre code, les conventions de langue utilisées dans votre code doivent correspondre à celles définies dans le Panneau de configuration du système. Vous pouvez utiliser des paramètres régionaux de code personnalisé, mais votre code peut ne pas fonctionner avec d'autres paramètres régionaux ou sur d'autres systèmes comportant des paramètres différents. L'application hôte analyse certaines chaînes sur la base des paramètres du Panneau de configuration de la machine sur laquelle elle est exécutée.

Si les paramètres du Panneau de configuration de la machine cible ne sont pas les mêmes que ceux de la machine sur laquelle le code a été écrit, les chaînes analysées par une application hôte ne fonctionnent pas, notamment dans le cas d'un code employant le séparateur décimal spécifique des paramètres régionaux. Vous ne devez donc pas utiliser de paramètre de langue personnalisé si vous prévoyez d'envoyer votre code à d'autres utilisateurs, choisissez plutôt des paramètres régionaux prédéfinis.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Wend sans While

Chaque instruction Wend doit être précédée d'une instruction While appariée. Cause et solution de cette erreur :

•	Vous avez employé une instruction Wend non précédée d'une instruction While.

Vérifiez l'absence d'une boucle sans fin imbriquée dans la boucle While...Wend causant l'erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


While sans Wend

Une instruction While est employée sans instruction Wend appariée. Cause et solution de cette erreur :

•	Vous avez ouvert une structure While...Wend sans la fermer.

Vérifiez la présence d'une structure While...Wend mal appariée à l'intérieur de la structure extérieure While...Wend.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'objet de With doit être de type défini par l'utilisateur, Object ou Variant

Le bloc With...End With ne peut pas être utilisé avec tous les types de variable. Cause et solution de cette erreur :

•	Vous avez tenté d'utiliser une variable n'étant pas de type Object, défini par l'utilisateur ou Variant contenant un objet à l'intérieur d'un bloc With.

Vérifiez que vous avez bien orthographié le nom de l'objet, le type défini par l'utilisateur ou la variable de type Variant.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Nombre de dimensions incorrect

Vous devez faire référence à un tableau avec des index correspondant au même nombre de dimensions figurant dans la déclaration du tableau. Cause et solution de cette erreur :

•	Vous avez fait référence à un tableau avec un nombre différent du nombre de dimensions réelles du tableau. Par exemple, une erreur se produit si vous faites référence à un tableau par X(2,4) (un tableau à deux dimensions) lorsqu'il a été défini par Dim X(5) (un tableau à une dimension).

Vérifiez la déclaration du tableau et, dans la référence, utilisez un index pour chaque dimension de la déclaration.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette action va réinitialiser votre projet, voulez-vous continuer ?

Vous pouvez éditer le code en mode Arrêt, mais certaines modifications interdisent la poursuite de l'exécution. Cause et solution de cette erreur :

•	Vous avez tenté une modification interdisant la poursuite de l'exécution. Par exemple, vous avez déclaré une variable statique.

Si vous sélectionnez Oui, l'exécution prend fin et vous pouvez modifier le code. Si vous sélectionnez Non, vous pouvez poursuivre l'exécution du code à partir de l'endroit où il a été suspendu.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le bloc #If doit se terminer par #EndIf

#If est une directive de compilation conditionnelle. Cause et solution de cette erreur :

•	Un bloc #If a été détecté mais n'est pas terminé par un #End If.

Ajoutez un  #End If à la position appropriée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les modules objet privés ne peuvent être utilisés dans les modules objet publics comme paramètres ou types renvoyés pour les procédures publiques, comme membres des données publiques ou comme champs des types publics définis par l'utilisateur

Cause et solution de cette erreur :

•	Vous avez tenté d'utiliser un module objet privé comme paramètre d'un module objet public, ou comme type renvoyé pour une procédure publique, un membre de données, ou comme champ d'un type public défini par l'utilisateur, ce qui n'est pas autorisé.


Seuls les types publics définis par l'utilisateur dans les modules objet publics peuvent être utilisés comme paramètres ou types renvoyés pour les procédures publiques des modules de classe ou comme champs des types publics définis par l'utilisateur

Cause et solution de cette erreur :

•	Vous avez tenté d'utiliser un type public défini par l'utilisateur comme paramètre ou comme type renvoyé pour une procédure publique d'un module de classe, ou comme champ d'un type public défini par l'utilisateur. Seuls les types publics définis par l'utilisateur dans un module d'objet public peuvent être utilisés de cette façon.


La bibliothèque d'objets est incorrecte ou contient des références à des définitions d'objets introuvables

Cause et solution de cette erreur :

•	Une bibliothèque d'objets contient des références à des définitions d'objets introuvables ou est incorrecte.


Cet argument n'est pas facultatif (erreur 449)

Le nombre et les types des arguments doivent correspondre à ceux attendus. Causes et solutions de cette erreur :

•	Nombre d'arguments incorrect.

Fournissez tous les arguments nécessaires. Par exemple, la fonction Left requiert deux arguments, le premier représentant la chaîne de caractères traitée, le second le nombre de caractères à renvoyer à partir de la gauche de la chaîne. Aucun argument n'étant facultatif, les deux doivent être fournis.

•	L'argument omis n'est pas facultatif.

Un argument ne peut être omis d'un appel à une procédure définie par l'utilisateur que s'il a été déclaré Optional dans la déclaration de procédure. Fournissez l'argument dans l'appel ou déclarez le paramètre Optional dans la définition.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Convention d'appel de DLL incorrecte (erreur 49)

Les arguments passés à une routine de bibliothèque de liaisons dynamiques (DLL) ou à une routine de ressource de code Macintosh doivent correspondre exactement à ceux attendus par la routine. Les conventions d'appel concernent le nombre, le type et l'ordre des arguments. Causes et solutions de cette erreur :

•	Votre programme appelle une routine dans une DLL (sous Windows) ou une routine de ressource (sur Macintosh) qui passe un type d'argument incorrect.

Vérifiez que tous les types d'argument sont conformes à ceux spécifiés dans la déclaration de la routine que vous appelez.

•	Votre programme appelle une routine dans une DLL (sous Windows) ou une routine de ressource (sur Macintosh) qui qui passe un nombre incorrect d'arguments.

Vérifiez que vous passez le même nombre d'arguments que celui indiqué dans la déclaration de la routine que vous appelez.

•	Votre programme appelle une routine dans une DLL, mais n'utilise pas la convention d'appel StdCall.

Si la routine DLL attend des arguments par valeur, vérifiez que ByVal est spécifié pour ces arguments dans la déclaration de la routine.

•	Votre instruction Declare pour une DLL Windows inclut CDecl.

Le mot-clé CDecl s'applique uniquement au Macintosh.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Mode d'accès au fichier incorrect (erreur 54)

Les instructions utilisées pour la manipulation du contenu d'un fichier doivent être adaptées au mode d'ouverture du fichier. Causes et solutions de cette erreur :

•	Une instruction Put ou Get spécifie un fichier séquentiel.

Put et Get ne peuvent se référer qu'aux fichiers ouverts en accès Random ou Binary.

•	Une instruction Print # spécifie un fichier ouvert dans un mode d'accès autre que Output ou Append.

Utilisez une instruction différente pour placer des données dans le fichier ou ouvrez de nouveau ce dernier dans un mode approprié.

•	Une instruction Input # spécifie un fichier ouvert pour un accès autre que Input.

Utilisez une instruction différente pour placer les données dans le fichier ou ouvrez de nouveau ce dernier en mode Input.

•	Vous avez tenté d'écrire dans un fichier en lecture seule.

Changez l'état lecture-écriture du fichier ou ne tentez pas d'y écrire.

Pour plus d'informations, sélectionnez l'élément en question et F1 (sous Windows) ou AIDE (sur Macintosh).


Nom ou numéro de fichier incorrect (erreur 52)

Une erreur est survenue lors d'une tentative d'accès au fichier spécifié. Causes et solutions de cette erreur :

•	Une instruction se réfère à un fichier avec un numéro de fichier ou un nom de fichier qui :

•	N'est pas spécifié dans l'instruction Open ou a été spécifié dans une instruction Open, mais a été fermé depuis.

Spécifiez le nom de fichier dans une instruction Open. Notez que si vous avez spécifié l'instruction Close sans arguments, vous avez peut-être fermé accidentellement tous les fichiers actuellement ouverts, rendant non valides tous les numéros de fichier.

•	N'est pas dans la plage des numéros de fichier (1 – 511).

Si votre code génère des numéros de fichier par algorithme, vérifiez que ces numéros sont valides.

•	Un nom ou un numéro est incorrect.

Les noms de fichier doivent se conformer aux conventions du système d'exploitation ainsi qu'aux règles de codage des fichiers Basic. Dans Microsoft Windows, utilisez les conventions suivantes pour nommer les fichiers et les répertoires :

•	Le nom d'un fichier ou d'un répertoire peut être composé de deux parties : un nom et une extension facultative. Les deux parties sont séparées par un point, par exemple, monfichier.nou.

•	Le nom peut compter jusqu'à 255 caractères.

•	Le nom peut commencer par une lettre ou un chiffre. Il peut contenir n'importe quels caractères majuscules ou minuscules (les majuscules et les minuscules ne sont pas différenciées dans les noms de fichiers) à l'exception des caractères suivants : guillemets ("), apostrophe ('), barre oblique (/), barre oblique inverse (\), deux-points (:) et barre verticale (|).

•	Le nom peut contenir des espaces.

•	Les noms suivants sont réservés et ne peuvent pas être utilisés pour des fichiers ou des répertoires : CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN et NUL. Par exemple, si vous tentez de nommer un fichier PRN dans une instruction Open, l'imprimante par défaut devient simplement la destination des instructions Print # et Write # dirigées vers le nom de fichier spécifié dans l'instruction Open.

•	Les exemples suivants correspondent à des noms de fichier Microsoft Windows corrects :

LETTRE.DOC

Mon Mémo.Txt

BUDGET.92

12345678.901

Deuxième Essai.Rpt

•	Sur Macintosh, un nom de fichier se compose de tout caractère (y compris les espaces) à l'exception des deux points (:). Les caractères Null (Chr(0)) sont interdits.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Longueur d'enregistrement incorrecte (erreur 59)

La longueur d'une variable d'enregistrement dans une instruction Get ou Put doit être celle spécifiée dans son instruction Open correspondante. Causes et solutions de cette erreur :

•	La longueur de la variable d'enregistrement diffère de la longueur spécifiée dans l'instruction Open correspondante.

Vérifiez que la somme des tailles des variables de longueur fixe dans le type défini par l'utilisateur définissant le type de la variable de l'enregistrement a la valeur indiquée dans la clause Len de l'instruction Open. Dans l'exemple suivant, supposons que RecVar est une variable du type approprié. Vous pouvez utiliser la fonction Len pour spécifier la longueur, de la façon suivante :

Open MyFile As #1 Len = Len(RecVar)

•	La variable dans une instruction Put est (ou inclut) une chaîne de longueur variable.

Le descripteur à 2 octets étant toujours ajouté à une chaîne de longueur variable placée dans un fichier à accès aléatoire avec Put, la chaîne de longueur variable doit être plus courte d'au moins 2 caractères que la longueur d'enregistrement spécifiée dans la clause Len de l'instruction Open.

•	La variable dans une instruction Put est (ou inclut) une variable de type Variant.

Comme les chaînes de longueur variable, les types de données Variant requièrent un descripteur à 2 octets. Les variables de type Variant contenant des chaînes de longueur variable requièrent un descripteur à 4 octets. Par conséquent, pour les chaînes de longueur variable dans une variable de type Variant, la chaîne doit être plus courte d'au moins 4 octets que la longueur d'enregistrement spécifiée dans la clause Len.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Numéro d'enregistrement incorrect (erreur 63)

Une erreur est survenue lors d'une tentative d'accès à un fichier. Cause et solution de cette erreur :

•	Le numéro d'enregistrement dans une instruction Put ou Get est inférieur ou égal à zéro.

Vérifiez les calculs utilisés dans la génération du numéro d'enregistrement. Vérifiez que les variables contenant le numéro d'enregistrement ou utilisées dans le calcul des numéros d'enregistrement ne comportent pas de fautes de frappe. Un nom de variable mal orthographié est implicitement déclaré et mis à zéro, sauf si vous avez correctement placé Option Explicit dans le module.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de créer le fichier temporaire nécessaire (erreur 322)

La création d'un fichier exécutable requiert la création de fichiers temporaires. Cause et solution de cette erreur :

•	Le lecteur contenant le répertoire spécifié dans la variable d'environnement TEMP est plein.

Supprimez des fichiers du lecteur plein ou spécifiez un autre lecteur dans la variable d'environnement TEMP.

•	La variable d'environnement TEMP spécifie un lecteur ou un répertoire incorrect ou en lecture seule.

Spécifiez un lecteur valide pour la variable d'environnement TEMP ou retirez la restriction lecture seule du lecteur ou du répertoire actuellement spécifié.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'exécuter l'opération requise (erreur 17)

Une opération qui invaliderait l'état courant du projet ne peut pas être effectuée. Cause et solution de cette erreur :

•	L'opération demandée invaliderait l'état courant du projet. Par exemple, cette erreur se produit si vous utilisez la boîte de dialogue Références pour ajouter une référence à un nouveau projet ou à une bibliothèque d'objets pendant qu'un programme est en mode Arrêt.

Arrêtez l'exécution du code en cours et recommencez l'opération.

•	Vous avez tenté de modifier le code en cours d'exécution. Par exemple, votre code a peut-être tenté de lire un code d'un fichier sur disque dans un module en cours d'exécution.

Vous pouvez modifier des projets, mais vous ne pouvez pas apporter de modifications dans un module en cours d'exécution. Vous devez d'abord arrêter le module, effectuer ensuite ajouts ou modifications, puis relancer l'exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de renommer avec un lecteur différent (erreur 74)

L'instruction Name doit renommer le fichier sur le lecteur en cours. Cause et solution de cette erreur :

•	Vous avez tenté de déplacer un fichier vers un lecteur différent à l'aide de l'instruction Name.

Pour copier le fichier sur un autre lecteur, utilisez FileCopy puis supprimez l'ancien fichier avec l'instruction Kill.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'enregistrer le fichier dans un répertoire TEMP (erreur 735)

Les composants doivent souvent enregistrer des informations temporaires sur disque. Cause et solution de cette erreur :

•	Un composant ne peut pas trouver un répertoire TEMP.

Créez un répertoire TEMP et attribuez le chemin de ce répertoire à la variable d'environnement TEMP.

•	Le lecteur ou la partition contenant le répertoire TEMP n'offre pas suffisamment d'espace pour enregistrer les informations.

Pour libérer de l'espace sur le lecteur, supprimez les fichiers inutiles, ou créez un répertoire TEMP sur une autre partition et attribuez son chemin d'accès à la variable d'environnement TEMP.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette classe ne gère pas Automation (erreur 430)

Certains objets n'exposent pas d'interface Automation. Cause et solution de cette erreur :

•	La classe que vous avez spécifiée dans l'appel de fonction GetObject ou CreateObject a été trouvée, mais n'a pas exposé d'interface programmable.

Vous ne pouvez écrire du code pour contrôler le comportement d'un objet que s'il a été exposé pour Automation. Vérifiez la documentation de l'application qui a créé l'objet pour en savoir plus sur les restrictions d'utilisation d'Automation avec cette classe d'objet.

•	Vous avez modifié le type d'un projet de .dll en .exe, ou inversement. Si, par exemple, vous avez un serveur .dll déjà compilé et enregistré, puis que vous modifiez le type du projet en .exe et le recompilez, le fait que les fichiers .dll et .exe soient déjà enregistrés sur le système vous empêche de créer un objet de quelque type que ce soit. Pour éviter ce problème, vous devez désenregistrer manuellement l'ancien fichier .dll ou.exe.

Cette situation est la conséquence de la combinaison de la compatibilité du projet et de la modification d'un projet de .exe en .dll. Dans la compatibilité de projet, le CLSID est conservé, mais non le IID. Étant donné que le CLSID est conservé, la classe finit par être enregistrée avec deux serveurs —un serveur in-process et un serveur local. Lorsqu'une instance est créée, le serveur in-process est choisi. Lors de l'interrogation de l'interface, le fichier .dll ne gère pas l'IID car il est nouveau.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur de verrouillage de ressource de code (erreur 455)

Cette erreur ne peut se produire que sur Macintosh. Lors de l'accès à une ressource de code, vous devez la verrouiller. Cause et solution de cette erreur :

•	Un appel a été effectué à une procédure dans une ressource de code. La ressource de code a été trouvée, mais une erreur est survenue lors d'une tentative de verrouillage de la ressource.

Recherchez une erreur renvoyée par Hlock, par exemple, "Illégal sur descripteur vide" ou "Illégal sur bloc vide".

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ressource de code introuvable (erreur 454)

Cette erreur se produit uniquement sur Macintosh. Cause et solution de cette erreur :

•	Un appel a été effectué à une procédure dans une ressource de code, mais cette dernière est introuvable.

Vérifiez que la ressource est disponible et correctement référencée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La connexion à la bibliothèque de types ou d'objets pour un processus distant a été perdue (erreur 442)

Pendant un accès distant (c'est-à-dire lors de l'accès à un objet faisant partie d'un autre processus ou exécuté sur une autre machine), la connexion à la bibliothèque contenant les informations de l'objet a été rompue. Cause et solution de cette erreur :

•	Vous avez perdu la connexion à la bibliothèque d'objets ou à la bibliothèque de types du processus distant.

Pour vous reconnecter, procédez comme suit :

1.	Relancez l'objet Application.

2.	Dans la boîte de dialogue d'erreur où vous avez accédé à cette rubrique d'aide, cliquez sur OK pour afficher la boîte de dialogue Références.

3.	Le mot MANQUANT apparaît à gauche de la référence perdue.

4.	Retirez la référence perdue.

5.	Dans la boîte de dialogue Références, cliquez sur la case à cocher en regard de l'objet que vous avez lancé à l'étape 1.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur d'entrée/sortie de périphérique (erreur 57)

Des périphériques externes sont parfois sujets à des erreurs imprévues. Cause et solution de cette erreur :

•	Une erreur d'entrée ou de sortie s'est produite pendant que votre programme utilisait un périphérique tel qu'une imprimante ou un disque dur.

Vérifiez que le périphérique fonctionne correctement, puis relancez l'opération.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Périphérique non disponible (erreur 68)

Causes et solutions de cette erreur :

•	Le périphérique auquel vous tentez d'accéder est hors ligne ou n'existe pas.

Vérifiez que le périphérique est sous tension et que les câbles le raccordant à votre ordinateur sont bien branchés. Si vous tentez d'accéder à une imprimante via un réseau, vérifiez l'existence d'une connexion logique entre l'ordinateur et l'imprimante, par exemple, une connexion associant LPT1 à l'identificateur de l'imprimante réseau.

•	Votre connexion réseau a peut-être été rompue.

Reconnectez-vous au réseau et recommencez l'opération.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Disque plein (erreur 61)

Causes et solutions de cette erreur :

•	Le disque n'offre pas suffisamment de place pour exécuter une opération Print #, Write # ou Close.

Transférez certains fichiers sur un autre disque ou supprimez-en quelques-uns.

•	Le disque n'offre pas suffisamment de place pour créer les fichiers requis.

Transférez certains fichiers sur un autre disque ou supprimez-en quelques-uns.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Disque non prêt (erreur 71)

Causes et solutions de cette erreur :

•	Il n'y a aucun disque dans le lecteur spécifié.

Introduisez un disque dans le lecteur et recommencez l'opération.

•	Le clapet du lecteur spécifié est ouvert.

Fermez le clapet du lecteur et recommencez.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Division par zéro (erreur 11)

La division par zéro est impossible. Cause et solution de cette erreur :

•	La valeur d'une expression utilisée comme diviseur est égale à zéro.

Vérifiez l'orthographe des variables dans l'expression. Une faute de frappe dans un nom de variable peut créer implicitement une variable numérique initialisée à zéro. Vérifiez les opérations précédentes sur la variable dans l'expression, surtout celles passées dans la procédure comme arguments à partir d'autres procédures.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur de chargement de la DLL (erreur 48)

Une bibliothèque de liaisons dynamiques (DLL) est spécifiée dans la clause Lib d'une instruction Declare. Causes et solutions de cette erreur :

•	Le fichier n'est pas une DLL exécutable.

Si le fichier est un fichier texte source, il doit être compilé et lié à une DLL exécutable.

•	Le fichier n'est pas une DLL Microsoft Windows.

Procurez-vous la DLL Microsoft Windows équivalente du fichier.

•	Le fichier est une DLL Microsoft Windows ancienne, incompatible avec le mode protégé de Microsoft Windows.

Procurez-vous une version à jour de la DLL.

•	La DLL fait référence à une autre DLL absente.

Procurez-vous la DLL référencée et rendez-la accessible à l'autre DLL.

•	La DLL ou l'une des DLL référencées ne se trouve pas dans un répertoire spécifié par votre chemin d'accès.

Transférez la DLL dans un répertoire référencé ou incluez son répertoire courant dans le chemin d'accès.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce fichier existe déjà (erreur 58)

Causes et solutions de cette erreur :

•	Cette erreur se produit au moment de l'exécution lorsque le nouveau nom de fichier, par exemple celui spécifié dans une instruction Name, est identique à un nom de fichier existant déjà.

Spécifiez un nouveau nom de fichier dans l'instruction Name ou supprimez l'ancien fichier avant de le spécifier dans une instruction Name.

•	Vous avez utilisé la commande Enregistrer sous pour enregistrer un projet actuellement chargé, mais le nom de projet existe déjà.

Utilisez un autre nom de projet si vous ne souhaitez pas remplacer l'autre projet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Fichier déjà ouvert (erreur 55)

Un fichier doit parfois être fermé avant l'exécution d'une opération Open ou d'une autre opération. Causes et solutions de cette erreur :

•	Une instruction Open en mode de sortie séquentielle a été exécutée pour un fichier déjà ouvert.

Vous devez fermer un fichier ouvert pour un type d'accès séquentiel avant de pouvoir l'ouvrir pour un autre. Par exemple, vous devez fermer un fichier ouvert pour Input avant de l'ouvrir pour Output.

•	Une instruction, par exemple, Kill, SetAttr ou Name, se réfère à un fichier ouvert.

Fermez le fichier avant d'exécuter l'instruction.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh)..


Fichier introuvable (erreur 53)

Le fichier est introuvable à l'endroit spécifié. Causes et solutions de cette erreur :

•	Une instruction, par exemple, Kill, Name ou Open, se réfère à un fichier qui n'existe pas.

Vérifiez l'orthographe du nom de fichier et la spécification du chemin d'accès.

•	Vous avez tenté d'appeler une procédure dans une bibliothèque de liaisons dynamiques (DLL) ou une ressource de code Macintosh , mais le fichier de la bibliothèque ou de ressources spécifié dans la clause Lib de l'instruction Declare est introuvable.

Vérifiez l'orthographe du nom de fichier et la spécification du chemin d'accès.

•	Dans l'environnement de développement, cette erreur se produit lorsque vous tentez d'ouvrir un projet ou de charger un fichier texte qui n'existe pas.

Vérifiez l'orthographe du nom du projet ou du nom du fichier ainsi que la spécification du chemin d'accès.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Boucle For non initialisée (erreur 92)

Les compteurs de boucles For doivent être initialisés. Cause et solution de cette erreur :

•	Vous êtes passé au milieu d'une boucle For...Next.

Retirez le passage dans la boucle. L'introduction d'étiquettes à l'intérieur d'une boucle For...Next n'est pas recommandée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'entrée dépasse la fin de fichier (erreur 62)

Vous ne pouvez pas lire après la position de fin de fichier. Cause et solution de cette erreur :

•	Une instruction Input # ou Line Input # lit un fichier vide ou un fichier dans lequel toutes les données ont été lues.

Utilisez la fonction EOF immédiatement avant l'instruction Input # pour détecter la fin du fichier.

•	Vous avez utilisé la fonction EOF avec un fichier ouvert en accès Binary.

EOF fonctionne seulement avec des fichiers ouverts en accès séquentiel Input. Utilisez Seek et Loc avec des fichiers ouverts en accès Binary.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur interne (erreur 51)

Assurez-vous que cette erreur n'est pas générée par l'instruction Error ou la méthode Raise. Cause et solution de cette erreur :

•	Une anomalie interne s'est produite dans Visual Basic.

Sauf si cet appel a été généré par l'instruction Error ou la méthode Raise, faites appel aux Services de support technique de Microsoft pour signaler les conditions sous lesquelles le message est apparu.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Format de Presse-papiers incorrect (erreur 460)

Le Presse-papiers accepte les données dans certains formats spécifiés. Cause et solution de cette erreur :

•	Vous avez tenté de placer des données d'un composant sur le Presse-papiers, mais le format de ces données est incompatible avec le Presse-papiers.

Consultez la documentation du composant pour déterminer si vous pouvez utiliser le Presse-papiers pour transférer des données du composant.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Format de fichier incorrect (erreur 321)

Les fichiers disque contiennent souvent des données stockées dans des formats propriétaires. Cause et solution de cette erreur :

•	Vous avez tenté de charger un fichier dans un composant, mais le format des données de ce fichier est incompatible avec le composant.

Consultez la documentation du composant pour déterminer le format approprié des données disque et pour savoir si le composant permet la conversion de format.

•	Vous avez tenté d'enregistrer les données d'un composant dans un fichier, mais le format de ces données est incompatible avec le format du fichier.

Consultez la documentation du composant pour déterminer si celui-ci permet la conversion de format.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Numéro incorrect (erreur 452)

Votre appel à une bibliothèque de liaisons dynamiques (DLL) demande l'utilisation d'un numéro et non d'un nom de procédure, avec la syntaxe #num. Causes et solutions de cette erreur :

•	La tentative de conversion de l'expression num en numéro a échoué.

Vérifiez que l'expression représente un nombre valide ou appelez la procédure par nom.

•	La valeur num spécifiée n'indique aucune fonction dans la DLL.

Vérifiez que num identifie une fonction correcte dans la DLL.

•	Une bibliothèque de types comporte une déclaration incorrecte résultant de l'utilisation interne d'un numéro incorrect.

Mettez le code en commentaire pour isoler l'appel de procédure à l'origine de l'incident. Écrivez une instruction Declare pour la procédure et signalez le problème au fournisseur de la bibliothèque de types.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Chaîne de motif non valide (erreur 93)

La chaîne de motif spécifiée dans l'opération Like de la recherche est incorrecte. Cause et solution de cette erreur :

•	Par exemple, dans l'expression de liste de caractères [a-b, le crochet droit est manquant.

Vérifiez la liste des caractères valides pour les expressions de liste.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Appel de procédure ou argument incorrect (erreur 5)

Une partie de l'appel n'a pas pu être effectuée. Causes et solutions de cette erreur :

•	Un argument dépasse probablement la plage des valeurs permises. Par exemple, la fonction Sin ne peut accepter que les valeurs comprises dans une certaine plage. Les arguments positifs inférieurs à 2 147 483 648 sont acceptés, tandis que 2 147 483 648 génère cette erreur.

Vérifiez les plages permises pour les arguments.

•	Cette erreur peut également se produire si vous tentez d'effectuer un appel à une procédure qui n'est pas valide sur la plate-forme en cours. Par exemple, certaines procédures ne sont valides que pour Microsoft Windows, ou pour le Macintosh, etc.

Vérifiez les informations spécifiques de la plate-forme sur la procédure.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Index du tableau de propriétés incorrect (erreur 381)

Une valeur de propriété peut être formée d'un tableau de valeurs. Cause et solution de cette erreur :

•	Un tableau de propriétés d'un composant peut avoir une limite inférieure égale à zéro et une limite supérieure égale au nombre d'éléments du tableau moins 1. La limite inférieure peut aussi être égale à 1 et la limite supérieure correspondre au nombre d'éléments du tableau.

Vérifiez la documentation du composant pour vous assurer que l'index se situe à l'intérieur de la plage de la propriété spécifiée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Utilisation incorrecte de Null (erreur 94)

Null est un sous-type Variant indiquant qu'un élément de données ne contient aucune donnée valide. Cause et solution de cette erreur :

•	Vous tentez d'obtenir la valeur d'une variable Variant ou d'une expression dont la valeur est Null. Par exemple :

MyVar = Null

For Count = 1 To MyVar

. . .

Next Count

Vérifiez que la variable contient une valeur correcte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Argument nommé introuvable (erreur 448)

Un argument nommé ne peut être utilisé dans un appel de procédure que s'il apparaît dans la définition de cette procédure. Cause et solution de cette erreur :

•	Vous avez spécifié un argument nommé, mais la définition de la procédure ne prévoit pas l'acceptation d'un argument de ce nom.

Vérifiez l'orthographe du nom de l'argument.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Index de table de propriété requis (erreur 385)

Cette valeur de propriété est formée d'un tableau et non d'une valeur unique. Cause et solution de cette erreur :

•	Vous n'avez pas spécifié l'index du tableau de la propriété auquel vous avez tenté d'accéder.

Vérifiez la documentation du composant pour déterminer la plage des index du tableau. Spécifiez un index approprié dans l'instruction d'accès à la propriété.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'objet ne gère pas les paramètres régionaux en cours (erreur 447)

Certains objets ne gèrent pas les paramètres régionaux. Causes et solutions de cette erreur :

•	Vous avez tenté d'accéder à un objet qui ne gère pas les paramètres régionaux du projet en cours. Par exemple, si le projet en cours comporte le paramètre régional français canadien, l'objet auquel vous tentez d'accéder doit gérer ce paramètre.

Vérifiez les paramètres régionaux gérés par l'objet.

•	L'objet utilise le support de langue nationale d'une bibliothèque de liaisons dynamiques (DLL) ou une ressource de code Macintosh , par exemple, OLE2NLS.DLL, qui peut être périmé.

Procurez-vous une version plus récente de la DLL, gérant les paramètres régionaux du projet en cours.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'objet ne gère pas les arguments nommés (erreur 446)

Certains objets ne gèrent pas les arguments nommés. Cause et solution de cette erreur :

•	Vous avez tenté d'accéder à un objet dont les méthodes ne gèrent pas les arguments nommés.

Spécifiez les arguments par position lors de l'exécution de méthodes sur cet objet. Pour plus d'informations sur les positions et types d'argument, consultez la documentation de l'objet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'objet ne gère pas cette action (erreur 445)

Certains objets ne gèrent pas toutes les actions. Cause et solution de cette erreur :

•	Vous avez fait référence à une méthode ou à une propriété qui n'est pas gérée par cet objet.

Pour plus d'informations sur l'objet, consultez la documentation de ce dernier et vérifiez l'orthographe des propriétés et des méthodes.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La procédure Property Let n'est pas définie et la procédure Property Get n'a pas renvoyé d'objet (erreur 451)

Certaines propriétés, méthodes et opérations ne s'appliquent qu'aux objets Collection. Cause et solution de cette erreur :

•	Vous avez spécifié une opération ou une propriété exclusive aux collections, mais l'objet n'est pas une collection.

Vérifiez l'orthographe du nom d'objet ou de propriété, ou vérifiez que l'objet est un objet Collection. Vérifiez également la syntaxe de la méthode Add utilisée pour ajouter l'objet à la collection, ainsi que l'orthographe de tous les identificateurs.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Objet requis (erreur 424)

Les références aux propriétés et aux méthodes requièrent souvent un qualificateur d'objet explicite. Causes et solutions de cette erreur :

•	Vous avez fait référence à une propriété ou une méthode d'objet, mais n'avez pas fourni de qualificateur d'objet correct.

Spécifiez un qualificateur d'objet si vous ne l'avez pas fait. Par exemple, bien que vous puissiez omettre un qualificateur d'objet lors de la référence à une propriété de formulaire à partir du module du formulaire, vous devez explicitement spécifier le qualificateur lors d'une référence à la propriété à partir d'un module standard.

•	Vous avez fourni un qualificateur d'objet, mais il n'est pas reconnu comme un objet.

Vérifiez l'orthographe du qualificateur d'objet et assurez-vous que l'objet est visible dans la partie du programme dans laquelle vous y faites référence. Dans le cas d'objets Collection, vérifiez toutes les occurrences de la méthode Add pour vous assurer que la syntaxe et l'orthographe de tous les éléments sont correctes.

•	Vous avez fourni un qualificateur d'objet correct, mais une autre partie de l'appel contient une erreur.

Un chemin d'accès incorrect fourni comme argument à une commande Fichier Ouvrir d'une application hôte pourrait avoir causé cette erreur. Vérifiez les arguments.

•	Vous n'avez pas utilisé l'instruction Set lors de l'affectation d'une référence d'objet.

Si vous affectez la valeur de renvoi d'un appel CreateObject à une variable de type Variant, une erreur ne se produit pas nécessairement si l'instruction Set est omise. Dans l'exemple de code suivant, une instance implicite de Microsoft Excel est créée, et sa propriété par défaut (la chaîne "Microsoft Excel") est renvoyée et affectée à la variable Variant RetVal. Toute tentative subséquente d'utilisation de RetVal comme référence d'objet provoque cette erreur :

Dim RetVal	' Déclare implicitement une

' variable Variant.

' Propriété par défaut attribuée

' au type Variant 8 RetVal.

RetVal = CreateObject("Excel.Application")

RetVal.Visible = True	' Erreur ici.

Utilisez l'instruction Set lors de l'affectation d'une référence d'objet.

•	Dans de rares cas, cette erreur se produit lorsque vous avez un objet valide mais tentez d'effectuer une action invalide sur cet objet. Par exemple, vous pouvez recevoir cette erreur en tentant d'affecter une valeur à une propriété en lecture seule.

Vérifiez la documentation de l'objet pour vous assurer que l'action que vous tentez d'effectuer est correcte.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Variable objet ou variable bloc With non définie (erreur 91)

La création d'une variable objet s'effectue en deux temps. Vous devez d'abord déclarer la variable objet. Il faut ensuite affecter une référence valide à la variable objet à l'aide de l'instruction Set. De même, un bloc With...End With doit être initialisé en exécutant le point d'entrée de l'instruction With. Causes et solutions de cette erreur :

•	Vous avez tenté d'utiliser une variable objet ne faisant pas encore référence à un objet valide.

Spécifiez ou respécifiez une référence pour la variable objet. Par exemple, si l'instruction Set est omise dans le code suivant, une erreur sera générée lors d'une référence à MyObject :

Dim MyObject As Object	' Crée une variable objet.

Set MyObject = Sheets(1)	' Crée une référence

            ' d'objet valide.

MyCount = MyObject.Count	' Affecte valeur de compte

            ' à MyCount.

•	Vous avez tenté d'utiliser une variable objet ayant la valeur Nothing.

Set MyObject = Nothing	' Libère l'objet.

MyCount = MyObject.Count	' Crée une référence

                        ' à un objet libéré.

Respécifiez une référence pour la variable objet. Par exemple, utilisez une nouvelle instruction Set pour définir une nouvelle référence à l'objet.

•	L'objet est valide, mais n'a pas été défini, puisque la bibliothèque d'objets dans laquelle il est décrit n'a pas été sélectionnée dans la boîte de dialogue Références.

Sélectionnez la bibliothèque d'objets dans la boîte de dialogue Ajouter une référence.

•	La cible d'une instruction GoTo se trouve à l'intérieur d'un bloc With.

N'effectuez pas de passage dans un bloc With. Pour vérifier que le bloc est initialisé, exécutez le point d'entrée de l'instruction With.

•	Vous avez spécifié une ligne à l'intérieur d'un bloc With lorsque vous avez choisi la commande Définir l'instruction suivante.

Le bloc With doit être initialisé en exécutant l'instruction With.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur Automation (erreur 440)

Lorsque vous accédez à des objets Automation, des types d'erreur spécifiques peuvent se produire. Cause et solution de cette erreur :

•	Une erreur s'est produite lors de l'exécution d'une méthode ou de l'obtention ou de la définition d'une propriété d'une variable objet. L'erreur a été signalée par l'application qui a créé l'objet.

Vérifiez les propriétés de l'objet Err pour identifier la source et la nature de l'erreur. Tentez également d'utiliser l'instruction On Error Resume Next immédiatement avant d'accéder à l'instruction, puis vérifiez l'absence d'erreurs immédiatement après l'accès à l'instruction.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cet objet ne gère pas cette propriété ou méthode (erreur 438)

Certains objets ne gèrent pas toutes les propriétés et méthodes. Cause et solution de cette erreur :

•	Vous avez spécifié une méthode ou une propriété n'existant pas pour cet objet Automation.

Pour plus d'informations sur l'objet, consultez la documentation de l'objet, et vérifiez l'orthographe des propriétés et des méthodes.

•	Vous avez spécifié une procédure Friend qui est appelée par une liaison tardive.

Le nom d'une procédure Friend doit être connue au moment de la compilation. Il ne peut pas apparaître dans un appel de liaison tardive.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Mémoire insuffisante (erreur 7)

La mémoire disponible est insuffisante, ou une limite de segment de 64 Ko a été rencontrée. Causes et solutions de cette erreur :

•	Un trop grand nombre d'applications, de documents ou de fichiers source sont ouverts.

Fermez les applications, documents ou fichiers source ouverts inutiles.

•	La taille d'un module ou d'une procédure est trop grande.

Fractionnez les grands modules ou les grandes procédures. Cette intervention ne permet pas d'économiser de la mémoire mais d'éviter les limites de segment de 64 Ko.

•	Vous exécutez Microsoft Windows en mode standard.

Relancez Microsoft Windows en mode étendu.

•	Vous exécutez Microsoft Windows en mode étendu, mais vous avez épuisé toute la mémoire virtuelle.

Pour augmenter la capacité de mémoire virtuelle, libérez de l'espace disque, ou vérifiez qu'un espace minimal est disponible.

•	Des programmes résidents sont chargés.

Retirez les programmes résidents.

•	Trop de pilotes de périphérique sont chargés.

Retirez les pilotes de périphérique inutiles.

•	Vous n'avez plus de place pour des variables Public.

Réduisez le nombre de variables Public.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Espace pile insuffisant (erreur 28)

La pile est une zone de travail de mémoire dont la taille varie dynamiquement en fonction des demandes du programme exécuté. Causes et solutions de cette erreur :

•	Vous avez trop d'appels de procédure Function, Sub ou Property actifs.

Vérifiez que les procédures ne sont pas imbriquées trop profondément. Cette vérification s'applique particulièrement en ce qui concerne les procédures récursives (s'appelant elles-mêmes). Vérifiez que les procédures récursives se terminent correctement. Utilisez la boîte de dialogue Liste d'appels pour voir les procédures actives (sur la pile).

•	Vos variables locales nécessitent plus d'espace de variable locale que l'espace disponible.

Essayez plutôt de déclarer des variables au niveau module. Vous pouvez également déclarer toutes les variables dans la procédure statique en faisant précéder de Static le mot clé Property, Sub ou Function. Vous pouvez également employer l'instruction Static pour déclarer des variables Static individuelles dans des procédures.

•	Il y a trop de chaînes à longueur fixe.

Les chaînes à longueur fixe dans une procédure offrent un accès plus rapide, mais utilisent plus d'espace de pile que des chaînes à longueur variable, puisque les données de chaînes proprement dites sont placées sur la pile. Essayez de redéfinir des chaînes à longueur fixe en chaînes à longueur variable. Lorsque vous déclarez des chaînes à longueur variable dans une procédure, seul le descripteur de chaîne (et non les données proprement dites) est placé sur la pile. Vous pouvez également définir la chaîne au niveau module où elle ne nécessite aucun espace de pile. Les variables déclarées au niveau module étant Public par défaut, la chaîne est visible de toutes les procédures du module.

•	Trop d'appels de fonction DoEvents sont imbriqués.

Utilisez la boîte de dialogue Liste d'appels pour voir les procédures actives sur la pile.

•	Votre code a déclenché une cascade d'événements.

Une cascade d'événements est causée par le déclenchement d'un événement qui appelle une procédure d'événement déjà sur la pile. Une cascade d'événements est similaire à un appel de procédure récursive non terminé, mais son identification est moins évidente puisque l'appel est effectué par Visual Basic et non par un appel explicite dans votre code. Utilisez la boîte de dialogue Liste d'appels pour voir les procédures actives (sur la pile).

Pour afficher la boîte de dialogue Liste d'appels, cliquez sur le bouton Liste d'appels à droite de la zone Procédure dans la fenêtre Variables locales ou choisissez la commande Liste d'appels. Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Espace de chaîne insuffisant (erreur 14)

Visual Basic permet d'employer de très longues chaînes. Cependant, les impératifs d'autres programmes et leur mode de manipulation de vos chaînes peut causer cette erreur. Causes et solutions de cette erreur :

•	Les expressions nécessitant la création de chaînes temporaires en vue d'une évaluation peuvent causer cette erreur. Par exemple, le code suivant cause une erreur Espace de chaîne insuffisant dans certains systèmes d'exploitation :

MyString = "Bonjour"

For Count = 1 To 100

MyString = MyString & MyString

Next Count

Affectez la chaîne à une variable portant un autre nom.

•	Votre système peut avoir épuisé la mémoire disponible, ce qui a empêché l'affectation d'une chaîne.

Pour libérer de la mémoire, retirez les applications non nécessaires.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Dépassement de capacité (erreur 6)

Un dépassement de capacité se produit lorsque vous tentez d'effectuer une affectation dépassant les limites de la cible de l'affectation. Causes et solutions de cette erreur :

•	Le résultat d'une affectation, d'un calcul ou d'une conversion de type de données est trop grand pour être représenté dans la plage de valeurs autorisée pour ce type de variable.

Affectez la valeur à un type de variable pouvant contenir une plage de valeurs plus grande.

•	Une affectation à une propriété dépasse la valeur maximum de la propriété.

Vérifiez que votre affectation se situe à l'intérieur de la plage de la propriété cible.

•	Vous tentez d'utiliser dans un calcul un nombre converti dans un entier, mais le résultat est plus grand qu'un entier. Exemple :

    Dim x As Long

    x = 2 000 * 365   ' Erreur : Dépassement de capacité

Afin de contourner le problème, saisissez le nombre comme suit :

    Dim x As Long

    x = CLng(2 000) * 365

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Chemin d'accès introuvable (erreur 76)

Le chemin d'accès à un fichier inclut la spécification du lecteur ainsi que les répertoires et les sous-répertoires à parcourir pour localiser le fichier. Un chemin d'accès peut être relatif ou absolu. Cause et solution de cette erreur :

•	Pendant une opération d'accès fichier ou d'accès disque, par exemple Open, MkDir, ChDir ou RmDir, le système d'exploitation n'a pas pu trouver le chemin spécifié.

Respécifiez le chemin.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur dans le chemin d'accès (erreur 75)

Pendant une opération d'accès fichier ou d'accès disque, par exemple Open, MkDir, ChDir ou RmDir, le système d'exploitation n'a pas pu établir une connexion entre le chemin d'accès et le nom de fichier. Causes et solutions de cette erreur :

•	La spécification du fichier n'était pas bien formatée.

Un nom de fichier peut contenir un chemin complet (absolu) ou relatif. Un chemin complet commence par le nom du lecteur (si le chemin se trouve dans un autre lecteur) et inclut le chemin explicite, de la racine au fichier. Tout chemin incomplet est relatif au lecteur et répertoire en cours.

•	Vous avez tenté d'enregistrer un fichier qui aurait remplacé un fichier en lecture seule.

Changez l'attribut lecture seule du fichier cible ou enregistrez le fichier sous un autre nom.

•	Vous avez tenté d'ouvrir un fichier en lecture seule en mode d'accès séquentiel Output ou Append.

Ouvrez le fichier en mode Input ou changez l'attribut lecture seule du fichier.

•	Vous avez tenté de modifier un projet Visual Basic à l'intérieur d'une base de données ou d'un document.

Vous n'êtes pas autorisé à modifier la structure du projet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Permission refusée (erreur 70)

Vous avez tenté d'écrire sur un disque protégé en écriture ou d'accéder à un fichier verrouillé. Causes et solutions de cette erreur :

•	Vous avez tenté d'ouvrir un fichier protégé en écriture pour un accès séquentiel Output ou Append.

Ouvrez le fichier pour un accès Input ou changez l'attribut de protection en écriture du fichier.

•	Vous avez tenté d'ouvrir un fichier sur un disque protégé en écriture pour un accès séquentiel Output ou Append.

Retirez la protection en écriture du disque ou ouvrez le fichier pour un accès Input.

•	Vous avez tenté d'écrire dans un fichier qu'un autre processus a verrouillé.

Attendez que l'autre processus libère le fichier pour l'ouvrir.

•	Vous avez tenté d'accéder à la base de registres, mais vos permissions utilisateur n'incluent pas ce type d'accès.

Sur des systèmes Microsoft Windows 32 bits, un utilisateur doit avoir les permissions appropriées pour accéder à la base de registres du système. Changez vos permissions ou demandez à l'administrateur système de le faire.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur d'imprimante (erreur 482)

Cause et solution de cette erreur :

•	Une erreur s'est produite sur l'imprimante mais aucune autre information n'a été renvoyée à l'ordinateur qui a envoyé le fichier.

Inspectez physiquement l'imprimante. Vérifiez tous les branchements entre l'ordinateur et l'imprimante. La plupart des imprimantes comportent un affichage présentant des informations d'erreur telles que "Plus de papier", "Hors ligne" et ainsi de suite.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Property Get ne peut pas être exécutée en mode exécution (erreur 393)

Certaines propriétés ne renvoient pas d'informations d'exécution. Cause et solution de cette erreur :

•	La propriété à laquelle vous tentez d'accéder est en lecture seule au moment de l'exécution.

Terminez l'exécution et affichez la propriété au moment de la création.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Property Get ne peut pas être exécutée sur une propriété en écriture seule (erreur 394)

Certaines propriétés ne renvoient pas d'informations. Cause et solution de cette erreur :

•	La propriété à laquelle vous tentez d'accéder ne renvoie pas d'informations.

Vous ne pouvez pas en déterminer l'état.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Propriété ou méthode introuvable (erreur 423)

L'orthographe d'un nom d'objet doit correspondre exactement à sa définition dans la bibliothèque d'objets. Cause et solution de cette erreur :

•	Vous avez fait référence à object.method ou object.property, mais la method ou la property n'est pas définie.

Une faute de frappe peut s'être glissée dans le nom de object. Pour voir les propriétés et les méthodes définies pour object, affichez l'Explorateur d'objets. Sélectionnez la bibliothèque d'objets appropriée pour voir la liste des propriétés et des méthodes disponibles.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Propriété introuvable (erreur 422)

Les objets ne gèrent pas tous le même ensemble de propriétés. Cause et solution de cette erreur :

•	L'objet ne gère pas la propriété spécifiée.

Vérifiez l'orthographe du nom de propriété. Vous pouvez également tenter d'accéder à une propriété telle que "text" alors que l'objet gère réellement "caption" ou une propriété d'un nom similaire. Consultez la documentation de l'objet.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Property Set ne peut être exécutée en mode exécution (erreur 382)

Il est parfois impossible d'obtenir une référence à une propriété lors de l'exécution. Cause et solution de cette erreur :

•	Vous avez tenté d'obtenir une référence à une propriété en lecture seule ou en écriture seule au moment de l'exécution.

Puisque vous pouvez utiliser une référence en lecture et en écriture, la propriété doit autoriser les deux opérations pour permettre l'obtention d'une référence au moment de l'exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Property Set ne peut être utilisée avec une propriété en lecture seule (erreur 383)

Il peut être impossible d'obtenir une référence à une propriété au moment de l'exécution. Cause et solution de cette erreur :

•	Vous avez tenté d'obtenir une référence à une propriété en lecture seule au moment de l'exécution.

Puisque que vous pouvez utiliser une référence en lecture et en écriture, la propriété doit autoriser les deux opérations pour permettre l'obtention d'une référence au moment de l'exécution. Vous pouvez uniquement utiliser une opération Property Get avec cette propriété.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Property Set non autorisée (erreur 387)

Certaines propriétés ne permettent pas le renvoi d'une référence. Cause et solution de cette erreur :

•	Vous avez tenté d'obtenir une référence d'une propriété qui ne renvoie pas de référence.

Limitez l'accès à cette propriété à des opérations Property Let et Property Get.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Remplacements trop longs (erreur 746)

Un remplacement ne doit pas dépasser une longueur maximum spécifiée. Cause et solution de cette erreur :

•	Vous avez spécifié un remplacement qui dépasse la longueur permise.

Consultez la documentation du composant pour connaître la longueur maximum autorisée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Resume sans gestion d'erreurs (erreur 20)

Une instruction Resume peut apparaître uniquement dans un gestionnaire d'erreurs et être exécutée seulement dans un gestionnaire d'erreurs actif. Causes et solutions de cette erreur :

•	Vous avez placé une instruction Resume à l'extérieur d'un code de gestion d'erreurs.

Placez l'instruction dans un gestionnaire d'erreurs ou supprimez-la.

•	Votre code est passé dans un gestionnaire d'erreurs alors qu'il n'y a aucune erreur.

Une faute de frappe peut s'être glissée dans une étiquette de ligne. Des passages à des étiquettes ne pouvant être employés entre procédures, recherchez dans la procédure l'étiquette identifiant le gestionnaire d'erreurs. Si vous trouvez une étiquette en double désignant la cible d'une instruction GoTo ne correspondant pas à une instruction On Error GoTo, spécifiez l'étiquette de ligne désignant la cible désirée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Return sans GoSub (erreur 3)

À chaque instruction Return doit correspondre une instruction GoSub. Cause et solution de cette erreur :

•	Une instruction Return n'est pas appariée à une instruction GoSub.

Vérifiez que l'instruction GoSub n'a pas été accidentellement supprimée.

Contrairement aux instructions For...Next, While...Wend et Sub...End Sub, qui sont appariées au moment de la compilation, GoSub et Return sont appariées au moment de l'exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Fonction DLL spécifiée introuvable (erreur 453)

La bibliothèque de liaisons dynamiques (DLL) d'une référence de bibliothèque utilisateur a été trouvée, mais la fonction DLL spécifiée est introuvable dans la DLL. Causes et solutions de cette erreur :

•	Vous avez spécifié un numéro incorrect dans la déclaration de la fonction.

Vérifiez le numéro ou appelez la fonction par nom.

•	Vous avez indiqué le bon nom de DLL, mais celle-ci ne correspond pas à la version contenant la fonction spécifiée.

Il se peut que vous ayez la bonne version sur votre machine, mais si le répertoire contenant la version incorrecte précède dans votre chemin d'accès le répertoire contenant la bonne, l'accès s'effectue à la DLL incorrecte. Vérifiez les différentes versions présentes sur votre machine. Si vous possédez une ancienne version, contactez le fournisseur pour obtenir une version plus récente.

•	Si vous travaillez sur une plate-forme Microsoft Windows 32 bits, le nom et l'alias de la DLL (le cas échéant) doivent être corrects.

Vérifiez que le nom et l'alias de la DLL sont corrects.

•	Certaines DLL 32 bits contiennent des fonctions de versions légèrement différentes autorisant l'emploi de chaînes Unicode et ANSI. Un "A" à la fin de la fonction spécifie la version ANSI, un "W" la version Unicode.

Si la fonction accepte des arguments de type chaîne, essayez d'ajouter un "A" au nom de la fonction.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Expression trop complexe (erreur 16)

Le nombre de sous-expressions autorisé dans une expression en virgule flottante varie d'une plate-forme à l'autre. Par exemple, sur des systèmes d'exploitation Microsoft Windows 32 bits, la limite correspond à 8 niveaux d'expressions en virgule flottante imbriqués. Cause et solution de cette erreur :

•	Une expression en virgule flottante contient trop de sous-expressions imbriquées.

Fractionnez l'expression en plusieurs expressions distinctes de manière à éviter cette erreur.

Note   Dans les anciennes versions de Visual Basic, l'erreur 16 était "Expression de chaîne trop complexe". Cette erreur ne peut plus se produire. Cependant, si vous utilisez un ancien code interceptant et gérant cette erreur, vous devez le retirer pour éviter toute confusion avec cette nouvelle erreur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le texte recherché est introuvable (erreur 744)

Cause et solution de cette erreur :

•	Le texte que vous avez précisé est introuvable.

Le texte n'existe pas.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Sub, Function ou Property non définie (erreur 35)

Une procédure Sub, Function ou Property doit être définie pour être appelée. Causes et solutions de cette erreur :

•	Une faute de frappe s'est glissée dans le nom de la procédure.

Vérifiez l'orthographe et corrigez-la.

•	Vous avez tenté d'appeler une procédure depuis un autre projet sans ajouter explicitement de référence à ce projet dans la boîte de dialogue Références.

Ajout d'une référence

1.	Ouvrez la boîte de dialogue Références.

2.	Trouvez le nom du projet contenant la procédure à appeler. Si le ce nom ne figure pas dans la boîte de dialogue Références, cliquez sur le bouton Parcourir pour le chercher.

3.	Cochez la case à gauche du nom de projet.

4.	Cliquez sur OK.

•	La procédure spécifiée n'est pas visible par la procédure d'appel.

Les procédures déclarées Private dans un module ne peuvent pas être appelées à partir de procédures en dehors du module. Si Option Private Module est en vigueur, les procédures du module ne sont pas accessibles depuis d'autres projets. Essayez de localiser la procédure.

•	Vous avez déclaré une routine de bibliothèque de liaisons dynamiques (DLL) ou une routine de code ressource Macintosh, mais cette routine ne se trouve pas dans la bibliothèque ou la ressource de code spécifiée.

•	Vérifiez le numéro (le cas échéant) ou le nom de la routine. Vérifiez que vous utilisez la bonne version de la DLL ou de la ressource de code Macintosh. Il se peut que la routine n'existe que dans les toutes dernières versions de la DLL ou de la ressource de code Macintosh. Si le répertoire contenant la version incorrecte précède celui contenant la bonne version dans votre chemin d'accès, la DLL ou la ressource de code Macintosh incorrecte est employée. Vous avez indiqué un nom de DLL ou de ressource de code Macintosh correct, mais celui-ci ne correspond pas à la version contenant la fonction spécifiée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Indice en dehors de la plage (erreur 9)

Les éléments de tableaux et les membres de collections ne sont accessibles qu'à l'intérieur de leurs plages définies. Causes et solutions de cette erreur :

•	Vous avez fait référence à un élément de tableau inexistant.

L'indice peut être plus grand ou plus petit que la plage d'indices possibles, ou le tableau peut ne pas avoir de dimensions attribuées à ce stade de l'application. Contrôlez la déclaration du tableau pour vérifiez ses limites supérieures et inférieures. Utilisez les fonctions UBound et LBound pour conditionner les accès aux tableaux si vous travaillez avec des tableaux redimensionnés. Si l'index est spécifié sous forme de variable, vérifiez l'orthographe du nom de la variable.

•	Vous avez déclaré un tableau mais n'avez pas spécifié le nombre d'éléments. Par exemple, le code suivant provoque cette erreur :

Dim MyArray() As Integer

MyArray(8) = 234	' Cause l'erreur 9.

Visual Basic ne dimensionne pas implicitement les plages de tableau en 0 – 10. Vous devez plutôt utiliser Dim ou ReDim pour spécifier explicitement le nombre d'éléments dans un tableau.

•	Vous avez fait référence à un membre de collection inexistant.

Essayez d'utiliser la structure For Each...Next au lieu de spécifier des éléments d'index.

•	Vous avez utilisé une forme abrégée d'indice qui spécifie implicitement un élément incorrect.

Par exemple, lorsque vous utilisez l'opérateur ! avec une collection, le ! spécifie une clé implicitement. Par exemple, object!keyname.value équivaut à object.item(keyname).value. Dans ce cas, une erreur est générée si keyname représente un nom de clé incorrect dans la collection. Pour rectifier cette erreur, utilisez un nom de clé ou un index correct pour la collection.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce composant ne gère pas cet ensemble d'événements (erreur 459)

Les composants ne gèrent pas tous la réception client des événements. Cause et solution de cette erreur :

•	Vous utilisez une variable WithEvents avec un composant qui ne fonctionne pas comme un événement source pour le jeu d'événements spécifié. Vous pouvez, par exemple, récupérer les événements d'un objet, puis créer un autre objet qui implémente (Implements) le premier objet. Même si vous pouvez penser à juste titre qu'il est possible de récupérer les événements d'un objet implémenté, ce n'est pas automatiquement le cas. Implements permet d'implémenter une interface seulement pour les méthodes et les propriétés.

Vous ne pouvez pas récupérer des événements pour un composant qui n'est pas source d'événements.

•	La variable WithEvents n'est pas gérée pour les UserControls de type Private car l'information de type nécessaire au déclenchement de l'objet ObjectEvent n'est pas disponible au moment de l'exécution.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Trop de clients application pour cette DLL (erreur 47)

La bibliothèque de liaisons dynamiques (DLL) de Visual Basic n'autorise que 50 accès d'application hôte à la fois. Cause et solution de cette erreur :

•	Votre application et d'autres applications hôtes Visual Basic (votre application pouvant accéder à certaines d'entre elles) tentent toutes d'accéder simultanément à la DLL de Visual Basic.

Réduisez le nombre d'applications ouvertes accédant à Visual Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Trop de fichiers (erreur 67)

Une limite est imposée quant au nombre de fichiers disque pouvant être ouverts simultanément. Causes et solutions de cette erreur :

•	Système d'exploitation MS-DOS : le nombre de fichiers créés dans le répertoire racine est supérieur au nombre maximum permis.

Le système d'exploitation MS-DOS limite le nombre de fichiers contenus dans le répertoire racine, généralement à 512. Si votre programme ouvre, ferme ou enregistre des fichiers dans le répertoire racine, modifiez-le afin qu'il utilise un sous-répertoire.

•	Système d'exploitation MS-DOS : Le nombre de fichiers ouverts est supérieur au nombre spécifié dans le paramètre files= du fichier CONFIG.SYS.

Augmentez la valeur spécifiée dans le paramètre files= du fichier CONFIG.SYS et redémarrez l'ordinateur.

•	Macintosh : Votre programme a tenté d'ouvrir plus de 40 fichiers.

Sur Macintosh, la limite standard est de 40 fichiers. Cette limite peut être modifiée à l'aide d'un utilitaire permettant de modifier le paramètre MaxFiles du bloc d'amorçage.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Type incompatible (erreur 13)

Visual Basic peut convertir et forcer plusieurs valeurs pour effectuer des affectations de type de données qui étaient impossibles dans des versions antérieures. Cependant, cette erreur peut toujours se produire et peut avoir les causes et solutions suivantes :

•	La variable ou la propriété n'est pas du type approprié. Par exemple, une variable nécessitant une valeur entière ne peut pas accepter de valeur de chaîne sauf si cette valeur peut être reconnue comme un entier.

Essayez d'effectuer des affectations uniquement entre types de données compatibles. Par exemple, un Integer peut toujours être affecté à une variable de type Long, un type Single peut toujours être affecté à une variable de type Double, et n'importe quel type (à l'exception d'un type défini par l'utilisateur) peut être affecté à une variable de type Variant.

•	Un objet a été passé à une procédure attendant une propriété ou une valeur simple.

Passez la propriété simple appropriée ou appelez une méthode adaptée à l'objet.

•	Un nom de module ou de projet a été utilisé à l'endroit où une expression était attendue, par exemple :

Debug.Print MyModule

Spécifiez une expression pouvant être affichée.

•	Vous avez tenté de combiner une gestion d'erreurs Basic traditionnelle avec des valeurs de type Variant ayant le sous-type Error (10, vbError), par exemple :

Error CVErr(n)

Pour générer à nouveau une erreur, vous devez trouver la correspondance à une erreur Visual Basic intrinsèque ou définie par l'utilisateur, puis générer cette erreur.

•	Une valeur CVErr ne peut pas être convertie en Date. Par exemple :

MyVar = CDate(CVErr(9))

Utilisez une instruction Select Case ou une structure similaire pour mapper le renvoi de CVErr à ce type de valeur.

•	Au moment de l'exécution, cette erreur indique généralement qu'une variable de type Variant utilisée dans une expression a un sous-type incorrect, ou qu'une variable de type Variant contient un tableau apparaissant dans une instruction Print #.

Pour imprimer des tableaux, créez une boucle affichant chaque élément individuellement.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Interruption par l'utilisateur (erreur 18)

Le processus d'interruption d'exécution est pratique, mais non géré il entraîne l'arrêt de l'application. Cause et solution de cette erreur :

•	Un utilisateur a appuyé sur CTRL+ATTN ou une autre touche d'interruption.

Dans l'environnement de développement, poursuivez l'exécution. Pour permettre l'occurrence de cette condition lors de l'exécution, gérez l'erreur de façon appropriée.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette variable utilise un type non géré par Visual Basic (erreur 458)

Certaines variables apparaissant dans une bibliothèque de types ou une bibliothèque d'objets ne peuvent pas être utilisées par tous les langages de programmation. Cause et solution de cette erreur :

•	Vous avez tenté d'utiliser une variable définie dans une bibliothèque de types ou une bibliothèque d'objets ayant un type de données non géré par Visual Basic.

Vous ne pouvez pas utiliser une variable d'un type non reconnu par Visual Basic dans un programme Visual Basic.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Nombre d'arguments incorrect ou affectation de propriété non valide (erreur 450)

Le nombre d'arguments d'une procédure doit correspondre au nombre de paramètres indiqué dans la définition de la procédure. Causes et solutions de cette erreur :

•	Le nombre d'arguments dans l'appel de la procédure ne correspondait pas au nombre d'arguments attendu par la procédure.

Vérifiez la liste d'arguments dans l'appel et comparez-la à la déclaration ou à la définition de la procédure.

•	Vous avez spécifié un index d'un contrôle ne faisant pas partie d'un tableau de contrôles.

La spécification d'index est interprétée comme un argument mais aucun index ni argument n'est attendu, ce qui provoque l'erreur. Retirez la spécification d'index, ou exécutez la procédure de création d'un tableau de contrôle. Attribuez à la propriété Index une valeur différente de zéro dans la feuille de propriétés du contrôle ou dans la fenêtre de propriétés au moment de la création.

•	Vous avez tenté d'attribuer une valeur à une propriété en lecture seule, ou vous avez tenté d'attribuer une valeur à une propriété pour laquelle il n'existe aucune procédure Property Let.

L'attribution d'une valeur à une propriété correspond au passage de la valeur sous forme d'argument à la procédure Property Let de l'objet. Définissez correctement la procédure Property Let ; elle doit avoir un argument de plus que la procédure Property Get correspondante. Si la propriété doit être en lecture seule, vous ne pouvez pas lui attribuer de valeur.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Un composant ActiveX ne peut pas créer l'objet ou fournir une référence à cet objet (erreur 429)

Pour créer des objets, la classe de l'objet doit être enregistrée dans la base de registres du système et les bibliothèques de liaisons dynamiques (DLL) doivent être accessibles. Causes et solutions de cette erreur :

•	La classe n'était pas enregistrée. Par exemple, la base de registres du système n'a aucune mention de la classe, ou la classe est mentionnée, mais spécifie un mauvais type de fichier ou un fichier introuvable.

Si possible, tentez de lancer l'application de l'objet. Si les informations de registre sont périmées ou erronées, l'application devrait vérifier la base de registres et corriger ces informations. Si le lancement de l'application ne corrige pas le problème, relancez le programme d'installation de l'application.

•	Une DLL requise par l'objet ne peut pas être utilisée, soit parce qu'elle est introuvable, soit parce qu'elle est altérée.

Vérifiez que toutes les DLL associées sont disponibles. Par exemple, l'objet d'accès aux données (DAO) nécessite des DLL de support variant d'une plate-forme à l'autre. Vous devrez éventuellement relancer le programme d'installation d'un tel objet si telle est l'erreur.

•	L'objet est disponible sur la machine, mais correspond à un objet Automation sous licence et ne peut pas vérifier la disponibilité de la licence nécessaire pour l'employer.

Certains objets ne peuvent être employés que si le composant a trouvé une clé de licence certifiant que l'objet est enregistré pour créer une instance sur la machine courante. Lorsqu'une référence est effectuée à un objet par l'intermédiaire d'une bibliothèque de types ou d'une bibliothèque d'objets correctement installée, la clé appropriée est fournie automatiquement.

Si la tentative de création d'instance découle d'un appel CreateObject ou GetObject, l'objet doit trouver la clé. Dans ce cas, il peut effectuer une recherche dans la base de registres du système ou rechercher un fichier spécial qu'il crée lors de son installation, par exemple, un fichier portant l'extension .lic. Si la clé demeure introuvable, l'objet ne peut pas être lancé. Si un utilisateur final n'a pas bien installé l'application de l'objet, a supprimé accidentellement un fichier nécessaire, ou a modifié la base de registres du système, l'objet ne pourra pas trouver sa clé. Dans ce cas, l'objet ne peut pas être lancé. La création d'instance peut ainsi fonctionner sur le système du développeur, mais pas sur le système de l'utilisateur. L'utilisateur devra éventuellement réinstaller l'objet sous licence.

•	Vous tentez d'utiliser la fonction GetObject pour extraire une référence à une classe créée avec Visual Basic.

GetObject ne peut pas être utilisé pour obtenir une référence à une classe créée avec Visual Basic.

•	L'accès à l'objet a été explicitement refusé.

Par exemple, vous pourriez tenter d'accéder à un objet de données actuellement utilisé et verrouillé pour éviter tout blocage. Si c'est le cas, vous pourrez éventuellement accéder à l'objet ultérieurement.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Valeur de propriété incorrecte (erreur 380)

La plupart des propriétés acceptent uniquement des valeurs d'un certain type, à l'intérieur d'une certaine plage. Cause et solution de cette erreur :

•	Une valeur incorrecte a été affectée à une propriété.

Consultez la rubrique d'aide de la propriété pour identifier les types et la plage de valeur appropriés pour cette propriété.

Pour plus d'informations, sélectionnez la propriété en question et appuyez sur F1.


Image incorrecte (erreur 481)

Seule une image peut être affectée à la propriété Picture ou à l'objet Picture. Cause et solution de cette erreur :

•	Vous avez tenté d'affecter un élément à une propriété Picture ou à un objet Picture n'étant pas reconnu comme une icône, une image bitmap ou un métafichier Microsoft Windows.

Reportez-vous à la rubrique d'aide de l'objet ou de la propriété Picture de l'objet utilisé pour identifier les types d'image acceptables.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Format incorrect dans le fichier ressource (erreur 325)

Lors de l'accès à un fichier de ressource, la ressource que vous tentez d'extraire doit avoir un format valide. Cause et solution de cette erreur :

•	Le fichier de ressource que vous tentez d'extraire a un format incorrect, ou une ressource spécifique du fichier a un format incorrect.

Si le contenu du fichier a été endommagé, réinstallez le fichier à partir de sa disquette d'origine. Si l'erreur persiste, contactez le fournisseur de la ressource pour obtenir un nouveau fichier ou une version de la ressource ayant le format attendu.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette clé est déjà associée à un élément de cette collection (erreur 457)

Une clé est une chaîne spécifiée dans la méthode Add identifiant de façon unique un membre spécifique d'une collection. Cause et solution de cette erreur :

•	Vous avez tenté de spécifier une clé pour un membre de collection identifiant déjà un autre membre de cette collection.

Choisissez une autre clé pour ce membre.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce tableau est fixe ou temporairement verrouillé (erreur 10)

Certains tableaux ne peuvent pas être redimensionnés. Même les tableaux spécifiquement déclarés comme dynamiques et les tableaux à l'intérieur de variables de type Variant sont parfois temporairement verrouillés. Causes et solutions de cette erreur :

•	Vous avez tenté d'utiliser ReDim pour changer le nombre d'éléments d'un tableau à taille fixe. Par exemple, dans le code suivant, le tableau FixedArr est reçu par SomeArr dans la procédure NextOne, et une tentative est effectuée pour redimensionner SomeArr :

Sub FirstOne

Dim FixedArr(25) As Integer	' Crée un tableau à

' taille fixe et

NextOne FixedArr()	' le passe à une autre

' procédure.

End Sub

Sub NextOne(SomeArr() As Integer)

ReDim SomeArr(35)	' L'erreur 10 se produit ici.

. . .

End Sub

Convertissez le tableau fixe en tableau dynamique en le déclarant avec ReDim (si le tableau est déclaré à l'intérieur d'une procédure), ou déclarez-le sans spécifier le nombre d'éléments (si le tableau est déclaré au niveau module).

•	Vous avez tenté de redimensionner un tableau dynamique de niveau module, dans lequel un élément a été passé sous forme d'argument à une procédure. Par exemple, dans le code suivant, ModArray est un tableau dynamique de niveau module dont le quarante-cinquième élément est passé par référence à la procédure Test :

Dim ModArray () As Integer	' Crée un tableau

' dynamique de niveau

' module.

. . .

Sub AliasError()

ReDim ModArray (1 To 73) As Integer

Test ModArray (45)	' Passe un élément

' du tableau de niveau

' module à la procédure

' Test.

End Sub

Sub Test(SomeInt As Integer)

ReDim ModArray (1 To 40) As Integer  ' Une erreur

' se produit ici.

End Sub

Il n'est pas nécessaire de passer un élément du tableau de niveau module dans ce cas, puisqu'il est visible à l'intérieur de toutes les procédures du module. Cependant, si un élément est passé, le tableau est verrouillé pour empêcher une désaffectation de mémoire pour le paramètre de référence à l'intérieur de la procédure, ce qui entraînerait un comportement imprévisible lors du retour de la procédure.

•	Vous avez tenté d'affecter une valeur à une variable de type Variant contenant un tableau, mais la variable Variant est actuellement verrouillée. Par exemple, si votre code utilise une boucle For Each...Next pour effectuer une itération sur une variable Variant contenant un tableau, ce dernier est verrouillé à l'entrée de la boucle, puis libéré à la fin de la boucle :

SomeArray = Array(9,8,7,6,5,4,3,2,1)

For Each X In SomeArray

SomeArray = 301	' Provoque une erreur puisque

' le tableau est verrouillé.

Next X

Utilisez une structure For...Next à la place d'une boucle For Each...Next pour effectuer une itération. Lorsqu'un tableau est l'objet d'une boucle For Each...Next, vous pouvez lire le tableau, mais vous ne pouvez pas y écrire.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Nom de fichier ou de classe non trouvé pendant une opération Automation (erreur 432)

La fonction GetObject nécessite un nom valide avec une spécification de chemin d'accès, ou le nom d'une classe enregistrée dans le système. Cause et solution de cette erreur :

•	Le nom spécifié pour le nom de fichier ou la classe dans un appel de la fonction GetObject est introuvable.

Vérifiez les noms et recommencez. Vérifiez que le nom utilisé pour le paramètre class correspond à celui enregistré dans le système.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'objet Automation n'a pas de valeur par défaut (erreur 443)

Lorsque vous spécifiez un nom d'objet sans propriété ni méthode, Visual Basic part du principe que vous faites référence au membre par défaut de l'objet (propriété ou méthode). Cependant, certains objets n'exposent pas de membre par défaut. Cause et solution de cette erreur :

•	Visual Basic ne peut pas déterminer le membre par défaut de l'objet spécifié.

Consultez la documentation de l'objet et donnez une spécification explicite pour la propriété ou la méthode.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le serveur distant n'existe pas ou n'est pas disponible (erreur 462)

La fonction CreateObject nécessite un serveur valide. Cause et solution de cette erreur :

•	Un paramètre de serveur a été indiqué, mais le serveur est demeuré introuvable ou inaccessible.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La classe n'est pas enregistrée sur la machine locale (erreur 463)

La fonction CreateObject nécessite un serveur valide. Causes et solutions de cette erreur :

•	Un paramètre de serveur a été indiqué, mais le progid de classe spécifié (c'est-à-dire le premier paramètre de la fonction CreateObject) n'a pas été enregistré sur le système local.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Méthode ou membre de données introuvable (erreur 461)

La collection, l'objet ou le type défini par l'utilisateur ne contient pas le membre référencé. Causes et solutions de cette erreur :

•	Vous avez mal orthographié le nom de l'objet ou du membre.

Vérifiez l'orthographe des noms ainsi que l'instruction Type ou la documentation de l'objet pour déterminer la nature des membres et l'orthographe correct.

•	Vous avez indiqué un index de collection hors limite.

Vérifiez la propriété Count pour déterminer si un membre de collection existe. Notez que les index de collections commencent à 1 plutôt qu'à zéro, afin que la propriété Count renvoie le numéro d'index le plus élevé possible.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


<Item> n'est pas un type de contrôle correct (erreur 720)

Seuls les composants ActiveX valides peuvent être affectés comme contrôles aux feuilles. Causes et solutions de cette erreur :

•	Vous avez tenté d'affecter un composant ActiveX comme contrôle à une feuille. Or, ce contrôle n'est pas reconnu comme un composant de contrôle correct.

Consultez la rubrique d'aide relative à la construction de contrôles ActiveX afin de déterminer les éléments autorisés dans un contrôle.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur inattendue; abandon

Une erreur inattendue s'est produite et Visual Basic n'a pas pu continuer. Il peut s'agir d'un problème matériel ou d'une conséquence de l'utilisation d'un autre logiciel sur votre système.


Les valeurs correctes sont des entiers compris entre 1 et 32

Vous avez essayé de définir la propriété TabStop Width en dehors de la plage autorisée. La valeur de ce champ doit être comprise entre 1 et 32 (inclus).


Les valeurs correctes sont des entiers compris entre 2 et 60

Vous avez essayé de définir la propriété Grid Width ou Grid Height en dehors de la plage autorisée. La valeur de ce champ doit être comprise entre 2 et 60 (inclus).


L'élément spécifié est une feuille binaire et ne peut pas être chargé dans Visual Basic.
L'élément spécifié est une feuille binaire et ne peut pas être chargé dans Visual Basic

Les feuilles binaires créées dans des versions antérieures ne peuvent pas être chargées dans cette version de Visual Basic. Seules les versions 2.0 et 3.0 de Visual Basic gèrent la conversion des feuilles binaires en ASCII. Si vous possédez une copie de Visual Basic 2.0 ou 3.0, vous pouvez charger une feuille créée dans la version 1.0 et l'une de ces deux versions et l'enregistrer au format texte. Vous pourrez ensuite importer la feuille convertie au format texte dans Visual Basic.


Fichier de projet en lecture seule

Vous ne pouvez pas écrire dans ce fichier de projet. Pour le modifier, vous devez l'enregistrer sous un nom différent ou lui retirer l'attribut lecture seule.


Fichier en lecture seule

Vous ne pouvez pas écrire dans ce fichier. Pour le  modifier, vous devez l'enregistrer sous un nom différent et lui retirer l'attribut lecture seule.


Une procédure de ce nom existe déjà

Les noms de procédure figurant au sein d'une même portée doivent être distincts. Changez le nom de la procédure.


Le fichier de projet spécifié contient une valeur de clé incorrecte. La plage autorisée est comprise entre 0 et 'élément3'

La plage des valeurs de clé est limitée. Respectez la plage spécifiée.


Le nom du projet est trop long. Le nom a été tronqué

Si le nom du projet dépasse la longueur autorisée, il est "tronqué" (coupé) à la longueur maximale qui est autorisée.


Le fichier projet spécifié contient une clé incorrecte. Impossible de charger le projet

Vous ne pouvez pas charger le projet tant que le fichier de projet contient une clé incorrecte.


L'élément spécifié est une clé incorrecte. Le fichier spécifié ne peut pas être chargé.

Vous ne pouvez pas charger le fichier tant qu'il contient une clé incorrecte.


Le fichier de projet spécifié contient une valeur de clé incorrecte.

La valeur de clé indiquée est incorrecte. Vous devez la modifier.


Mémoire insuffisante pour exécuter; abandon.

Visual Basic ne dispose pas d'assez de mémoire pour être exécuté. Fermez d'autres applications et essayez de nouveau.


Mauvaise version du système d'exploitation; les versions spécifiées de Windows NT 3.51 ou de Windows 95 sont requises.

Pour exécuter cette version de Visual Basic, vous devez utiliser la version indiquée de Windows 95 ou de Windows NT 3.51.


L'erreur système spécifiée s'est produite.

Visual Basic a rencontré un erreur générée par le système ou par un composant externe.


Le fichier spécifié est marqué comme version non gérée par la version courante de Visual Basic et ne sera pas chargé.

Vous avez essayé de charger une feuille depuis la version 1.0 de Visual Basic ou depuis une version plus récente que celle que vous utilisez. Ce type d'opération n'est pas pris en charge.


Le fichier de projet spécifié est endommagé et ne peut pas être chargé

Visual Basic ne peut pas lire le fichier de projet. Un tel cas de figure peut se présenter si le fichier a été modifié dans un éditeur externe à Visual Basic. Pour remédier au problème, annulez toutes les modifications apportées au fichier.


Impossible d'écrire dans le fichier cache du Concepteur spécifié. Le chargement utilisera les fichiers normaux.

Votre concepteur ActiveX n'a pas pu écrire des informations dans un fichier cache ; les informations seront chargées sans utiliser de mémoire cache.

Pour améliorer les performances lors du prochain lancement de Visual Basic, le concepteur ActiveX écrit dans un fichier cache. Une telle opération n'a pas été possible ici en raison du manque d'espace sur le disque ou de la protection en écriture du lecteur. Vérifiez que vous disposez de suffisamment d'espace sur le disque et que vous possédez les autorisations nécessaires. Si le problème persiste, contactez le distributeur du concepteur ActiveX.


Mémoire insuffisante pour charger le fichier

Visual Basic ne dispose pas d'assez de mémoire pour charger le fichier. Fermez d'autres applications et essayez de nouveau.


Nom de procédure dupliqué

Vous avez défini (ou essayé de définir) plusieurs versions d'une procédure en leur attribuant le même nom. Renommez l'une des procédures. Assurez-vous que les instructions Declare dupliquées de la même procédure comportent la même locution Alias.


Impossible d'afficher l'aide

L'application d'aide de Windows n'est pas disponible. Si l'utilitaire d'affichage MSDN Library se trouve sur votre ordinateur, vérifiez son chemin d'accès. Dans le cas contraire, vous devez l'installer afin de pouvoir consulter l'aide.


Impossible d'afficher les informations système

Visual Basic ne peut pas afficher les informations système lorsque vous choisissez Infos système dans la boîte de dialogue À propos de Microsoft Visual Basic. La mémoire de votre système est peut-être insuffisante ou bien l'un des fichiers requis est endommagé ou manquant.


Cette description d'application ne peut pas comprendre plus de 2 000 caractères.
Cette description d'application ne peut pas comprendre plus de 2 000 caractères

La description d'une application ne peut pas contenir plus de 2 000 caractères. Supprimez quelques caractères.


Spécifiez le(s) élément(s) à imprimer

Vous n'avez pas indiqué les éléments à imprimer. Activez au moins l'une des deux cases à cocher Feuille ou Code de la boîte de dialogue Imprimer après avoir choisi Imprimer dans le menu Fichier.


Le nom spécifié est incorrect

Les noms de feuille et de contrôle doivent commencer par une lettre et comporter 40 caractères au maximum — lettres, chiffres et trait de soulignement (_) inclus.

Notez que la propriété Name d'une feuille ou d'un contrôle est différente des propriétés Label — Caption, Text et Value — qui décrivent ou affichent le contenu d'un contrôle au moment de l'exécution. Ces propriétés peuvent être des mots clés avec restrictions, commencer par un chiffre et contenir des caractères non alphanumériques.


Le nom de module, de projet ou de bibliothèque d'objets spécifié est déjà utilisé.
Le nom de module, de projet ou de bibliothèque d'objets spécifié est déjà utilisé

Les causes suivantes peuvent être à l'origine de cette erreur :

•	Vous avez chargé une feuille, un contrôle utilisateur, un document utilisateur ou une page de propriétés contenant des objets dont les noms entrent en conflit. Ce cas de figure peut se présenter si le fichier a été modifié à l'extérieur de Visual Basic.

•	Cette erreur peut se produire lorsque vous renommez une feuille en lui attribuant le même nom que celui du projet, d'une autre feuille ou d'un module. Et inversement, l'erreur se produira si vous renommez le projet en lui donnant le nom d'une feuille ou d'un module existant.


Impossible de définir le nom du projet à ce stade

Le nom du projet ne peut pas être défini maintenant.


Le composant ActiveX spécifié n'est pas correctement enregistré ou est introuvable.

Un composant devrait être enregistré dans la base de registres. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Les informations de la base de registres du composant étant incorrectes, le composant est introuvable.

Corrigez la base de registres. Le cas échéant, réinstallez le composant.

•	Le composant a été retiré par suppression alors qu'il aurait dû l'être par un programme de désinstallation.

Remplacez les fichiers du composant dans le répertoire indiqué dans la base de registres.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Opération impossible car le projet est protégé.

Certaines actions ne sont pas autorisées lorsqu'un projet est protégé. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Le projet a été protégé par erreur.

Retirez la protection, puis recommencez l'opération.

•	Le projet a été protégé intentionnellement.

Ne tentez pas cette opération tant que la protection n'a pas été retirée par la personne qui l'a définie en premier.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de démarrer un nouvel enregistrement avant la fin de la session en cours

Il est impossible "d'imbriquer" des enregistrements. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	L'enregistreur est déjà en exécution.

Terminez l'enregistrement en cours avant d'en commencer un nouveau.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Voulez-vous exporter l'objet spécifié avant de le supprimer?

Vous pouvez exporter des feuilles et des modules et les recharger ultérieurement. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous êtes en train de supprimer une feuille ou un module du projet.

Pour conserver le module en l'état, exportez-le. Vous pourrez ainsi l'importer ultérieurement.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La classe de feuille contenue dans le fichier spécifié n'est pas prise en charge dans Visual Basic pour Applications ; ce fichier ne peut pas être chargé.

Visual Basic pour Applications ne prend en charge que les objets feuille UserForm. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous essayez de charger une feuille issue d'une version précédente de Visual Basic ou d'une version actuelle autonome de Visual Basic.

Il sera probablement plus simple de recréer la feuille à l'aide des outils UserForm au sein de Visual Basic pour Applications. Si vous pouvez enregistrer la feuille au format ASCII, vous serez en mesure de la modifier et de l'importer. Toutefois, vous devez maîtriser complètement les formats et limitations associés aux différents logiciels de création de feuilles.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le fichier spécifié ne peut pas être chargé.

Certains fichiers ne peuvent pas être chargés dans Visual Basic pour Applications. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Le format du fichier que vous essayez de charger ne peut pas être interprété par Visual Basic ou le fichier est endommagé.

Vous ne pouvez pas charger le fichier.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette commande va arrêter le débogueur.

Certaines commandes et actions ont pour conséquence l'arrêt de l'analyse du code par Visual Basic. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Certaines modifications (comme la déclaration d'une variable (Static) et certaines commandes, par exemple celles permettant d'ajouter un module ou une feuille, entraînent l'arrêt du code en exécution ou suspendu.

Si vous ne souhaitez pas arrêter l'exécution du code, vous ne devez pas ajouter ou exécuter la commande.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Vous devez enregistrer ce projet avant de pouvoir le référencer.

Vous ne pouvez pas ajouter de référence à un projet non enregistré. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé d'ajouter une référence à un projet non enregistré.

Enregistrez le projet avant d'ajouter la référence.

Pour plus d'informations, sélectionnez l'élément concerné puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Utilisation d'objet incorrecte (Erreur 425)

La plupart des objets ne peuvent être utilisés que de certaines façons, notamment lorsque vous tentez de les utiliser à l'extérieur de la portée à laquelle ils sont destinés. Par exemple, la référence à un objet transmise à un événement glisser-déplacer ne pourra probablement être utilisée que dans le contexte de cet événement.


Impossible d'imprimer l'image de feuille sur ce type d'imprimante (Erreur 486)

Vous devez disposer d'une imprimante graphique pour imprimer l'image d'une feuille.


L'objet spécifié ne peut être utilisé comme une feuille pour la méthode Show() (Erreur 371)

Vous devez utiliser un objet approprié avec la méthode Show.


Le contrôle ActiveX spécifié est introuvable (Erreur 363)

La feuille qui est chargée contient un contrôle ActiveX n'appartenant pas au projet en cours. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez peut-être modifié manuellement le fichier .vbp du projet afin d'ajouter une feuille contenant un contrôle ActiveX qui ne fait pas partie du projet.

Une fois le projet chargé, utilisez la commande Ajouter un fichier dans le menu Fichier afin d'ajouter le contrôle ActiveX au projet.

•	Vous avez peut-être modifié manuellement le fichier .vbp du projet afin d'ajouter une feuille contenant un contrôle ActiveX dont la version est antérieure à celle du contrôle ActiveX qui figure déjà dans le projet.

Une fois le projet chargé, supprimez l'ancienne version de la feuille et insérez la version la plus récente du contrôle sur la feuille.


Le composant ActiveX n'est pas correctement enregistré (Erreur 336)

Le composant ActiveX n'a pas été correctement enregistré dans la base de registres.


Valeur mentionnée introuvable (Erreur 327)

La valeur est introuvable.


Image incorrecte (Erreur 481)

Un format graphique incorrect a été associé à la propriété Picture. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé d'associer un format graphique qui n'est ni une image en mode point, ni une icône, ni un métafichier Windows à la propriété Picture d'une feuille ou d'un contrôle.

Vérifiez que le fichier que vous essayez de charger dans la propriété Picture est un fichier graphique pris en charge par Visual Basic.


Erreur d'imprimante (Erreur 482)

Un problème empêche l'impression. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Aucune imprimante n'est installée dans le Panneau de configuration de Windows.

Ouvrez le Panneau de configuration, double-cliquez sur l'icône Imprimantes, puis cliquez sur le bouton Ajouter une imprimante pour installer une imprimante.

•	Votre imprimante n'est pas en ligne.

Mettez l'imprimante en ligne en appuyant sur le bouton approprié.

•	Il y a un bourrage ou l'imprimante ne contient plus de papier.

Remédiez à ce problème.

•	Vous avez tenté d'imprimer une feuille sur une imprimante qui ne peut imprimer que du texte.

Utilisez une imprimante capable d'imprimer des graphiques.


Le gestionnaire d'imprimante ne gère pas la propriété spécifiée (Erreur 483)

Le pilote d'imprimante ne gère pas cette propriété de l'objet Printer. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Les effets des propriétés associées à l'objet Printer dépendent du pilote fourni par le fabricant de l'imprimante. Il se peut que certaines valeurs de propriété n'aient aucun effet ou que plusieurs propriétés produisent exactement le même effet. Selon les cas, les valeurs situées en dehors de la plage de valeurs acceptées produisent ou non une erreur.

Pour plus d'informations, consultez la documentation du pilote d'imprimante fournie par le fabricant.


Problème pour obtenir des informations du gestionnaire d'imprimante du système; assurez-vous que le gestionnaire d'imprimante est installé correctement (Erreur 484)

Les informations concernant l'imprimante ne peuvent pas être obtenues du système. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Aucune imprimante n'est installée dans le Panneau de configuration de Windows.

Ouvrez le Panneau de configuration, double-cliquez sur l'icône Imprimantes, puis cliquez sur le bouton Ajouter une imprimante pour installer une imprimante.

•	Votre imprimante n'est pas en ligne.

Mettez l'imprimante en ligne en appuyant sur le bouton approprié.

•	Il y a un bourrage ou l'imprimante ne contient plus de papier.

Remédiez à ce problème.


Type d'image incorrect (Erreur 485)

Le format graphique du fichier de ressources que vous avez essayé de charger ne correspond pas à la propriété associée à l'objet. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'utiliser la méthode LoadResPicture pour charger une ressource de type image bitmap comme propriété Icon d'une feuille.

Remplacez la propriété par la propriété Picture ou remplacez la valeur de l'argument format de la méthode LoadResPicture par vbResIcon.

•	Vous avez essayé d'utiliser la méthode LoadResPicture pour charger une ressource de type curseur comme propriété d'un objet ou d'un contrôle autre que la propriété MousePointer.

Utilisez la propriété MousePointer.


Impossible de vider le Presse-papiers (Erreur 520)

Le Presse-papiers a été ouvert mais n'a pas pu être vidé. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Une autre application utilise le Presse-papiers et ne le libérera pas pour votre application.

Dans votre code, prévoyez un dispositif de récupération d'erreur pour cette situation ainsi qu'une zone de message dotée des boutons Réessayer et Annuler, afin de permettre à l'utilisateur d'essayer de nouveau après une courte pause.


Impossible d'ouvrir le Presse-papiers (Erreur 521)

Le Presse-papiers a déjà été ouvert par une autre application. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Une autre application utilise le Presse-papiers et ne le libérera pas pour votre application.

Dans votre code, prévoyez un dispositif de récupération d'erreur pour cette situation ainsi qu'une zone de message dotée des boutons Réessayer et Annuler, afin de permettre à l'utilisateur d'essayer de nouveau après une courte pause.


Le format spécifié ne correspond pas au format des données (Erreur 461)

Le format d'objet Clipboard indiqué n'est pas compatible avec la méthode exécutée. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'utiliser la méthode GetText ou SetText avec un format d'objet Clipboard autre que vbCFText ou vbCFLink.

Avant d'utiliser ces méthodes, vérifiez à l'aide de la méthode GetFormat si le contenu de l'objet Clipboard correspond au format indiqué.

•	Vous avez essayé d'utiliser la méthode GetData ou SetData avec un format d'objet Clipboard autre que vbCFBitmap, vbCFDIB ou vbCFMetafile.

Avant d'utiliser ces méthodes, vérifiez à l'aide de la méthode GetFormat si le contenu de l'objet Clipboard correspond au format graphique indiqué.


Format de Presse-papiers incorrect (Erreur 460)

Le format d'objet Clipboard indiqué n'est pas compatible avec la méthode exécutée. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'utiliser la méthode GetText ou SetText avec un format d'objet Clipboard autre que vbCFText ou vbCFLink.

Supprimez le format incorrect et indiquez l'un de ces deux formats.

•	Vous avez essayé d'utiliser la méthode GetData ou SetData avec un format d'objet Clipboard autre que vbCFBitmap, vbCFDIB ou vbCFMetafile.

Supprimez le format incorrect et indiquez l'un de ces trois formats graphiques.


Les informations de licence de ce composant sont introuvables. Vous n'avez pas la licence adéquate pour utiliser cette fonctionnalité dans l'environnement de création (Erreur 429)

Vous ne disposez pas de la licence requise pour utiliser ce contrôle ActiveX. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé de placer un contrôle ActiveX sur une feuille au moment de la création ou tenté d'ajouter une feuille comportant un contrôle ActiveX au projet mais les informations associées sont introuvables dans la base de registres.

Les informations ont peut-être été supprimées de la base de registres ou sont endommagées. Réinstallez le contrôle ActiveX ou contactez le distributeur du contrôle.


Feuille déjà affichée; impossible d'afficher modalement (Erreur 400)

Vous ne pouvez pas utiliser la méthode Show pour afficher une feuille en tant que feuille modale si elle est déjà visible. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé d'appliquer à une feuille déjà visible la méthode Show avec l'argument style égal à 1 (vbModal).

Utilisez l'instruction Unload ou la méthode Hide sur la feuille avant d'essayer de l'afficher en tant que feuille modale.


Vous devez d'abord fermer ou cacher la feuille modale de premier plan (Erreur 402)

La feuille modale que vous essayez de fermer ou de cacher ne se situe pas à un niveau hiérarchique de premier plan. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Une autre feuille modale se situe à un niveau hiérarchique supérieur à celui occupé par la feuille modale que vous essayez de fermer ou de cacher.

Appliquez tout d'abord l'instruction Unload ou la méthode Hide aux feuilles modales situées à un niveau hiérarchique supérieur. Une feuille modale est une feuille affichée par la méthode Show avec l'argument style égal à 1 (vbModal).


Impossible de charger ou de décharger cet objet (Erreur 361)

Une instruction Load ou Unload a fait référence à un objet ou à un contrôle incorrect. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé de charger ou de décharger un objet qui ne peut pas être chargé (tel qu'un objet Screen, Printer ou Clipboard).

Supprimez l'instruction incorrecte de votre code.

•	Vous avez essayé de charger ou de décharger un contrôle qui ne fait pas partie d'un groupe de contrôles. Par exemple, utilisée avec un contrôle TextBox dont la propriété Name a la valeur Text1, l'instruction Load Text1 provoquerait cette erreur.

Supprimez de votre code l'instruction incorrecte ou faites référence à un contrôle faisant partie d'un groupe de contrôles.

•	Vous avez essayé de décharger un contrôle Menu dans l'événement Click de son menu parent.

Déchargez le contrôle Menu en adoptant une autre procédure.

•	Vous avez essayé de décharger le dernier élément de menu visible d'un contrôle Menu.

Vérifiez la valeur de la propriété Visible des autres éléments de menu faisant partie du groupe de contrôles avant d'essayer de décharger un élément de menu. Vous avez également la possibilité de supprimer l'instruction incorrecte dans votre code.


Objet déjà chargé (Erreur 360)

Le contrôle situé dans le groupe de contrôles a déjà été chargé. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé d'utiliser l'instruction Load pour ajouter un contrôle à un groupe de contrôles au moment de l'exécution, mais la valeur d'index que vous avez indiquée existe déjà.

Indiquez une autre valeur d'index ou vérifiez si votre code exécute plusieurs fois la même instruction Load en utilisant une référence à la même valeur d'index.


Feuille introuvable (Erreur 424)

La feuille n'a pas été trouvée. La cause de cette erreur et la solution pour la corriger sont les suivantes :

Vous avez essayé d'ajouter une feuille à la collection UserForms à l'aide de la méthode Add, mais aucune classe de feuille ne porte ce nom. Par exemple, UserForms.Add "MyForm", où MyForm n'existe pas.

Note   Vérifiez que le nom de classe utilisé figure dans votre projet.


Impossible de décharger dans ce contexte (Erreur 365)

Dans certains cas, vous ne pouvez pas décharger une feuille ou un contrôle situé sur une feuille. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Il y a une instruction Unload dans l'événement Paint correspondant à la feuille ou à un contrôle de la feuille possédant cet événement.

Supprimez l'instruction Unload de l'événement Paint.

•	Il y a une instruction Unload dans l'événement Change, Click ou DropDown d'un contrôle ComboBox.

Supprimez l'instruction Unload de l'événement.

•	Il y a une instruction Unload dans l'événement Scroll d'un contrôle HScrollBar ou VScrollBar.

Supprimez l'instruction Unload de l'événement.

•	Il y a une instruction Unload dans l'événement Resize d'un contrôle Data, Form, MDIForm ou PictureBox.

Supprimez l'instruction Unload de l'événement.

•	Il y a une instruction Unload dans l'événement Resize d'un contrôle MDIForm qui tente de décharger une feuille fille MDI.

Supprimez l'instruction Unload de l'événement.

•	Il y a une instruction Unload dans l'événement RePosition ou Validate d'un contrôle Data.

Supprimez l'instruction Unload de l'événement.

•	Il y a une instruction Unload dans l'événement ObjectMove d'un contrôle OLE Container.

Supprimez l'instruction Unload de l'événement.


Impossible de charger la DLL système spécifiée (Erreur 298)

Un fichier .dll (par exemple, DDEML.dll, VERSION.dll ou WINSPOOL.DRV) fourni par le système d'exploitation est introuvable. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le chemin d'accès au fichier n'est pas correct.

Vérifiez que le fichier .dll se trouve dans le dossier SYSTEM de Microsoft Windows.

•	Le fichier .dll est endommagé ou bien a été supprimé.

Chargez de nouveau le fichier .dll.

•	Il n'y a pas assez d'espace mémoire ou d'espace interchangeable.

Essayez de libérer de la mémoire en fermant d'autres applications.


Impossible d'utiliser des noms de périphérique dans des noms de fichier (Erreur 320)

Dans Visual Basic, vous ne pouvez pas attribuer à un fichier un nom identique à celui d'un pilote de périphérique de type caractère. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé de donner à un fichier un nom tel que AUX, CON, COM1, COM2, LPT1, LPT2, LPT3, LPT4 ou NUL.

Choisissez un autre nom.


Format de fichier incorrect (Erreur 321)

Un fichier de feuille Visual Basic est endommagé. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La feuille contient un contrôle ActiveX endommagé.

Essayez de remplacer ce contrôle sur la feuille.

•	Le nombre de propriétés associées à la version en cours du contrôle ActiveX ne correspond pas au nombre prévu.

Essayez de remplacer ce contrôle par une version antérieure ou ultérieure.


Paramètre incorrect. Impossible d'écrire des tableaux (Erreur 328)

Un paramètre incorrect a été transmis à la méthode. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Dans l'événement WriteProperties de votre contrôle utilisateur, vous avez essayé d'ajouter PropBag.WriteProperty X, où X est un tableau. Cette opération n'est pas acceptée.

Vous devez écrire chaque élément du tableau distinctement.


Impossible d'accéder à la base de registres (Erreur 335)

L'opération de lecture ou d'écriture dans la base de registres a échoué.


Composant ActiveX introuvable (Erreur 337)

Le fichier .exe ou .dll demandé est introuvable.


Erreur d'exécution du composant ActiveX (Erreur 338)

Le fichier .exe du composant ActiveX n'a pas fonctionné correctement. Il y a peut-être un problème au niveau des informations de la base de registres.


Objet déchargé (Erreur 364)

Une feuille a été déchargée à partir de sa propre procédure _Load. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Une feuille dont la procédure _Load contient une instruction Unload a été chargée implicitement. Par exemple, le code suivant charge implicitement la feuille YourForm si ce n'est déjà fait :

MyForm.BackColor = YourForm.BackColor.

Supprimez l'instruction Unload de la procédure Form_Load.


Le fichier spécifié est périmé. Ce programme requiert une version plus récente (Erreur 368)

Un contrôle ActiveX est considéré comme périmé. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Le nombre de propriétés de la version en cours du contrôle ActiveX ne correspond pas au nombre prévu de propriétés.

Remplacez le contrôle ActiveX par une version plus récente.


Valeur de propriété incorrecte (Erreur 380)

Une valeur incorrecte a été attribuée à une propriété. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé d'attribuer une valeur située en dehors de la plage autorisée à l'une des propriétés d'un objet ou d'un contrôle.

Attribuez une valeur correcte à la propriété. Par exemple, la propriété MousePointer accepte uniquement les nombres entiers compris entre 0 à 15 ou 99.


La propriété spécifiée ne peut pas être définie au moment de l'exécution (Erreur 382)

La propriété est en lecture seule au moment de l'exécution. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé de définir ou de modifier une propriété dont la valeur ne peut être indiquée qu'au moment de la création.

Supprimez la référence à la propriété de votre code ou modifiez la référence afin de renvoyer uniquement la valeur de la propriété au moment de l'exécution.


La propriété spécifiée est en lecture seule (Erreur 383)

La propriété est en lecture seule au moment de la création et de l'exécution. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé de définir ou de modifier une propriété dont la valeur peut être uniquement lue.

Supprimez la référence à la propriété de votre code ou modifiez la référence afin de renvoyer uniquement la valeur de la propriété au moment de l'exécution.


La propriété spécifiée ne peut pas être lue au moment de l'exécution (Erreur 393)

La propriété n'est disponible qu'au moment de la création. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous avez essayé de lire au moment de l'exécution une propriété qui est disponible uniquement au moment de la création.

Modifiez votre code et supprimez la référence à la propriété.


La propriété spécifiée est en écriture seule (Erreur 394)

La propriété ne peut pas être lue. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	La propriété ne peut pas être lue. Par exemple, ctl.property = 3 peut être acceptée, mais la ligne "Print ctl.proprerty" produira cette erreur.

Modifiez votre code et supprimez la référence à la propriété.


Autorisation d'utiliser l'objet refusée (Erreur 419)

Vous ne disposez pas des autorisations requises pour utiliser l'objet indiqué. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	Vous n'avez actuellement pas le droit d'accéder à cet objet.

Contactez l'administrateur de votre système ou le créateur de l'objet de sorte qu'il vous accorde les autorisations dont vous avez besoin.


Impossible de créer une image en mode AutoRedraw (Erreur 480)

Visual Basic ne peut pas créer une image en mode point permanente pour redessiner automatiquement la feuille ou l'image. La cause de cette erreur et la solution pour la corriger sont les suivantes :

•	La quantité de mémoire disponible ne permet pas d'attribuer la valeur True à la propriété AutoRedraw.

Affectez la valeur False à la propriété AutoRedraw, puis redessinez vous-même l'image dans la procédure d'événement Paint. Vous pouvez également réduire la taille du contrôle PictureBox ou de l'objet Form avant de tenter à nouveau l'opération en attribuant la valeur True à la propriété AutoRedraw.


Mémoire insuffisante (Erreur 31001)

Votre système ne peut pas allouer, ou accéder à, suffisamment d'espace disque ou mémoire pour l'opération indiquée.


Pas d'objet (Erreur 31004)

Vous avez tenté d'exécuter une action sur un objet qui n'existe pas.


Classe non définie (Erreur 31018)

Si vous définissez Action = 0 (méthode CreateEmbed) sans indiquer de document source (propriété SourceDoc), vous devez attribuer un nom de classe disponible sur votre système à la propriété Class.

Pour afficher la liste des noms de classes disponibles au moment de la création, cliquez sur le contrôle conteneur OLE et choisissez la commande Insérer un objet.


Impossible d'activer l'objet (Erreur 31027)

Le document source de l'objet ne peut être chargé ou l'application qui a créé l'objet n'est pas disponible.

Cette erreur se produit lorsque vous tentez d'activer un objet lié (Action = 7) et que le fichier indiqué par la propriété SourceDoc a été supprimé ou n'existe plus.

Cette erreur se produit également lorsque vous activez un objet (Action = 7) et que l'action indiquée par la propriété Verb est incorrecte. Les verbes gérés par certaines applications sources d'objets varient parfois selon l'état de ces applications. La liste des propriétés ObjectVerbs vous fournit l'ensemble des verbes gérés par une application. N'oubliez toutefois pas que certains verbes peuvent se révéler incorrects dans l'état en cours de l'application.


Impossible de créer un objet incorporé (Erreur 31032)

L'application qui est en train de créer l'objet ne peut procéder de la manière indiquée par la propriété SourceDoc.

Par exemple, cette erreur se produit si vous tentez d'incorporer un objet feuille de calcul alors que la propriété SourceDoc indique une feuille de calcul trop volumineuse pour l'application qui doit l'ouvrir.


Erreur à l'enregistrement dans le fichier (Erreur 31036)

Visual Basic ne peut pas écrire l'objet dans le fichier indiqué (Action = 11 ou 18). Les causes possibles sont les suivantes :

•	La propriété FileNumber est incorrecte.

•	Le fichier indiqué n'a pas été ouvert en mode Binary.

•	L'espace disque est insuffisant.


Erreur de chargement à partir du fichier (Erreur 31037)

Une erreur s'est produite lors de la tentative de lecture du fichier indiqué (Action = 12). Les causes possibles sont les suivantes :

•	La propriété FileNumber est incorrecte.

•	Le fichier n'a pas été ouvert en mode Binary.

•	Le fichier n'a pas été enregistré correctement (Action = 11).

•	Le fichier est endommagé.

•	Le fichier ne se trouve pas au début d'un objet OLE correct.


À la ligne indiquée: le nom de la feuille spécifié est incorrect; impossible de charger cette feuille

Le fichier ASCII contient un nom de feuille ne constituant pas une chaîne valide dans Visual Basic. La feuille ne sera pas chargée.


À la ligne indiquée: impossible de créer l'objet incorporé spécifié

Un objet incorporé n'a pu être créé pendant le chargement d'une feuille, d'un contrôle utilisateur, d'un document utilisateur ou d'une page de propriétés à partir d'un fichier texte. Par exemple, si vous insérez un document Microsoft Word dans la feuille, puis que vous supprimez Microsoft Word de votre système, cette erreur se produira. Ce message est écrit dans le fichier journal des erreurs.


À la ligne indiquée: impossible de créer l'objet incorporé spécifié; licence introuvable

Un objet incorporé n'a pu être créé pendant le chargement d'une feuille, d'un contrôle utilisateur, d'un document utilisateur ou d'une page de propriétés à partir d'un fichier texte, car le fichier licence est introuvable. Vous devez disposer d'une licence pour utiliser cet objet. Pour plus d'informations, contactez le fournisseur de l'objet. Ce message est écrit dans le fichier journal des erreurs.


À la ligne indiquée: le niveau maximal d'imbrication pour les contrôles est dépassé avec l'élément spécifié

Le fichier ASCII contient des contrôles imbriqués sur plus de 7 niveaux.


À la ligne indiquée: tous les contrôles doivent précéder les menus; impossible de charger le contrôle spécifié

Un contrôle se trouvait à un emplacement incorrect dans le fichier de feuille ASCII. Tous les contrôles doivent être chargés avant les menus.


À la ligne indiquée: le menu parent spécifié ne peut pas être chargé en tant que barre séparatrice

Le fichier ASCII contient un contrôle Menu dont le menu parent ou menu de premier niveau est défini en tant que séparateur de menus. Les menus de premier niveau ne peuvent pas être définis en tant que séparateurs de menus. La barre séparatrice ne sera pas définie.


À la ligne indiquée: impossible de définir la propriété Checked dans le menu spécifié. Le menu parent ne peut pas être coché

Un contrôle Menu de premier niveau figurait dans le fichier de feuille ASCII avec la valeur True pour sa propriété Checked. Les menus de premier niveau ne peuvent pas être cochés. Le contrôle Menu sera chargé, mais sa propriété Checked ne sera pas définie.


À la ligne indiquée: impossible de définir la propriété Shortcut dans le menu spécifié. Le menu parent ne peut pas avoir de touche de raccourci

Un contrôle Menu de premier niveau figurait dans le fichier de feuille ASCII avec une touche de raccourci définie. Les menus de premier niveau ne peuvent pas être dotés de touche de raccourci. Le contrôle Menu sera chargé, mais sa propriété Shortcut ne sera pas définie.


À la ligne indiquée: le nom de la feuille spécifié est déjà utilisé; impossible de charger cette feuille

Le fichier ASCII contient une feuille dont le nom est déjà utilisé dans l'application. La feuille ne sera pas chargée.


Des attributs conflictuels ont été trouvés dans l'élément spécifié. Les valeurs par défaut seront utilisées

Des instructions de définition d'attributs d'une feuille, d'un contrôle utilisateur, d'un document utilisateur, d'une page de propriétés ou d'un module de classe entrent en conflit avec les valeurs requises par leur type. Par exemple, les feuilles doivent toujours être dotées de l'attribut VB_PredeclaredId avec la valeur True. Cette erreur peut se produire si le fichier a été modifié avec un éditeur autre que Visual Basic.


L'élément spécifié est un fichier en lecture seule

Vous avez tenté d'enregistrer un fichier en lecture seule. Les fichiers en lecture seule apparaissent dans l'Explorateur de projet sous la forme [image]. Il est impossible d'enregistrer des fichiers en lecture seule. Utilisez la commande Enregistrer sous dans ce cas.


À la ligne indiquée: impossible de créer la référence spécifiée

La référence précisée à la ligne indiquée n'a pas pu être créée.


À la ligne indiquée: impossible de charger le fichier spécifié

Des erreurs de syntaxe empêchent Visual Basic d'analyser et de charger un fichier, ou un conflit de nom de feuille empêche le chargement d'une feuille ASCII. La feuille ne sera pas chargée et le nom de feuille ne sera pas affiché dans l'Explorateur de projet.

Vérifiez que le fichier à l'origine de cette erreur est une feuille ASCII valide d'un format correct et qu'il n'existe pas de conflit entre les différentes feuilles du projet.


Des erreurs se sont produites au cours du chargement

Pour plus d'informations, consultez le journal des erreurs.


Impossible de charger le complément spécifié. Voulez-vous le supprimer de la liste des compléments disponibles?

Visual Basic n'a pas pu charger le complément que vous avez sélectionné dans la Liste des compléments disponibles de la boîte de dialogue Gestionnaire de compléments. Cliquez sur Oui pour le retirer de la liste ou sur Non pour le conserver dans cette dernière. Dans les deux cas, vous ne pouvez pas le charger.


Visual Basic ne peut pas charger l'élément spécifié car le complément est introuvable dans la base de registres. Assurez-vous que tous les compléments ont été installés correctement
Visual Basic ne peut pas charger l'élément spécifié car le complément est introuvable dans la base de registres. Assurez-vous que tous les compléments ont été installés correctement.

Visual Basic n'a pas pu charger le complément que vous avez sélectionné dans la Liste des compléments disponibles de la boîte de dialogue Gestionnaire de compléments, car il n'a pas été correctement enregistré ou n'est plus enregistré dans la base de registres.


Afficher davantage d'erreurs de chargement?

Cliquez sur OK pour afficher davantage d'erreurs ; sinon, cliquez sur Annuler.


Impossible de charger l'élément spécifié

Des erreurs de syntaxe empêchent Visual Basic d'analyser et de charger un fichier, ou un conflit de nom de feuille empêche le chargement d'une feuille ASCII. La feuille ne sera pas chargée et le nom de feuille ne sera pas affiché dans l'Explorateur de projet.

Vérifiez que le fichier à l'origine de cette erreur est une feuille ASCII valide d'un format correct et qu'il n'existe pas de conflit entre les différentes feuilles du projet.


Numéro de version absent ou incorrect

La signature de version est introuvable ou la version indiquée n'est pas reconnue. Vérifiez que la première ligne n'est pas vierge ou qu'un commentaire indique la version correcte dans la feuille ASCII.


L'élément indiqué est référencé par le projet spécifié et ne peut donc pas être mis à jour

Le contrôle indiqué est référencé par plusieurs projets. S'il est mis à jour pour un projet, il risque de ne plus être valide pour un autre.


Impossible de supprimer le contrôle ou la référence; en cours d'utilisation

Le contrôle ActiveX ou la référence que vous avez tenté de supprimer est utilisé par l'une des feuilles du projet. Supprimez d'abord le contrôle ou l'objet référencé de la feuille, puis annulez la sélection dans la liste.


Impossible de quitter à ce moment

Vous ne pouvez pas quitter Windows lorsque Visual Basic est en mode exécution ou en mode Arrêt. Vous ne pouvez pas non plus quitter Windows lorsqu'une boîte de dialogue ou de message est affichée.


Erreur de chargement de l'élément spécifié. Erreur lors du chargement d'une propriété. Continuer?

Vous avez peut-être tenté de charger une feuille dotée de contrôles dont les noms entrent en conflit avec des feuilles figurant déjà dans le projet. Par exemple, le chargement de Form2 contenant un contrôle Form1 déclenche cette erreur.


Erreur de chargement de l'élément spécifié. Un contrôle n'a pas pu être chargé par suite d'une erreur de chargement. Continuer?

Ce message d'erreur apparaît après qu'une autre erreur se soit produite. Une fois que vous avez exécuté l'action appropriée suite à cette dernière, ce message apparaît. Pour charger le contrôle de toutes façons cliquez sur Oui ; pour annuler le chargement cliquez sur Non.


L'élément spécifié a un ancien format. Au moment de l'enregistrement, le fichier sera enregistré dans un nouveau format

Ce fichier a été créé à l'aide d'une ancienne version de Visual Basic. Lorsque vous l'enregistrerez, il sera enregistré dans le format de fichier de la version en cours.


L'élément spécifié existe déjà dans le projet

Le fichier que vous avez indiqué fait déjà partie du projet. Vous ne pouvez pas ajouter plusieurs fois le même fichier à un projet. Vous ne pouvez pas enregistrer un fichier sous un nom correspondant à un autre fichier du projet.


Erreurs au cours du chargement. Reportez-vous à l'élément spécifié pour plus de détails

Un élément inattendu est apparu dans le fichier de feuille ASCII. Visual Basic a créé un fichier journal afin de fournir des détails supplémentaires sur les erreurs. Examinez le fichier journal afin de déterminer la gravité du problème. Il est parfois possible d'ignorer simplement les erreurs (par exemple, Numéro de version absent ou incorrect...). Dans d'autres cas, toutefois, les erreurs empêchent la feuille de s'exécuter correctement (par exemple, La classe MyClass du contrôle MyControl n'est pas une classe de contrôle chargée).


Valeur de chaîne trop longue à traiter; arrêt de chargement de feuille

Une chaîne incorporée dans la feuille en chargement était trop longue à traiter.


Un ou plusieurs fichiers du projet ont changé. Voulez-vous enregistrer les changements maintenant?

L'une des valeurs de propriété ou une instruction de code a changé dans un ou plusieurs des fichiers du projet, et les modifications n'ont pas encore été enregistrées. Il s'agit là de la dernière occasion d'enregistrer les modifications avant de charger un autre projet.


L'élément spécifié n'a pas pu être enregistré dans la base de registres

Le fichier indiqué n'a pas pu être enregistré dans la base de registres. L'erreur est liée aux bibliothèques de types utilisées par des composants de l'environnement de développement Visual Basic et indique que l'entrée du fichier indiqué dans la base de registres est incorrecte ou que la DLL elle-même est manquante ou endommagée.


D'autres applications ont en ce moment accès à un objet dans votre programme. Arrêter le programme maintenant peut causer des erreurs dans ces programmes. Arrêter le programme maintenant?

Un objet Automation du programme Visual Basic que vous exécutez actuellement est utilisé par au moins une autre application. Si vous arrêtez votre programme maintenant, une erreur peut se produire dans l'autre application. Cliquez sur Oui pour quitter votre programme, ou sur Non pour continuer l'exécution.


Une ou plusieurs propriétés de l'élément spécifié sont incorrectes. Certaines ou toutes les propriétés ne sont pas définies correctement

Le fichier projet indiqué possède une ou plusieurs valeurs de propriétés non valides. Cette erreur ne se produit que dans le cadre d'un fichier projet.


Des noms conflictuels ont été trouvés dans l'élément spécifié. Le nom spécifié sera utilisé

Le nom d'une feuille apparaît deux fois dans le fichier source d'une feuille, d'un contrôle utilisateur, d'un document utilisateur ou d'une page de propriétés. Cette erreur peut se produire si le fichier a été modifié à l'aide d'un éditeur autre que Visual Basic.


À la ligne indiquée: le nom du contrôle spécifié est incorrect

Le fichier ASCII contient un nom de contrôle qui ne constitue pas une chaîne valide dans Visual Basic. Le contrôle ne sera pas chargé.


À la ligne indiquée: le nom de propriété spécifié est incorrect

Le fichier ASCII contient un nom de propriété qui ne constitue pas un nom de propriété valide pour ce contrôle.


À la ligne indiquée: l'élément spécifié contient une chaîne entre guillemets où le nom de la propriété devrait se trouver

Une chaîne entre guillemets apparaît dans le fichier de feuille ASCII à l'endroit où le nom de la propriété devrait se trouver. Les noms de propriété ne doivent pas être indiqués entre guillemets (" ").


À la ligne indiquée: la propriété spécifiée a un index de propriété incorrect

Le fichier ASCII contient un nom de propriété possédant un index de propriété supérieur à 255.


À la ligne indiquée: impossible de charger la propriété spécifiée

Le fichier ASCII contient une propriété inconnue. La propriété ne sera pas prise en compte lors du chargement de la feuille.


À la ligne indiquée: la propriété spécifiée doit être une chaîne entre guillemets

Le fichier ASCII contient une propriété qui devrait apparaître entre guillemets (" "), ce qui n'est pas le cas. Cette ligne de la description de feuille sera ignorée.


À la ligne indiquée: la propriété spécifiée a une valeur incorrecte

Le fichier ASCII contient une propriété dont la valeur n'est pas correcte pour ce contrôle. La propriété sera définie à l'aide de sa valeur par défaut.


À la ligne indiquée: la propriété spécifiée a une référence de fichier incorrecte

Le fichier ASCII contient une référence à un fichier que Visual Basic n'a pas trouvé dans le répertoire indiqué.


À la ligne indiquée: la propriété spécifiée n'a pas pu être définie

Visual Basic ne peut pas définir la propriété du contrôle indiqué comme le précise la description de feuille du fichier ASCII.


À la ligne indiquée: la classe du contrôle spécifiée n'est pas une classe de contrôle chargée

Le fichier ASCII contient une classe de contrôle que Visual Basic ne reconnaît pas. Ajoutez le contrôle personnalisé avec cette classe à votre projet.


À la ligne indiquée: impossible de trouver une propriété Index et le contrôle spécifié existe déjà

Le contrôle ne peut pas être chargé parce qu'il n'existe pas d'index et qu'il a le même nom qu'un contrôle chargé précédemment.


À la ligne indiquée: nom de contrôle trop long; tronqué

Le fichier ASCII contient un nom de contrôle comprenant plus de 40 caractères. Le contrôle sera chargé sous le même nom, tronqué pour ne comporter que 40 caractères.


À la ligne indiquée: Nom de classe trop long; tronqué

Le fichier ASCII contient un nom de classe comprenant plus de 40 caractères. La classe sera chargée sous le même nom, tronqué pour ne comporter que 40 caractères.


À la ligne indiquée: erreur de syntaxe, il manque un signe égal (=) à la propriété spécifiée
À la ligne indiquée: erreur de syntaxe, il manque un signe égal (=) à la propriété spécifiée.

Le fichier ASCII contient un nom de propriété et une valeur non séparés par un signe égal (=). La propriété ne sera pas chargée.


À la ligne indiquée: impossible de charger le contrôle spécifié; le contrôle conteneur n'est pas un conteneur valide

Vous avez tenté de charger un contrôle dans un autre contrôle ne constituant pas un conteneur valide.


À la ligne indiquée: impossible de charger le contrôle spécifié; le nom est déjà utilisé

Le contrôle nommé dans le fichier texte ASCII n'a pas pu être chargé car son nom est déjà utilisé dans l'application.


À la ligne indiquée: classe de contrôle manquante ou incorrecte dans le fichier spécifié

Le fichier ASCII contient une classe de contrôle inconnue dans la description de feuille ou le nom de classe ne constitue pas une chaîne valide dans Visual Basic.


À la ligne indiquée: nom de contrôle manquant ou incorrect dans le fichier spécifié

Le fichier ASCII contient un nom de contrôle inconnu dans la description de feuille ou le nom de contrôle ne constitue pas une chaîne valide dans Visual Basic.


À la ligne indiquée: impossible de charger le contrôle spécifié; licence introuvable

Un contrôle ActiveX n'a pas pu être créé lors du chargement d'une feuille, d'un contrôle utilisateur, d'un document utilisateur ou d'une page de propriétés à partir d'un fichier texte. Le contrôle peut être manquant ou endommagé. Réinstallez le contrôle et recommencez. Ce message est écrit dans le fichier journal des erreurs.


À la ligne indiquée: le CLSID spécifié est incorrect

Un objet n'a pas pu être chargé lors du chargement d'une feuille, d'un contrôle utilisateur, d'un document utilisateur ou d'une page de propriétés à partir d'un fichier texte. Le CLSID indiqué dans le fichier n'est pas valide. Ne s'applique qu'aux objets qui constituent des propriétés, tels que l'objet Font. Ce message est écrit dans le fichier journal des erreurs.


Impossible de créer la référence dans l'élément spécifié

Une erreur s'est produite lors de l'établissement d'une référence pendant le chargement du fichier. La référence n'a donc pas été ajoutée.


Impossible de charger l'élément spécifié. Le nom est déjà utilisé

Vous ne pouvez pas charger simultanément deux éléments du type indiqué.


ChDir, instruction, exemple

Cet exemple utilise l'instruction ChDir pour changer de répertoire ou de dossier courant. Sur le Macintosh, le lecteur par défaut est ‘HD' et les éléments du chemin d'accès sont séparés par deux points (:) et non par des barres obliques inversées. Vous devez également remplacer \Windows par les dossiers Macintosh. Les caractères de remplacement n'ont pas de signification spéciale sur le Macintosh et sont traités comme les autres caractères.

' "MONREP" devient le répertoire ou le dossier courant.

ChDir "MONREP"

' En supposant que "C:" soit le lecteur courant,' l'instruction suivante

' change le dossier par défaut pour le placer sur le lecteur "D:". "C:"

'  reste le lecteur courant.

ChDir "D:\WINDOWS\SYSTEM"


ChDrive, instruction, exemple

Cet exemple utilise l'instruction ChDrive pour changer de lecteur courant. Étant donné que, sur le Macintosh, "HD:" désigne le lecteur par défaut, l'instruction ChDrive remplacerait le dossier courant par le dossier racine du lecteur spécifié. Dans l'exemple qui suit, le système est équipé d'un lecteur nommé D.

ChDrive "D"	' "D" devient le lecteur courant.


CurDir, fonction, exemple

Cet exemple utilise la fonction CurDir pour renvoyer le chemin d'accès courant. Sur le Macintosh, les spécifications concernant le lecteur drive sont ignorées par la fonction CurDir. "HD" désigne le lecteur par défaut et les éléments du chemin d'accès sont séparés par deux points (:) et non par des barres obliques inversées. De même, vous devez remplacer \Windows par des dossiers Macintosh.

' Suppose que le chemin d'accès courant sur le lecteur C

' est "C:\WINDOWS\SYSTEM" (sur Microsoft Windows).

' Suppose que le chemin d'accès courant sur le lecteur D

' est "D:\EXCEL". Suppose que C est le lecteur courant.

Dim MyPath

MyPath = CurDir	' Renvoie "C:\WINDOWS\SYSTEM".

MyPath = CurDir("C")	' Renvoie "C:\WINDOWS\SYSTEM".

MyPath = CurDir("D")	' Renvoie "D:\EXCEL".


Dir, fonction, exemple

Cet exemple utilise la fonction Dir pour vérifier si certains fichiers et dossiers existent. Sur le Macintosh, "HD:" désigne le lecteur par défaut et les éléments du chemin d'accès sont séparés par deux points (:) et non par des barres obliques inversées. Les caractères de remplacement de Microsoft Windows sont considérés par le Mac comme des caractères significatifs faisant partie du nom du fichier. Vous pouvez cependant utiliser la fonction MacID pour désigner des groupes de fichiers.

Dim MyFile, MyPath, MyName

' Renvoie "WIN.INI" (sur Microsoft Windows) si ce fichier existe.

MyFile = Dir("C:\WINDOWS\WIN.INI")

' Renvoie le nom de fichier avec l'extension indiquée. Si plusieurs

' fichiers *.ini existent, le premier fichier trouvé est renvoyé.

MyFile = Dir("C:\WINDOWS\*.INI")

' Appelle de nouveau Dir sans argument pour renvoyer le

' fichier *.INI suivant dans le même dossier.

MyFile = Dir

' Renvoie le premier fichier *.TXT avec l'attribut fichier caché.

MyFile = Dir("*.TXT", vbHidden)

' Affiche les noms dans C:\ représentant des dossiers.

MyPath = "c:\"	' Définit le chemin d'accès.

MyName = Dir(MyPath, vbDirectory)	' Extrait la première entrée.

Do While MyName <> ""	' Commence la boucle.

' Ignore le dossier courant et le dossier

' contenant le dossier courant.

If MyName <> "." And MyName <> ".." Then

' Utilise une comparaison au niveau du bit pour

' vérifier que MyName est un dossier.

If (GetAttr(MyPath & MyName) _

And vbDirectory) = vbDirectory Then

Debug.Print MyName	' Affiche l'entrée uniquement si elle

End If	' représente un dossier.

End If

MyName = Dir	' Extrait l'entrée suivante.

Loop


Environ, fonction, exemple

Cet exemple utilise la fonction Environ pour fournir le numéro d'entrée et la longueur de l'instruction PATH de la table des chaînes d'environnement. Non disponible sur Macintosh.

Dim EnvString, Indx, Msg, PathLen	' Déclare les variables.

Indx = 1	' Initialise l'index à 1.

Do

EnvString = Environ(Indx)	' Extrait la variable

' d'environnement.

If Left(EnvString, 5) = "PATH=" Then	' Vérifie l'entrée PATH.

PathLen = Len(Environ("PATH"))	' Extrait la longueur.

Msg = "Entrée PATH = " & Indx & " et longueur = " & PathLen

Exit Do

Else

Indx = Indx + 1	' Pas d'entrée PATH,

End If	' donc incrémente.

Loop Until EnvString = ""

If PathLen > 0 Then

MsgBox Msg	' Affiche le message.

Else

MsgBox " Il n'existe pas de variable d'environnement PATH."

End If


FileCopy, instruction, exemple

Cet exemple utilise l'instruction FileCopy pour copier le contenu d'un fichier dans un autre fichier. Nous supposons que le fichier FICHSRC contient des données.

Dim SourceFile, DestinationFile

SourceFile = "FICHSRC"	' Définit le nom du fichier source.

DestinationFile = "FICHDEST"	' Définit le nom du fichier cible.

' Copie le fichier source dans le fichier cible.

FileCopy SourceFile, DestinationFile


FileDateTime, fonction, exemple

Cet exemple utilise la fonction FileDateTime pour déterminer la date et l'heure de création ou de dernière modification d'un fichier. Le format de date et d'heure affiché est fonction des paramètres régionaux de votre système.

Dim MyStamp

' Suppose que la dernière modification du fichier FICHTEST a

' eu lieu le 12 février 1993 à 4:35:47. Suppose que les

' paramètres régionaux correspondent à Français (standard).

MyStamp = FileDateTime("FICHTEST")	' Renvoie "12/2/93 4:35:47".


FileLen, fonction, exemple

Cet exemple utilise la fonction FileLen pour renvoyer la longueur d'un fichier en octets. Dans le cadre de cet exemple, supposez que le fichier FICHTEST contient des données.

Dim MySize

MySize = FileLen("FICHTEST")	' Renvoie la longueur du fichier

' (en octets).


GetAttr, fonction, exemple

Cet exemple utilise la fonction GetAttr pour déterminer les attributs d'un fichier et d'un répertoire ou dossier. Sur le Macintosh, seules les constantes vbNormal, vbReadOnly, vbHidden et vbAlias sont disponibles.

Dim MyAttr

' Suppose que le fichier FICHTEST est doté de

' l'attribut fichier caché.

MyAttr = GetAttr("FICHTEST")	' Renvoie 2.

' Renvoie une valeur différente de zéro si le fichier

' FICHTEST a l'attribut fichier caché.

Debug.Print MyAttr And vbHidden

' Suppose que le fichier FICHTEST est doté des

' attributs lecture seule et fichier caché.

MyAttr = GetAttr("FICHTEST")	' Renvoie 3.

' Renvoie une valeur différente de zéro si le fichier

' FICHTEST a l'attribut fichier caché.

Debug.Print MyAttr And (vbHidden + vbReadOnly)

' Suppose que MONREP est un répertoire ou un dossier.

MyAttr = GetAttr("MONREP")	' Renvoie 16.


Kill, instruction, exemple

Cet exemple utilise l'instruction Kill pour supprimer un fichier d'un disque.

' Suppose que le fichier FICHTEST contient des données.

Kill "FichTest"	' Supprime le fichier.

' Supprime tous les fichiers *.TXT du dossier courant.

Kill "*.TXT"


MkDir, instruction, exemple

Cet exemple utilise l'instruction MkDir pour créer un répertoire ou un dossier. Si le lecteur n'est pas indiqué, le nouveau répertoire ou dossier est créé sur le lecteur courant.

MkDir "MONREP"	' Crée un nouveau répertoire ou dossier.


Name, instruction, exemple

Cet exemple utilise l'instruction Name pour renommer un fichier. Dans le cadre de cet exemple, supposez que les dossiers indiqués existent déjà. Sur le Macintosh, "HD:" désigne le lecteur par défaut et les éléments du chemin d'accès sont séparés par deux points et non par des barres obliques inversées.

Dim OldName, NewName

OldName = "ANCFICH": NewName = "NOUVFICH"	' Définit les noms de fichiers.

Name OldName As NewName	' Renomme le fichier.

OldName = "C:\MONREP\ANCFICH":NewName = "C:\VOTREREP\NOUVFICH"

Name OldName As NewName	' Déplace et renomme le fichier.


QBColor, fonction, exemple

Cet exemple utilise la fonction QBColor pour modifier la propriété BackColor de la feuille transmise en tant que MyForm en utilisant la couleur indiquée par ColorCode. La fonction QBColor accepte pour valeur des entiers compris entre 0 et 15.

Sub ChangeBackColor (ColorCode As Integer, MyForm As Form)

MyForm.BackColor = QBColor(ColorCode)

End Sub


RGB, fonction, exemple

Cet exemple montre comment la fonction RGB permet de renvoyer un nombre entier représentant une valeur de couleur RGB. Elle est utilisée avec les propriétés et les méthodes d'application qui prennent en charge une définition de couleur. L'objet MyObject et sa propriété sont indiqués à titre d'illustration uniquement. Si l'objet MyObject n'existe pas ou s'il n'est pas doté d'une propriété Color, une erreur se produit.

Dim RED, I, RGBValue, MyObject

Red = RGB(255, 0, 0)	' Renvoie la valeur correspondant à Red.

I = 75	' Initialise le décalage.

RGBValue = RGB(I, 64 + I, 128 + I)	' Similaire à RGB(75, 139, 203).

MyObject.Color = RGB(255, 0, 0)	' Définit la propriété Color de

' MyObject avec la valeur Red.


RmDir, instruction, exemple

Cet exemple utilise l'instruction RmDir pour supprimer un répertoire ou un dossier existant.

' Suppose que MONREP est un répertoire ou un dossier vide.

RmDir "MONREP"	' Supprime MONREP.


SetAttr, instruction, exemple

Cet exemple utilise l'instruction SetAttr pour définir les attributs d'un fichier. Sur le Macintosh, seules les constantes vbNormal, vbReadOnly, vbHidden et vbAlias sont disponibles.

SetAttr "FICHTEST", vbHidden	' Définit l'attribut fichier caché.

' Définit les attributs fichier caché et lecture seule.

SetAttr "FICHTEST", vbHidden + vbReadOnly


ChDir, instruction

Change le répertoire ou le dossier courant.

Syntaxe

ChDir path

L'argument path est une expression de chaîne identifiant le répertoire ou le dossier devenant le nouveau répertoire ou dossier par défaut. L'argument path peut préciser le lecteur. Si aucun lecteur n'est indiqué, ChDir change le répertoire ou le dossier par défaut du lecteur courant.

Remarques

L'instruction ChDir change le dossier par défaut mais pas le lecteur par défaut. Par exemple, si C est le lecteur par défaut, l'instruction ci-dessous change le dossier par défaut sur le lecteur D, mais C reste le lecteur par défaut :

ChDir "D:\TMP"

Sur le Power Macintosh, le lecteur par défaut devient le lecteur spécifié dans le chemin path. Les spécifications complètes de chemin d'accès commencent par le nom de volume et les chemins d'accès relatifs commencent par deux points (:). ChDir trouve une solution pour les alias spécifiés dans le chemin d'accès :

ChDir "MacDrive:Tmp"	' Sur le Macintosh.

Notez que lors des modifications apportées aux dossiers, les symboles utilisés sont différents sur Macintosh et Microsoft Windows :

ChDir ".."	' Remonte d'un dossier dans Microsoft Windows.

ChDir "::"	' Remonte d'un dossier sur le Macintosh.


ChDrive, instruction

Change le lecteur en cours.

Syntaxe

ChDrive drive

L'argument drive est une expression de chaîne désignant un lecteur existant. Si vous indiquez une chaîne de longueur nulle (""), le lecteur courant reste le même. Si l'argument drive est une chaîne à plusieurs caractères, l'instruction ChDrive n'utilise que la première lettre.

Sur le Macintosh, l'instruction ChDrive remplace le dossier en cours par le dossier racine du lecteur spécifié.


CurDir, fonction

Renvoie une valeur de type Variant (String) indiquant le chemin en cours.

Syntaxe

CurDir[(drive)]

L'argument facultatif drive est une expression de chaîne désignant un lecteur existant. Si aucun lecteur n'est indiqué ou si l'argument drive est une chaîne de longueur nulle (""), la fonction CurDir renvoie le chemin du lecteur courant.  Sur le Macintosh, la fonction CurDir ne tient pas compte du lecteur spécifié dans l'argument drive et renvoie le chemin d'accès du lecteur courant.


Dir, fonction

Renvoie une valeur de type String représentant le nom d'un fichier, d'un répertoire ou d'un dossier correspondant à une chaîne de recherche, à un attribut de fichier ou au nom de volume d'un lecteur.

Syntaxe

Dir[(pathname[, attributes])]

La syntaxe de la fonction Dir comprend les éléments suivants :

Élément	Description
pathname	Facultatif. Expression de chaîne définissant un nom de fichier. Cet argument peut préciser le répertoire ou dossier et le lecteur. Une chaîne de longueur nulle est renvoyée si l'argument pathname est introuvable.
attributes	Facultatif. Constante ou expression numérique, dont la somme définit des attributs de fichier. Si cet argument est omis, tous les fichiers sans attributs correspondant à l'argument pathname sont renvoyés.
Valeurs

L'argument attributes peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbNormal	0	(Par défaut) Spécifie les fichiers sans attributs.
vbReadOnly	1	Spécifie les fichiers accessibles en lecture seule ainsi que les fichiers sans attributs.
vbHidden	2	Spécifie les fichiers cachés ainsi que les fichiers sans attributs.
vbSystem	4	Spécifie les fichiers système ainsi que les fichiers sans attributs. Non disponible sur le Macintosh.
vbVolume	8	Spécifie un nom de volume ; si un autre attribut est spécifié, la constante vbVolume est ignorée. Non disponible sur Macintosh.
vbDirectory	16	Spécifie les dossiers ainsi que les fichiers sans attributs.
vbAlias	64	Le nom du fichier spécifié est un alias. Disponible uniquement sur le Macintosh.
Note   Ces constantes sont définies par Visual Basic pour Applications et peuvent remplacer des valeurs réelles partout dans votre code.

Remarques

Dans Microsoft Windows, La fonction Dir permet d'utiliser des jokers ou caractères génériques (* ou ?) pour sélectionner plusieurs fichiers. Sur le Macintosh, ces caractères sont considérés comme des caractères de noms de fichiers valides et ne peuvent être utilisés comme caractères génériques pour spécifier des fichiers multiples.

Étant donné que le Macintosh ne gère pas les caractères génériques, utilisez le type de fichier pour identifier les groupes de fichiers. Vous pouvez utiliser la fonction MacID pour indiquer le type de fichier au lieu d'utiliser les noms de fichier. Par exemple, l'instruction suivante renvoie le nom du premier fichier TEXT dans le dossier courant :

Dir("Chemin d'accès", MacID("TEXT"))

Pour faire une itération sur tous les fichiers d'un dossier, indiquez une chaîne vide :

Dir("")

Si vous utilisez la fonction MacID à l'aide de l'instruction Dir dans Microsoft Windows, une erreur se produit.

Toute valeur de l'argument attribute supérieure à 256 est considérée comme une valeur MacID.

Vous devez définir l'argument pathname lors du premier appel de la fonction Dir, ou une erreur se produit. Si vous indiquez des attributs de fichier, l'argument pathname doit être présent.

La fonction Dir renvoie le premier nom de fichier correspondant à l'argument pathname. Pour extraire d'autres noms de fichier correspondant à l'argument pathname, appelez de nouveau la fonction Dir sans préciser d'arguments. Quand tous les fichiers ont été indiqués, la fonction Dir renvoie une chaîne de longueur nulle (""). Lorsqu'une chaîne de longueur nulle a été renvoyée, vous devez indiquer l'argument pathname dans les appels ultérieurs de la fonction ou une erreur se produit. Vous pouvez indiquer un nouvel argument pathname sans avoir extrait tous les noms de fichier correspondant à l'argument pathname courant. Il est cependant impossible d'appeler la fonction Dir de manière récursive. Les appels Dir comportant l'attribut vbDirectory ne renvoient pas continuellement les sous-dossiers.

Conseil   Les noms de fichiers extraits n'étant pas classés, vous pouvez les stocker dans un tableau, puis trier ce dernier.


Environ, fonction

Renvoie la valeur de type String associée à une variable d'environnement du système d'exploitation. Non disponible sur le Macintosh.

Syntaxe

Environ({envstring | number})

La syntaxe de la fonction Environ comprend les arguments nommés suivants :

Élément	Description
envstring	Facultatif. Expression de chaîne contenant le nom d'une variable d'environnement.
number	Facultatif. Expression numérique correspondant au numéro d'ordre de la chaîne dans la table d'environnement. L'argument number peut contenir n'importe quelle expression numérique, mais est arrondi à un nombre entier avant d'être évalué.
Remarques

Si l'argument envstring est introuvable dans la table d'environnement, une chaîne de longueur nulle ("") est renvoyée. Dans le cas contraire, Environ renvoie le texte associé à l'argument envstring, à savoir le texte de la table d'environnement suivant le signe égal (=) pour cette variable d'environnement.

Si vous utilisez l'argument number, la chaîne à laquelle correspond ce numéro d'ordre dans la table d'environnement est renvoyée. La fonction Environ renvoie dans ce cas l'ensemble du texte, l'argument envstring compris. Si aucune chaîne d'environnement n'occupe cette position, la fonction Environ renvoie une chaîne de longueur nulle.


FileCopy, instruction

Copie un fichier.

Syntaxe

FileCopy source, destination

La syntaxe de l'instruction FileCopy comprend les arguments nommés suivants :

Élément	Description
source	Expression de chaîne indiquant le nom du fichier à copier. L'argument source peut préciser le répertoire ou le dossier et le lecteur.
destination	Expression de chaîne indiquant le nom du fichier de destination. L'argument destination peut préciser le répertoire ou le dossier et le lecteur.
Remarque

Si vous appliquez l'instruction FileCopy à un fichier ouvert, une erreur se produit.


FileDateTime, fonction

Renvoie une valeur de type Variant (Date) indiquant la date et l'heure de création ou de dernière modification d'un fichier.

Syntaxe

FileDateTime(pathname)

L'argument pathname est une expression de chaîne définissant un nom de fichier. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.


FileLen, fonction

Renvoie une valeur de type Long indiquant la longueur en octets d'un fichier.

Syntaxe

FileLen(pathname)

L'argument pathname est une expression de chaîne définissant un fichier. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.

Remarques

Si le fichier indiqué est ouvert lors de l'appel de la fonction FileLen, la valeur renvoyée représente la taille du fichier juste avant son ouverture.

Note   Pour connaître la longueur d'un fichier ouvert, utilisez la fonction LOF.


GetAttr, fonction

Renvoie une valeur de type Integer indiquant les attributs du fichier ou du dossier.

Syntaxe

GetAttr(pathname)

L'argument pathname est une expression de chaîne définissant un nom de fichier. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.

Valeurs renvoyées

La valeur renvoyée par GetAttr est la somme des valeurs d'attributs ci-dessous :

Constante	Valeur	Description
vbNormal	0	Normal
vbReadOnly	1	Lecture seule
vbHidden	2	Caché
vbSystem	4	Système. Non disponible sur le Macintosh.
vbDirectory	16	Répertoire ou dossier
vbArchive	32	Fichier modifié depuis la dernière sauvegarde. Non disponible sur le Macintosh.
vbAlias	64	Le nom du fichier spécifié est un alias. Disponible uniquement sur le Macintosh.
Note   Ces constantes sont définies par Visual Basic pour Applications. Vous pouvez les utiliser partout dans votre code pour remplacer des valeurs réelles.

Remarques

Pour déterminer les attributs du fichier, utilisez l'opérateur And pour effectuer une comparaison au niveau du bit de la valeur renvoyée par la fonction GetAttr et de la valeur de l'attribut de fichier concerné. Si le résultat est différent de zéro, le fichier comporte l'attribut indiqué. Par exemple, la valeur renvoyée pour l'expression And ci-dessous est zéro si l'attribut Archive n'est pas défini :

Result = GetAttr(FName) And vbArchive

Une valeur non nulle est renvoyée si le fichier comporte l'attribut Archive.


Kill, instruction

Supprime des fichiers d'un disque.

Syntaxe

Kill pathname

L'argument pathname est une expression de chaîne indiquant le nom d'un ou plusieurs fichiers à supprimer. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.

Remarques

Sous Microsoft Windows, l'instruction Kill permet d'utiliser des jokers ou caractères génériques (* ou ?) pour sélectionner plusieurs fichiers. Toutefois, sur le Macintosh, ces caractères sont considérés comme des caractères de noms de fichiers valides et ne peuvent être utilisés comme des caractères génériques pour spécifier des fichiers multiples.

Comme le Macintosh ne gère pas les caractères génériques, utilisez le type de fichier pour identifier les groupes de fichiers à supprimer. Vous pouvez utiliser la fonction MacID pour indiquer le type de fichier au lieu de répéter la commande à l'aide de noms de fichiers séparés. Par exemple, l'instruction suivante permet de supprimer tous les fichiers TEXT dans le dossier courant.

Kill MacID("TEXT")

Si vous utilisez la fonction MacID avec l'instruction Kill dans Microsoft Windows, une erreur se produit.

Une erreur se produit si vous tentez de supprimer un fichier ouvert avec l'instruction Kill.

Note   Pour supprimer des dossiers, utilisez l'instruction RmDir.


MkDir, instruction

Crée un répertoire ou un dossier.

Syntaxe

MkDir path

L'argument path est une expression de chaîne définissant le répertoire ou dossier à créer. L'argument path peut préciser le lecteur. Si aucun lecteur n'est indiqué, MkDir crée le répertoire ou le dossier sur le lecteur courant.


Name, instruction

Renomme un fichier, un répertoire ou un dossier sur un disque.

Syntaxe

Name oldpathname As newpathname

La syntaxe de l'instruction Name comprend les éléments suivants :

Élément	Description
oldpathname	Expression de chaîne indiquant le nom et le chemin du fichier. Cet argument peut contenir le répertoire ou dossier et le lecteur.
newpathname	Expression de chaîne indiquant les nouveaux nom et chemin du fichier. Cet argument peut préciser le répertoire ou le dossier et le lecteur. Le nom de fichier indiqué dans l'argument newpathname ne peut pas correspondre à un fichier existant.
Remarques

L'instruction Name renomme un fichier et le déplace le cas échéant vers un nouveau répertoire ou dossier. Elle permet aussi de déplacer un fichier d'un lecteur à un autre, mais elle ne peut renommer un dossier existant que si les arguments newpathname et oldpathname concernent le même lecteur. L'instruction Name ne permet pas de créer un nouveau fichier ou dossier.

Si vous appliquez Name à un fichier ouvert, vous provoquez une erreur. Les fichiers ouverts ne peuvent être renommés avant d'avoir été fermés. Les arguments de Name ne peuvent comporter de caractères génériques (* : multicaractères, ? : caractère unique).


QBColor, fonction

Renvoie une valeur de type Long indiquant le code de couleur RGB correspondant au numéro de couleur indiqué.

Syntaxe

QBColor(color)

L'argument color est un nombre entier compris entre 0 et 15.

Valeurs

L'argument color peut prendre les valeurs suivantes :

Numéro	Couleur	Numéro	Couleur
0	Noir	8	Gris
1	Bleu	9	Bleu clair
2	Vert	10	Vert clair
3	Cyan	11	Cyan clair
4	Rouge	12	Rouge clair
5	Magenta	13	Magenta clair
6	Jaune	14	Jaune clair
7	Blanc	15	Blanc pur
Remarques

L'argument color indique les codes de couleur utilisés dans les versions précédentes de Basic (comme Microsoft Visual Basic pour MS-DOS ou le compilateur Basic). En partant de l'octet le moins significatif, la valeur renvoyée définit les composantes rouge, verte et bleue permettant de définir la couleur dans le système RGB utilisé dans Visual Basic pour Applications.


RGB, fonction

Renvoie un entier de type Long représentant le code RGB.

Syntaxe

RGB(red, green, blue)

La syntaxe de la fonction RGB comprend les arguments nommés suivants :

Élément	Description
red	De type Variant (Integer). Nombre compris entre 0 et 255 inclus et qui définit la composante rouge de la couleur.
green	De type Variant (Integer). Nombre compris entre 0 et 255 inclus et qui définit la composante verte de la couleur.
blue	De type Variant (Integer). Nombre compris entre 0 et 255 inclus et qui définit la composante bleue de la couleur.
Remarques

Avec les méthodes et propriétés d'application acceptant une définition de couleur, il est nécessaire d'utiliser un nombre représentant un code de couleur RGB dans les définitions. Les codes de couleur RGB définissent l'intensité relative du rouge, du vert et du bleu pour afficher les couleurs correspondantes.

Si un argument de la fonction RGB dépasse 255, la valeur prise en compte est 255.

Le tableau suivant contient la liste de certaines couleurs standard en précisant leurs composantes rouge, verte et bleue :

Couleur	Composante rouge	Composante verte	Composante bleue
Noir	0	0	0
Bleu	0	0	255
Vert	0	255	0
Cyan	0	255	255
Rouge	255	0	0
Magenta	255	0	255
Jaune	255	255	0
Blanc	255	255	255
Les valeurs des couleurs RVB renvoyées par cette fonction sont incompatibles avec celles qui sont utilisées par le système d'exploitation Macintosh. Elles sont exploitables dans le cadre des applications Microsoft destinées au Macintosh, mais ne le sont pas si vous souhaitez transmettre directement des changements de couleur au système d'exploitation Macintosh.


RmDir, instruction

Supprime un répertoire ou un dossier existant.

Syntaxe

RmDir path

L'argument path est une expression de chaîne indiquant le répertoire ou le dossier à supprimer. L'argument path peut préciser le lecteur. Si aucun lecteur n'est indiqué, l'instruction RmDir supprime le répertoire ou le dossier sur le lecteur courant.

Remarques

Une erreur se produit si vous appliquez l'instruction RmDir à un répertoire ou un dossier contenant des fichiers. Effacez tous les fichiers avec l'instruction Kill avant de supprimer le répertoire ou le dossier.


SetAttr, instruction

Définit les attributs d'un fichier.

Syntaxe

SetAttr pathname, attributes

La syntaxe de l'instruction SetAttr comprend les arguments nommés suivants :

Élément	Description
pathname	Expression de chaîne indiquant le nom d'un fichier. Cet argument peut préciser le répertoire ou le dossier et le lecteur.
attributes	Constante ou expression numérique, dont la somme définit les attributs du fichier.
Valeurs

L'argument attributes peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbNormal	0	Normal (valeur par défaut)
vbReadOnly	1	Lecture seule
vbHidden	2	Caché
vbSystem	4	Fichier système. Non disponible sur le Macintosh.
vbArchive	32	Fichier modifié depuis la dernière sauvegarde
vbAlias	64	Le nom du fichier spécifié est un alias. Disponible uniquement sur le Macintosh.
Note   Ces constantes sont définies par Visual Basic pour Applications. Elles peuvent remplacer des valeurs réelles partout dans votre code.

Remarques

Une erreur d'exécution se produit si vous tentez de définir les attributs d'un fichier ouvert.


Close, instruction, exemple

Cet exemple utilise l'instruction Close pour fermer les trois fichiers ouverts dans le cadre de la fonction Output.

Dim I, FileName

For I = 1 To 3	' Effectue la boucle 3 fois.

FileName = "TEST" & I	' Crée le nom de fichier.

Open FileName For Output As #I	' Ouvre le fichier.

Print #I, "Ceci est un test."	' Écrit la chaîne dans le fichier.

Next I

Close	' Ferme les trois fichiers ouverts.


EOF, fonction, exemple

Cet exemple utilise la fonction EOF pour détecter la fin d'un fichier. Nous supposons que MONFICH est un fichier texte comportant quelques lignes de texte.

Dim InputData

' Ouvre le fichier afin d'y entrer des données.

Open "MONFICH" For Input As #1

Do While Not EOF(1)	' Vérifie si la fin du fichier est atteinte.

Line Input #1, InputData	' Lit les lignes de données.

Debug.Print InputData	' Imprime dans la fenêtre Exécution.

Loop

Close #1	' Ferme le fichier.


FileAttr, fonction, exemple

Cet exemple utilise la fonction FileAttr pour renvoyer le mode d'accès et l'identificateur d'un fichier ouvert. L'identificateur de fichier est renvoyé uniquement sur les systèmes 16 bits ; sur les systèmes 32 bits, le passage de 2 comme deuxième argument génère une erreur.

Dim FileNum, Mode, Handle

FileNum = 1	' Attribue un numéro de fichier.

Open "FICHTEST" For Append As FileNum	' Ouvre le fichier.

Mode = FileAttr(FileNum, 1)	' Renvoie 8 (Ajoute le mode d'accès au fichier).

Handle = FileAttr(FileNum, 2)	' Renvoie l'identificateur de fichier.

Close FileNum	' Ferme le fichier.


FreeFile, fonction, exemple

Cet exemple utilise la fonction FreeFile pour renvoyer le prochain numéro de fichier disponible. Cinq fichiers sont ouverts à l'intérieur de la boucle et des données sont écrites dans chacun d'eux.

Dim MyIndex, FileNumber

For MyIndex = 1 To 5	' La boucle est effectuée cinq fois.

FileNumber = FreeFile	' Lit le numéro de fichier inutilisé.

' Crée le nom du fichier.

Open "TEST" & MyIndex For Output As #FileNumber

Write #FileNumber, "Ceci est un exemple"	' Écrit le texte.

Close #FileNumber	' Ferme le fichier.

Next MyIndex


Get, instruction, exemple

Cet exemple utilise l'instruction Get afin de lire les données d'un fichier et de les écrire dans une variable. Nous supposons que FICHTEST est un fichier contenant cinq enregistrements de type Record défini par l'utilisateur .

Type Record	' Désigne un type défini par l'utilisateur.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, Position	' Déclare les variables.

' Ouvre l'exemple de fichier en accès aléatoire.

Open "FICHTEST" For Random As #1 Len = Len(MyRecord)

' Lit l'exemple de fichier à l'aide de l'instruction Get.

Position = 3	' Définit le numéro d'enregistrement.

Get #1, Position, MyRecord	' Lit le troisième enregistrement.

Close #1	' Ferme le fichier.


Input #, instruction, exemple

Cet exemple utilise l'instruction Input # pour lire les données d'un fichier et les placer dans deux variables. Nous supposons que le fichier FICHTEST contient quelques lignes de données écrites à l'aide de l'instruction Write #, ce qui signifie que chaque ligne contient une chaîne entre guillemets et un nombre, séparés par une virgule, par exemple ("Bonjour", 234).

Dim MyString, MyNumber

Open "FICHTEST" For Input As #1	' Ouvre le fichier en lecture.

Do While Not EOF(1)	' Effectue la boucle jusqu'à la fin du fichier.

Input #1, MyString, MyNumber	' Lit les données dans deux variables.

' Affiche les données dans la fenêtre Exécution.

Debug.Print MyString, MyNumber

Loop

Close #1	' Ferme le fichier.


Input, fonction, exemple

Cet exemple utilise la fonction Input pour lire un fichier caractère par caractère et les afficher dans la fenêtre Exécution. Nous supposons que FICHTEST est un fichier texte comportant quelques lignes de données exemple.

Dim MyChar

Open "FICHTEST" For Input As #1	' Ouvre le fichier.

Do While Not EOF(1)	' Effectue la boucle jusqu'à la fin du fichier.

MyChar = Input(1, #1)	' Lit un caractère.

Debug.Print MyChar	' Affiche dans la fenêtre Exécution.

Loop

Close #1	' Ferme le fichier.


Line Input #, instruction, exemple

Cet exemple utilise l'instruction Line Input # pour lire une ligne dans un fichier séquentiel et l'affecter à une variable. Nous supposons que FICHTEST est un fichier texte comportant quelques lignes de données exemple.

Dim TextLine

Open "FICHTEST" For Input As #1	' Ouvre le fichier.

Do While Not EOF(1)	' Effectue la boucle jusqu'à la fin du fichier.

Line Input #1, TextLine	' Lit la ligne dans la variable.

Debug.Print TextLine	' Affiche dans la fenêtre Exécution.

Loop

Close #1	' Ferme le fichier.


Loc, fonction, exemple

Cet exemple utilise la fonction Loc pour renvoyer la position en cours de lecture/écriture dans un fichier ouvert. Nous supposons que FICHTEST est un fichier texte comportant quelques lignes de données exemple.

Dim MyLocation, MyLine

' Ouvre le fichier qui vient d'être créé.

Open "FICHTEST" For Binary As #1

' Effectue la boucle jusqu'à la fin du fichier.

Do While MyLocation < LOF(1)

MyLine = MyLine & Input(1, #1)	' Lit le caractère dans la variable.

MyLocation = Loc(1)	' Lit la position en cours dans le fichier.

' Affiche dans la fenêtre Exécution.

Debug.Print MyLine; Tab; MyLocation

Loop

Close #1	' Ferme le fichier.


Lock, Unlock, instructions, exemple

Cet exemple illustre l'utilisation des instructions Lock et Unlock. Tant qu'un enregistrement est en cours de modification, l'accès à cet enregistrement est refusé aux autres processus. Nous supposons que FICHTEST est un fichier contenant cinq enregistrements de type Record défini par l'utilisateur.

Type Record	' Désigne un type défini par l'utilisateur.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, RecordNumber	' Déclare les variables.

' Ouvre l'exemple de fichier en accès aléatoire.

Open "FICHTEST" For Random Shared As #1 Len = Len(MyRecord)

RecordNumber = 4	' Définit un numéro d'enregistrement.

Lock #1, RecordNumber	' Verrouille l'enregistrement.

Get #1, RecordNumber, MyRecord	' Lit l'enregistrement.

MyRecord.ID = 234	' Modifie l'enregistrement.

MyRecord.Name = "Jean Dupont"

Put #1, RecordNumber, MyRecord	' Écrit l'enregistrement modifié.

Unlock #1, RecordNumber	' Déverrouille l'enregistrement en cours.

Close #1	' Ferme le fichier.


LOF, fonction, exemple

Cet exemple utilise la fonction LOF pour déterminer la taille d'un fichier ouvert. Nous supposons que FICHTEST est un fichier texte comportant des données exemple.

Dim FileLength

Open "FICHTEST" For Input As #1	' Ouvre le fichier.

FileLength = LOF(1)	' Lit la taille du fichier.

Close #1	' Ferme le fichier.


Open, instruction, exemple

Cet exemple illustre différentes utilisations possibles de l'instruction Open pour permettre les opérations de lecture/écriture dans un fichier.

Le code suivant ouvre le fichier FICHTEST en mode de lecture séquentielle.

Open "FICHTEST" For Input As #1

' Ferme le fichier avant de l'ouvrir à nouveau dans un autre mode.

Close #1

Cet exemple ouvre le fichier en mode Binary (binaire) pour des opérations d'écriture uniquement.

Open "FICHTEST" For Binary Access Write As #1

' Ferme le fichier avant de l'ouvrir à nouveau dans un autre mode.

Close #1

L'exemple suivant ouvre le fichier en mode Random (aléatoire). Ce fichier contient des enregistrements de type Record défini par l'utilisateur.

Type Record	' Désigne le type défini par l'utilisateur.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record	' Déclare la variable.

Open "FICHTEST" For Random As #1 Len = Len(MyRecord)

' Ferme le fichier avant de l'ouvrir à nouveau dans un autre mode.

Close #1

Cet exemple de code ouvre le fichier en mode d'écriture séquentielle; n'importe quel processus peut lire ou écrire dans le fichier.

Open "FICHTEST" For Output Shared As #1

' Ferme le fichier avant de l'ouvrir de nouveau dans un autre mode.

Close #1

Cet exemple de code ouvre le fichier en mode Binary (binaire) pour la lecture ; les autres processus ne peuvent pas le lire.

Open "FICHTEST" For Binary Access Read Lock Read As #1


Print #, instruction, exemple

Cet exemple utilise l'instruction Print # pour écrire des données dans un fichier.

Open "FICHTEST" For Output As #1	' Ouvre le fichier en écriture.

Print #1, "Ceci est un test"	' Écrit le texte dans le fichier.

Print #1,	' Insère une ligne vierge dans le fichier.

Print #1, "Zone 1"; Tab ; "Zone 2"	' Sépare la chaîne en deux.

' Sépare les chaînes de caractères avec des espaces.

Print #1, "Bonjour" ; " " ; "à tous"

Print #1, Spc(5) ; "5 espaces à gauche"	' Écrit cinq espaces à gauche.

Print #1, Tab(10) ; "Bonjour"	' Écrit le mot à partir de la colonne 10.

' Affecte les valeurs de type Boolean, Date, Null et Error.

Dim MyBool, MyDate, MyNull, MyError

MyBool = False : MyDate = #February 12, 1969#

MyNull = Null

MyError = CVErr(32767)

' True, False, Null et Error sont traduits en fonction

' des paramètres régionaux de votre système. Les

' littéraux date sont écrits au format de date abrégée standard.

Print #1, MyBool ; " est une valeur booléenne"

Print #1, MyDate ; " est une date"

Print #1, MyNull ; " est une valeur nulle"

Print #1, MyError ; " est une valeur d'erreur"

Close #1	' Ferme le fichier.


Put, instruction, exemple

Cet exemple utilise l'instruction Put pour écrire des données dans un fichier. Cinq enregistrements de type Record défini par l'utilisateur sont écrits dans le fichier.

Type Record	' Désigne un type défini par l'utilisateur.

ID As Integer

Name As String * 20

End Type

Dim MyRecord As Record, RecordNumber	' Déclare les variables.

' Ouvre le fichier en accès aléatoire.

Open "FICHTEST" For Random As #1 Len = Len(MyRecord)

For RecordNumber = 1 To 5	' Effectue la boucle 5 fois.

MyRecord.ID = RecordNumber	' Définit l'identificateur.

MyRecord.Name = "Mon nom" & RecordNumber	' Crée une chaîne.

' Écrit l'enregistrement dans le fichier.

Put #1, RecordNumber, MyRecord

Next RecordNumber

Close #1	' Ferme le fichier.


Reset, instruction, exemple

Cet exemple utilise l'instruction Reset pour fermer tous les fichiers ouverts et écrire le contenu de leurs mémoires tampon sur disque. Notez que la variable Variant FileNumber est utilisée à la fois comme une chaîne et un nombre.

Dim FileNumber

For FileNumber = 1 To 5	' Effectue la boucle 5 fois.

' Ouvre le fichier en écriture. FileNumber est

' concaténé à la chaîne TEST pour le nom de

' fichier, mais c'est un nombre suivant un #.

Open "TEST" & FileNumber For Output As #FileNumber

' Écrit les données dans le fichier.

Write #FileNumber, "Bonjour à tous"

Next FileNumber

Reset	' Ferme les fichiers et écrit le contenu sur disque.


Seek, fonction, exemple

Cet exemple utilise la fonction Seek pour renvoyer la position du fichier en cours. Nous supposons que FICHTEST est un fichier contenant des enregistrements de type Record défini par l'utilisateur .

Type Record	' Désigne un type défini par l'utilisateur.

ID As Integer

Name As String * 20

End Type

Dans le cas de fichiers ouverts en mode d'accès aléatoire, la fonction Seek renvoie le numéro de l'enregistrement suivant.

Dim MyRecord As Record	' Déclare la variable.

Open "FICHTEST" For Random As #1 Len = Len(MyRecord)

Do While Not EOF(1)	' Effectue la boucle jusqu'à la fin du fichier.

Get #1, , MyRecord	' Lit l'enregistrement suivant.

' Affiche le numéro d'enregistrement dans la fenêtre Exécution.

Debug.Print Seek(1)

Loop

Close #1	' Ferme le fichier.

Dans le cas de fichiers ouverts en d'autres modes que le mode Random, la fonction Seek renvoie la position de l'octet à partir duquel l'opération suivante doit s'effectuer. Nous supposons que FICHTEST est un fichier contenant quelques lignes de texte.

Dim MyChar

Open "FICHTEST" For Input As #1	' Ouvre le fichier en lecture.

Do While Not EOF(1)	' Effectue la boucle jusqu'à la fin du fichier.

MyChar = Input(1, #1)	' Lit le caractère suivant.

' Affiche la position de l'octet dans la fenêtre Exécution.

Debug.Print Seek(1)

Loop

Close #1	' Ferme le fichier.


Seek, instruction, exemple

Cet exemple utilise l'instruction Seek pour définir la position de la prochaine opération de lecture ou d'écriture dans un fichier. Nous supposons que FICHTEST est un fichier contenant des enregistrements de type Record défini par l'utilisateur.

Type Record	' Désigne un type défini par l'utilisateur.

ID As Integer

Name As String * 20

End Type

Dans le cas de fichiers ouverts en mode aléatoire, la fonction Seek définit l'enregistrement suivant.

Dim MyRecord As Record, MaxSize, RecordNumber	' Déclare les variables.

' Ouvre le fichier en mode d'accès aléatoire.

Open "FICHTEST" For Random As #1 Len = Len(MyRecord)

' Lit le nombre d'enregistrements dans le fichier.

MaxSize = LOF(1) \ Len(MyRecord)

' La boucle lit tous les enregistrements en commençant par le dernier.

For RecordNumber = MaxSize To 1 Step - 1

Seek #1, RecordNumber	' Définit la position.

Get #1, , MyRecord	' Lit l'enregistrement.

Next RecordNumber

Close #1	' Ferme le fichier.

Dans le cas de fichiers ouverts en d'autres modes que le mode Random, la fonction Seek définit la position de l'octet à partir duquel l'opération suivante doit s'effectuer. Nous supposons que FICHTEST est un fichier contenant quelques lignes de texte.

Dim MaxSize, NextChar, MyChar

Open "FICHTEST" For Input As #1	' Ouvre le fichier en lecture.

MaxSize = LOF(1)	' Lit la taille du fichier en octets.

' La boucle lit tous les caractères en commençant par le dernier.

For NextChar = MaxSize To 1 Step -1

Seek #1, NextChar	' Définit la position.

MyChar = Input(1, #1)	' Lit le caractère.

Next NextChar

Close #1	' Ferme le fichier.


Spc, fonction, exemple

Cet exemple utilise la fonction Spc pour positionner la sortie dans un fichier et dans la fenêtre Exécution.

' La fonction Spc peut être utilisée avec l'instruction Print #.

Open "FICHTEST" For Output As #1	' Ouvre le fichier en écriture.

Print #1, "10 espaces entre ici"; Spc(10); "et là."

Close #1	' Ferme le fichier.

L'instruction suivante affiche le texte précédé de 30 espaces dans la fenêtre Exécution en utilisant la méthode Print.

Debug.Print Spc(30); "Trente espaces plus loin..."


Tab, fonction, exemple

Cet exemple utilise la fonction Tab pour positionner la sortie dans un fichier et dans la fenêtre Exécution.

' La fonction Tab peut être utilisée avec l'instruction Print #.

Open "FICHTEST" For Output As #1	' Ouvre le fichier en écriture.

' Le deuxième mot s'affiche à partir de la colonne 20.

Print #1, "Bonjour"; Tab(20); "à tous."

' Si l'argument est omis, le curseur se déplace vers la zone suivante.

Print #1, "Bonjour"; Tab; "à tous"

Close #1	' Ferme le fichier.

La fonction Tab peut également être utilisée avec la méthode Print. L'instruction suivante affiche le texte à partir de la colonne 10.

Debug.Print Tab(10); "10 colonnes à partir du début."


Width #, instruction, exemple

Cet exemple utilise l'instruction Width # pour définir la longueur de la ligne de sortie d'un fichier.

Dim I

Open "FICHTEST" For Output As #1	' Ouvre le fichier en écriture.

VBA.Width 1, 5	' Affecte la longueur 5 à la ligne de sortie.

For I = 0 To 9	' Effectue la boucle 10 fois.

Print #1, Chr(48 + I);	' Écrit 5 caractères par ligne.

Next I

Close #1	' Ferme le fichier.


Write #, instruction, exemple

Cet exemple utilise l'instruction Write # pour écrire des données brutes dans un fichier séquentiel.

Open "FICHTEST" For Output As #1	' Ouvre le fichier en écriture.

Write #1, "Bonjour à tous", 234  ' Écrit des données séparées par

' des virgules.

Write #1,	' Écrit une ligne vierge.

Dim MyBool, MyDate, MyNull, MyError

' Affecte des valeurs de type Boolean, Date, Null et Error.

MyBool = False : MyDate = #February 12, 1969# : MyNull = Null

MyError = CVErr(32767)

' Les données de type Boolean sont écrites sous la forme #TRUE#

' ou #FALSE#. Les littéraux date sont écrits au format universel

' de date, par exemple #1996-07-14# pour le 14 juillet 1996.

' Les données de type Null sont écrites sous la forme #NULL#.

' Les données d'erreur sont écrites sous la forme #ERROR errorcode#.

Write #1, MyBool ; " est une valeur booléenne"

Write #1, MyDate ; " est une date"

Write #1, MyNull ; " est une valeur nulle"

Write #1, MyError ; " est une valeur d'erreur"

Close #1	' Ferme le fichier.


Close, instruction

Termine les opérations d'Entrée/Sortie (E/S) dans un fichier ouvert à l'aide de l'instruction Open.

Syntaxe

Close [filenumberlist]

L'argument facultatif filenumberlist représente un ou plusieurs numéros de fichiers qui utilisent la syntaxe suivante, où filenumber peut être tout numéro de fichier valide :

[[#]filenumber] [, [#]filenumber] . . .

Remarques

Si vous omettez l'argument filenumberlist, tous les fichiers actifs ouverts à l'aide de l'instruction Open sont fermés.

Lorsque vous fermez un fichier ouvert en mode Output ou Append, la zone tampon finale de sortie est écrite dans la zone tampon du système d'exploitation associée à ce fichier. La totalité de l'espace de la zone tampon associée au fichier fermé est libérée.

Lorsque l'instruction Close est exécutée, l'association d'un fichier avec son numéro de fichier est désactivée.


EOF, fonction

Renvoie une valeur de type Integer contenant la valeur Boolean True lorsque la fin d'un fichier ouvert en mode Random ou Input séquentiel est atteinte.

Syntaxe

EOF(filenumber)

L'argument filenumber est une valeur de type Integer contenant n'importe quel numéro de fichier valide.

Remarques

Utilisez la fonction EOF pour éviter de générer une erreur lorsque vous tentez d'obtenir des données au-delà de la fin d'un fichier.

La fonction EOF renvoie la valeur False tant que la fin du fichier n'est pas atteinte. Avec des fichiers ouverts en mode Random ou Binary, la fonction EOF renvoie la valeur False tant que la dernière instruction Get peut lire un enregistrement intégralement.

Avec des fichiers ouverts en mode Binary, une erreur se produit si vous tentez de lire le fichier à l'aide de la fonction Input jusqu'à ce que la fonction EOF renvoie la valeur True. Utilisez les fonctions LOF et Loc au lieu de la fonction EOF pour la lecture de fichiers binaires avec la fonction Input, ou utilisez l'instruction Get avec la fonction EOF. Pour des fichiers ouverts en mode Output, la fonction EOF renvoie toujours la valeur True.


FileAttr, fonction

Renvoie une valeur de type Long représentant le mode d'ouverture des fichiers avec l'instruction Open.

Syntaxe

FileAttr(filenumber, returntype)

La syntaxe de la fonction FileAttr comprend les arguments nommés suivants :

Élément	Description
filenumber	Donnée de type Integer. Tout numéro de fichier valide.
returntype	Donnée de type Integer. Nombre indiquant le type d'informations à renvoyer. Indiquez 1 pour que la valeur renvoyée indique le mode d'ouverture de fichier. Sur les systèmes 16 bits uniquement, indiquez 2 pour renvoyer un identificateur de fichier du système d'exploitation. L'argument Returntype 2 n'est pas pris en charge par les systèmes 32 bits (une erreur se produit avec ces derniers).
Valeurs renvoyées

Si l'argument returntype a la valeur 1, les valeurs suivantes sont renvoyées pour indiquer le mode d'accès au fichier :

Mode	Valeur
Input	1
Output	2
Random	4
Append	8
Binary	32


FreeFile, fonction

Renvoie une valeur de type Integer représentant le prochain numéro de fichier pouvant être utilisé par l'instruction Open.

Syntaxe

FreeFile[(rangenumber)]

L'argument facultatif rangenumber est une valeur de type Variant qui indique la plage dans laquelle doit se trouver le prochain numéro de fichier disponible renvoyé par la fonction. Indiquez 0 (valeur par défaut) pour renvoyer un numéro de fichier compris entre 1 et 255 inclus. Indiquez 1 pour renvoyer un numéro de fichier compris entre 256 et 511.

Remarques

Utilisez la fonction FreeFile pour fournir un numéro de fichier encore non utilisé.


Get, instruction

Lit les données d'un fichier disque ouvert et les place dans une variable.

Syntaxe

Get [#]filenumber, [recnumber], varname

La syntaxe de l'instruction Get comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
recnumber	Facultatif. Donnée de type Variant (Long). Numéro de l'enregistrement (fichiers ouverts en mode Random) ou de l'octet (fichiers ouverts en mode Binary) par lequel la lecture débute.
varname	Nom de variable valide destiné à recevoir les données lues.
Remarques

Les données lues avec l'instruction Get sont généralement placées dans un fichier à l'aide de l'instruction Put.

Le premier enregistrement ou octet d'un fichier occupe la position 1, le deuxième enregistrement ou octet la position 2, et ainsi de suite. Si l'argument recnumber est omis, la lecture commence à partir de l'enregistrement ou de l'octet suivant la dernière instruction Get ou Put (ou à partir de celui désigné par la dernière fonction Seek). Vous devez toujours inclure des séparateurs virgules. Exemple :

Get #4,,FileBuffer

Les règles suivantes s'appliquent aux fichiers ouverts en mode Random :

•	Si la longueur des données lues est inférieure à la longueur indiquée dans la clause Len de l'instruction Open, l'instruction Get lit les enregistrements suivants conformément aux limites de longueur des enregistrements. L'espace compris entre la fin d'un enregistrement et le début de l'enregistrement suivant est rempli par le contenu de la zone tampon du fichier. Comme il est impossible de déterminer avec certitude le volume des données de remplissage, il est généralement préférable que la longueur des enregistrements corresponde à la longueur des données lues.

•	Si la variable lue est une chaîne de longueur variable, l'instruction Get lit d'abord un descripteur de deux octets contenant la longueur de la chaîne, puis les données qui sont placées dans la variable. Par conséquent, la longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure d'au moins deux octets à la longueur réelle de la chaîne.

•	Si la variable lue est une donnée Variant de type numérique, l'instruction Get lit les deux octets qui identifient le VarType de la valeur de type Variant puis les données qui sont insérées dans la variable. Par exemple, lors de la lecture d'une donnée de type Variant de VarType 3, l'instruction Get lit 6 octets : 2 octets qui identifient la valeur de type Variant comme étant de VarType 3 (Long) et 4 octets contenant les données de type Long. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure d'au moins 2 octets au nombre réel d'octets requis pour stocker la variable.

Note   Vous pouvez utiliser l'instruction Get pour lire un tableau de type Variant à partir d'un disque mais vous ne pouvez pas l'utiliser pour lire un scalaire de type Variant contenant un tableau. Vous ne pouvez pas non plus utiliser l'instruction Get pour lire des objets à partir d'un disque.

•	Si la variable lue est de type Variant de VarType 8 (String), l'instruction Get lit 2 octets qui identifient le type VarType, 2 octets qui indiquent la longueur de la chaîne puis les données de la chaîne. La longueur d'enregistrement indiquée par la clause Len de l'instruction Open doit être supérieure d'au moins quatre octets à la longueur réelle de la chaîne.

•	Si la variable lue est un tableau dynamique, l'instruction Get lit un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions, soit 2 + 8 * NumberOfDimensions. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure ou égale à la somme de tous les octets nécessaires à la lecture des données et du descripteur du tableau. Par exemple, la déclaration de tableau suivante nécessite 118 octets lors de l'écriture du tableau sur le disque.

Dim MyArray(1 To 5,1 To 10) As Integer

Les 118 octets se décomposent de la façon suivante : 18 octets pour le descripteur (2 + 8 * 2) et 100 octets pour les données (5 * 10 * 2).

•	Si la variable lue est un tableau de taille fixe, l'instruction Get ne lit que les données. Elle ne lit aucun descripteur.

•	Si la variable lue est un autre type de variable (pas une chaîne de longueur variable ou d'une valeur de type Variant), l'instruction Get ne lit que les données de la variable. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure ou égale à la longueur des données lues.

•	L'instruction Get lit des éléments de types définis par l'utilisateur comme si chacun d'eux était lu de façon individuelle, à ceci près qu'il n'y a pas de remplissage entre les éléments. Sur un disque, un tableau dynamique de type défini par l'utilisateur (écrit avec l'instruction Put) est préfixé par un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions, soit 2 + 8 * NumberOfDimensions. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure ou égale à la somme de tous les octets nécessaires à la lecture des éléments individuels, incluant les tableaux et leurs descripteurs.

Pour les fichiers ouverts en mode Binary, toutes les règles du mode Random s'appliquent, aux exceptions suivantes :

•	La clause Len dans l'instruction Open n'a aucun effet. L'instruction Get lit toutes les variables du disque consécutivement, c'est-à-dire sans remplissage entre les enregistrements.

•	Pour tout tableau autre que ceux de type défini par l'utilisateur, l'instruction Get ne lit que les données. Elle ne lit aucun descripteur.

•	L'instruction Get lit les chaînes de longueur variable qui ne sont pas des éléments de type défini par l'utilisateur, sans rechercher le descripteur de deux octets. Le nombre d'octets lus est égal au nombre de caractères de la chaîne. Par exemple, les instructions suivantes lisent 10 octets dans le fichier avec le numéro de fichier 1 :

VarString = String(10," ")

Get #1,,VarString


Input #, instruction

Lit des données dans un fichier séquentiel ouvert et les attribue à des variables.

Syntaxe

Input #filenumber, varlist

La syntaxe de l'instruction Input # comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
varlist	Liste, délimitée par des virgules, de variables auxquelles sont attribuées les valeurs lues dans le fichier — il ne peut pas s'agir d'un tableau ni d'une variable objet. Vous pouvez toutefois utiliser des variables décrivant un élément de tableau ou un élément de type défini par l'utilisateur.
Remarques

Les données lues avec l'instruction Input # sont généralement écrites dans un fichier à l'aide de l'instruction Write #. Utilisez cette instruction uniquement avec des fichiers ouverts en mode Input ou Binary.

Lorsqu'elles sont lues, les chaînes standard ou les données numériques sont affectées aux variables sans être modifiées. Le tableau suivant indique comment les autres données d'entrée sont traitées :

Données	Valeur affectée à la variable
Virgule de séparation ou ligne vierge	Empty
#NULL#	Null
#TRUE# ou #FALSE#	True ou False
#aaaa-mm-jj hh:mm:ss#	La date et/ou l'heure représentées par l'expression
#ERROR errornumber#	errornumber (la variable est de type Variant marquée comme une erreur)
Les guillemets doubles (" ") inclus dans les données d'entrée ne sont pas pris en compte.

Note   Vous ne devez pas écrire des chaînes qui contiennent des guillemets incorporés, par exemple "1,2""X", avec l'instruction Input # ; en effet, Input # analyse cette chaîne comme deux chaînes intégrales distinctes.

Les éléments de données d'un fichier doivent apparaître dans le même ordre que les variables de l'argument varlist et doivent correspondre à des variables possédant le même type de données. Si une variable est numérique et si les données ne le sont pas, la valeur zéro est attribuée à la variable.

Si la fin du fichier est atteinte pendant l'entrée d'un élément de données, cela met fin à l'entrée et une erreur se produit.

Note   Pour être sûr que les données d'un fichier sont correctement lues et attribuées aux variables à l'aide de l'instruction Input #, utilisez l'instruction Write # au lieu de l'instruction Print # pour écrire les données dans les fichiers. L'instruction Write # garantit une délimitation correcte de chaque champ de données.


Input, fonction

Renvoie une valeur de type String contenant les caractères lus dans un fichier ouvert en mode Input ou Binary.

Syntaxe

Input(number, [#]filenumber)

La syntaxe de la fonction Input comprend les éléments suivants :

Élément	Description
number	Toute expression numérique valide indiquant le nombre de caractères à renvoyer.
filenumber	Tout numéro de fichier valide.
Remarques

Les données lues à l'aide de la fonction Input sont généralement écrites dans un fichier avec l'instruction Print # ou Put. N'utilisez cette instruction qu'avec les fichiers ouverts en mode Input ou Binary.

Contrairement à l'instruction Input #, la fonction Input renvoie tous les caractères lus, y compris les virgules, les retours chariot, les sauts de ligne, les points d'interrogation et les espaces à gauche.

Dans le cas de fichiers ouverts en mode Binary, une erreur se produit si vous tentez de lire le fichier à l'aide de la fonction Input jusqu'à ce que la fonction EOF renvoie la valeur True. Utilisez les fonctions LOF et Loc au lieu de la fonction EOF pour la lecture de fichiers binaires à l'aide de l'instruction Input, ou utilisez l'instruction Get avec la fonction EOF.

Note   La fonction InputB permet d'utiliser les données d'une chaîne sous forme d'octets. Avec la fonction InputB, l'argument number indique le nombre d'octets à renvoyer au lieu du nombre de caractères.


Line Input #, instruction

Lit une ligne unique à partir d'un fichier séquentiel ouvert et l'attribue à une variable de type String.

Syntaxe

Line Input #filenumber, varname

La syntaxe de l'instruction Line Input # comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
varname	Nom de variable de type Variant ou String valide.
Remarques

Les données lues dans un fichier à l'aide de l'instruction Line Input # sont généralement écrites à l'aide de l'instruction Print #.

L'instruction Line Input # lit un à un les caractères d'un fichier jusqu'au premier retour chariot (Chr(13)) ou retour chariot – saut de ligne (Chr(13) + Chr(10)) rencontré. Les séquences retour chariot – saut de ligne ne sont pas prises en compte (elles ne sont pas ajoutées à la chaîne de caractères).


Loc, fonction

Renvoie une valeur de type Long indiquant la position de lecture/écriture courante dans un fichier ouvert.

Syntaxe

Loc(filenumber)

L'argument filenumber peut être tout numéro de fichier valide de type Integer.

Remarques

Le tableau suivant décrit la valeur renvoyée en fonction du mode d'accès au fichier :

Mode	Valeur renvoyée
Random	Numéro du dernier enregistrement lu ou écrit dans le fichier.
Sequential	Position courante de l'octet dans le fichier divisé par 128. Les informations renvoyées par la fonction Loc pour les fichiers séquentiels ne sont toutefois ni utilisées, ni obligatoires.
Binary	Position du dernier octet lu ou écrit.


Lock, Unlock, instructions

Contrôle l'accès d'autres processus à une partie ou à la totalité d'un fichier ouvert à l'aide de l'instruction Open.

Syntaxe

Lock [#]filenumber[, recordrange]
. . .

Unlock [#]filenumber[, recordrange]

La syntaxe des instructions Lock et Unlock comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
recordrange	Facultatif. Plage des enregistrements à verrouiller ou à déverrouiller.
Valeurs

L'argument recordrange peut prendre les valeurs suivantes :

recnumber | [start] To end

Valeur	Description
recnumber	Numéro de l'enregistrement (fichiers ouverts en mode Random) ou numéro de l'octet (fichiers ouverts en mode Binary) où doit commencer le verrouillage ou le déverrouillage.
start	Numéro du premier enregistrement ou octet à verrouiller ou à déverrouiller.
end	Numéro du dernier enregistrement ou octet à verrouiller ou à déverrouiller.
Remarques

Les instructions Lock et Unlock sont utilisées dans des environnements où plusieurs processus peuvent avoir besoin d'accéder au même fichier.

Les instructions Lock et Unlock sont toujours utilisées par paires. Les arguments des instructions Lock et Unlock doivent être totalement identiques.

Le premier enregistrement ou octet d'un fichier occupe la position 1, le deuxième enregistrement ou octet la position 2, et ainsi de suite. Si vous n'indiquez qu'un enregistrement, seul cet enregistrement est verrouillé ou déverrouillé. Si vous indiquez une plage d'enregistrements en omettant l'enregistrement de début (argument start), tous les enregistrements sont verrouillés ou déverrouillés, depuis le début du fichier jusqu'à la fin de la plage indiquée (argument end). L'instruction Lock utilisée sans l'argument recnumber verrouille l'ensemble du fichier, tandis que l'instruction Unlock utilisée sans l'argument recnumber le déverrouille entièrement.

Si le fichier a été ouvert en mode d'entrée ou de sortie séquentielle, les instructions Lock et Unlock s'appliquent à l'ensemble du fichier, quelle que soit la plage indiquée par les arguments start et end.

Attention   N'oubliez pas de déverrouiller tous les enregistrements en exécutant une instruction Unlock avant de fermer un fichier ou de mettre fin à l'exécution de votre programme. Si vous n'effectuez pas cette opération, des erreurs imprévisibles peuvent se produire.


LOF, fonction

Renvoie une valeur de type Long représentant la taille, exprimée en octets, d'un fichier ouvert à l'aide de l'instruction Open.

Syntaxe

LOF(filenumber)

L'argument filenumber peut représenter toute valeur de type Integer contenant un numéro de fichier valide.

Note   Utilisez la fonction FileLen pour obtenir la longueur d'un fichier qui n'est pas ouvert.


Open, instruction

Permet d'exécuter une opération d'Entrée/Sortie (E/S) sur un fichier.

Syntaxe

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

La syntaxe de l'instruction Open comprend les éléments suivants :

Élément	Description
pathname	Expression de chaîne indiquant un nom de fichier — peut comprendre un nom de répertoire ou de dossier et un nom de lecteur.
mode	Mot clé indiquant le mode d'ouverture du fichier : Append, Binary, Input, Output ou Random. S'il n'est pas indiqué, le fichier est ouvert en mode Random.
access	Facultatif. Mot clé indiquant les opérations autorisées sur le fichier ouvert : Read, Write ou Read Write.
lock	Facultatif. Mot clé indiquant les opérations restreintes sur le fichier ouvert par d'autres processus : Shared, Lock Read, Lock Write et Lock Read Write.
filenumber	Numéro de fichier valide compris entre 1 et 511, inclus. Utilisez la fonction FreeFile pour obtenir le prochain numéro de fichier disponible.
reclength	Facultatif. Nombre inférieur ou égal à 32 767 (octets). Pour les fichiers ouverts en mode Random, cette valeur représente la longueur de l'enregistrement. Pour les fichiers séquentiels, elle représente le nombre de caractères contenus dans la zone tampon.
Remarques

Avant de pouvoir exécuter une opération d'Entrée/Sortie sur un fichier, vous devez l'ouvrir. L'instruction Open permet d'associer une zone tampon d'Entrée/Sortie au fichier et de déterminer le mode d'accès à ce fichier dans cette zone.

Si le fichier indiqué par l'argument pathname n'existe pas, il est créé au moment où un fichier est ouvert en mode Append, Binary, Output ou Random.

Si le fichier a déjà été ouvert par un autre processus et si le type d'accès indiqué n'est pas autorisé, l'instruction Open échoue et une erreur se produit.

La clause Len n'est pas prise en compte si l'argument mode a la valeur Binary.

Important   En mode Binary, Input et Random, vous n'êtes pas obligé de fermer un fichier avant de l'ouvrir sous un autre numéro de fichier. En mode Append et Output, vous devez fermer un fichier avant de l'ouvrir sous un autre numéro de fichier.


Print #, instruction

Écrit des données mises en forme pour l'affichage dans un fichier séquentiel.

Syntaxe

Print #filenumber, [outputlist]

La syntaxe de l'instruction Print # comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
outputlist	Facultatif. Expression ou liste d'expressions à imprimer.
Valeurs

L'argument outputlist peut prendre les valeurs suivantes :

[{Spc(n) | Tab[(n)]}] [expression] [charpos]

Valeur	Description
Spc(n)	Utilisé pour insérer des espaces dans la sortie, n indiquant le nombre d'espaces à insérer.
Tab(n)	Utilisé pour placer le point d'insertion sur un numéro de colonne absolu, n indiquant le numéro de colonne. Utilisez la valeur Tab sans argument pour placer le point d'insertion au début de la zone d'impression suivante.
expression	Expressions numériques ou expressions de chaîne à imprimer.
charpos	Indique le point d'insertion du caractère suivant. Indiquez un point-virgule pour placer le point d'insertion immédiatement après le dernier caractère affiché. Utilisez la valeur Tab(n) pour positionner le point d'insertion sur un numéro de colonne absolu. Utilisez la valeur Tab sans argument pour placer le point d'insertion au début de la zone d'impression suivante. Si l'argument charpos est omis, le caractère suivant est imprimé sur la ligne suivante.
Remarques

Les données écrites à l'aide de l'instruction Print # sont généralement lues dans un fichier avec les instructions Line Input # ou Input.

Si vous omettez l'argument outputlist et si vous indiquez uniquement un séparateur de liste après l'argument filenumber, une ligne vierge est imprimée dans le fichier. Les différentes expressions peuvent être séparées indifféremment par un espace ou un point-virgule.

Pour les données de type Boolean, les valeurs True ou False sont imprimées. Les mots clés True et False ne sont jamais traduits, quels que soient les paramètres régionaux.

Les données de type Date sont écrites dans le fichier selon le format de date courte reconnu par votre système. Si l'une des composantes date ou heure est omise ou égale à zéro, seules les composantes fournies sont écrites dans le fichier.

Si la valeur de l'argument outputlist est de type Empty, rien n'est écrit dans le fichier. Toutefois si la valeur de l'argument outputlist est de type Null, la valeur Null est écrite dans le fichier.

Pour les données de type Error, le résultat affiché est Error errorcode. Le mot clé Error n'est jamais traduit, quels que soient les paramètres régionaux.

Toutes les données écrites dans le fichier à l'aide de l'instruction Print # respectent les conventions internationales ; autrement dit, les données sont mises en forme à l'aide du séparateur décimal approprié.

L'instruction Print # écrivant une image des données dans le fichier, vous devez délimiter les données afin qu'elles soient correctement imprimées. Si vous utilisez la valeur Tab sans argument pour déplacer le point d'insertion vers la zone d'impression suivante, l'instruction Print # écrit également dans le fichier les espaces insérés entre les champs imprimés.

Note   Si vous souhaitez lire ultérieurement un fichier à l'aide de l'instruction Input #, utilisez l'instruction Write # plutôt que l'instruction Print # pour écrire les données dans ce fichier. L'utilisation de l'instruction Write # garantit l'intégrité de chaque champ de données grâce à une délimitation précise, de sorte que le fichier peut ensuite être relu à l'aide de l'instruction Input #. L'instruction Write # permet également une lecture correcte du fichier, quels que soient les paramètres régionaux.


Put, instruction

Écrit les données d'une variable dans un fichier disque.

Syntaxe

Put [#]filenumber, [recnumber], varname

La syntaxe de l'instruction Put comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
recnumber	Facultatif. Donnée de type Variant (Long). Numéro de l'enregistrement (fichiers ouverts en mode Random) ou de l'octet (fichiers ouverts en mode Binary) qui marque le début de l'écriture.
varname	Nom de la variable contenant les données à écrire sur le disque.
Remarques

Les données écrites à l'aide de l'instruction Put sont généralement lues dans un fichier avec l'instruction Get.

Le premier enregistrement ou octet d'un fichier occupe la position 1, le deuxième enregistrement ou octet la position 2, et ainsi de suite. Si l'argument recnumber est omis, l'écriture commence à partir de l'enregistrement ou de l'octet suivant la dernière instruction Get ou Put (ou à partir de celui désigné par la dernière fonction Seek). Vous devez inclure des séparateurs virgules. Exemple :

Put #4,,FileBuffer

Les règles suivantes s'appliquent aux fichiers ouverts en mode Random :

•	Si la longueur des données écrites est inférieure à la longueur indiquée dans la clause Len de l'instruction Open, l'instruction Put poursuit l'écriture des enregistrements suivants conformément aux limites de longueur des enregistrements. L'espace compris entre la fin d'un enregistrement et le début de l'enregistrement suivant est rempli par le contenu de la zone tampon du fichier. Comme il est impossible de déterminer avec certitude le volume des données de remplissage, il est généralement préférable que la longueur des enregistrements corresponde à la longueur des données écrites. Une erreur se produit si la longueur des données écrites est supérieure à celle indiquée dans la clause Len de l'instruction Open.

•	Si la variable écrite est une chaîne de longueur variable, l'instruction Put écrit d'abord un descripteur de 2 octets contenant la longueur de la chaîne, puis la variable. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure d'au moins 2 octets à la longueur réelle de la chaîne.

•	Si la variable écrite est une valeur Variant de type numérique, l'instruction Put écrit les 2 octets qui identifient le VarType de la valeur de type Variant puis la variable. Par exemple, lorsqu'elle écrit une valeur de type Variant de VarType 3, l'instruction Put écrit 6 octets : 2 octets qui identifient la valeur de type Variant comme étant de VarType 3 (Long) et 4 octets contenant les données de type Long. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure d'au moins 2 octets au nombre réel d'octets requis pour stocker la variable.

Note   Vous pouvez utiliser l'instruction Put pour écrire un tableau de type Variant sur un disque, mais vous ne pouvez pas l'utiliser pour écrire sur disque un scalaire de type Variant contenant un tableau. Vous ne pouvez pas non plus utiliser l'instruction Put pour écrire des objets sur un disque.

•	Si la variable écrite est de type Variant de VarType 8 (String), l'instruction Put écrit 2 octets qui identifient le type VarType, 2 octets qui indiquent la longueur de la chaîne puis les données de la chaîne. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure d'au moins 4 octets à la longueur réelle de la chaîne.

•	Si la variable écrite est un tableau dynamique, l'instruction Put écrit un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions, soit 2 + 8 * NumberOfDimensions. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure ou égale à la somme de tous les octets nécessaires à l'écriture des données et du descripteur du tableau. Par exemple, la déclaration de tableau suivante nécessite 118 octets pour l'écriture du tableau sur le disque.

Dim MyArray(1 To 5,1 To 10) As Integer

•	Les 118 octets se décomposent de la façon suivante : 18 octets pour le descripteur (2 + 8 * 2) et 100 octets pour les données (5 * 10 * 2).

•	Si la variable écrite est un tableau de taille fixe, l'instruction Put n'écrit que les données. Elle n'écrit aucun descripteur sur le disque.

•	Si la variable écrite est d'un type différent (pas une chaîne de longueur variable ou une valeur de type Variant), l'instruction Put n'écrit que les données de la variable. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure ou égale à la longueur des données écrites.

•	L'instruction Put écrit des éléments de types définis par l'utilisateur comme si chacun d'eux était écrit de façon individuelle, à la différence près qu'il n'y a pas de remplissage entre les éléments. Sur disque, un tableau dynamique de type défini par l'utilisateur écrit avec l'instruction Put est préfixé par un descripteur dont la longueur est égale à 2 plus 8 fois le nombre de dimensions, soit 2 + 8 * NumberOfDimensions. La longueur d'enregistrement indiquée par la clause Len dans l'instruction Open doit être supérieure ou égale à la somme de tous les octets nécessaires à l'écriture des éléments individuels, y compris les tableaux et leurs descripteurs.

Pour les fichiers ouverts en mode Binary, toutes les règles du mode Random s'appliquent, aux exceptions suivantes :

•	La clause Len dans l'instruction Open n'a aucun effet. L'instruction Put écrit toutes les variables sur le disque de manière contiguë, c'est-à-dire sans remplissage entre les enregistrements.

•	Pour tout tableau autre que ceux de type défini par l'utilisateur, l'instruction Put n'écrit que les données. Elle n'écrit aucun descripteur.

•	L'instruction Put écrit les chaînes de longueur variable qui ne sont pas des éléments de type défini par l'utilisateur, sans rechercher le descripteur de 2 octets. Le nombre d'octets écrits est égal au nombre de caractères de la chaîne. Par exemple, les instructions suivantes écrivent 10 octets dans le fichier numéro 1 :

VarString$ = String$(10," ")

Put #1,,VarString$


Reset, instruction

Ferme tous les fichiers disque ouverts à l'aide de l'instruction Open.

Syntaxe

Reset

Remarques

L'instruction Reset ferme tous les fichiers actifs ouverts à l'aide de l'instruction Open et écrit sur le disque le contenu de toutes les zones tampon correspondantes.


Seek, fonction

Renvoie une valeur de type Long indiquant la position de lecture/écriture courante dans un fichier ouvert à l'aide de l'instruction Open.

Syntaxe

Seek(filenumber)

L'argument filenumber est une valeur de type Integer contenant un numéro de fichier valide.

Remarques

La fonction Seek renvoie une valeur comprise entre 1 et 2 147 483 647 (équivalent à 2^31 – 1), inclus.

Le tableau suivant indique les valeurs renvoyées pour chaque mode d'accès au fichier.

Mode	Valeur renvoyée
Random	Numéro de l'enregistrement suivant lu ou écrit
Binary, Output, Append, Input	Position de l'octet à partir duquel l'opération suivante doit avoir lieu. Le premier octet d'un fichier occupe la position 1, le deuxième octet la position 2, et ainsi de suite.


Seek, instruction

Définit la position de la prochaine opération de lecture/écriture dans un fichier ouvert à l'aide de l'instruction Open.

Syntaxe

Seek [#]filenumber, position

La syntaxe de l'instruction Seek comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
position	Nombre compris entre 1 et 2 147 483 647, inclus, qui indique l'endroit où l'opération de lecture ou d'écriture suivante doit avoir lieu.
Remarques

Les numéros d'enregistrement indiqués dans les instructions Get et Put remplacent le positionnement du fichier effectué avec l'instruction Seek.

Une écriture effectuée dans le fichier après exécution de l'instruction Seek au-delà de la fin du fichier a pour effet d'étendre ce fichier. Si vous tentez d'exécuter l'instruction Seek sur une position nulle ou négative, une erreur se produit.


Spc, fonction

Utilisée avec l'instruction Print # ou la méthode Print pour positionner la sortie.

Syntaxe

Spc(n)

L'argument n représente le nombre d'espaces à insérer avant d'afficher ou d'imprimer l'expression suivante dans une liste.

Remarques

Si n est inférieur à la largeur de la ligne de sortie, la position d'impression suivante se situe immédiatement après les espaces indiqués. Si n est supérieur à la largeur de la ligne de sortie, la fonction Spc calcule la position d'impression suivante au moyen de la formule ci-après :

currentprintposition+ (n Mod width)

Par exemple, si la position d'impression courante est 24, la largeur de la ligne de sortie est de 80 et si vous indiquez Spc(90), l'impression suivante commencera à la position 34 (position courante + le reste de 90 - 80). Si la différence entre la position d'impression courante et la largeur de la ligne de sortie est inférieure à n (ou à n Mod width), la fonction Spc passe au début de la ligne suivante et génère un nombre d'espaces égal à n – (width – currentprintposition).

Note   Vérifiez que les colonnes sont suffisamment larges pour contenir des lettres larges.

Lorsque vous utilisez la méthode Print avec une police de caractères proportionnelle, la largeur des espaces imprimés à l'aide de la fonction Spc correspond toujours à la largeur moyenne de tous les caractères dans la taille, exprimée en points, de la police choisie. Toutefois, il n'existe aucune corrélation entre le nombre de caractères imprimés et le nombre de colonnes de largeur fixe qu'ils occupent. Par exemple, la lettre majuscule W occupe un espace supérieur à celui d'une colonne de largeur fixe et la lettre minuscule i occupe un espace inférieur à celui d'une colonne de largeur fixe.


Tab, fonction

Utilisée avec l'instruction Print # ou la méthode Print pour positionner la sortie.

Syntaxe

Tab[(n)]

L'argument n représente le numéro de la colonne dans laquelle la prochaine expression d'une liste doit être affichée ou imprimée. Si cet argument est omis, la fonction Tab place le point d'insertion au début de la zone d'impression suivante. Il est ainsi possible de remplacer une virgule définie comme séparateur décimal par la fonction Tab dans les paramètres régionaux.

Remarques

Si la position d'impression courante dans la ligne courante est supérieure à la valeur de l'argument n, la fonction Tab passe à la ne colonne de la ligne de sortie suivante. Si la valeur de l'argument n est inférieure à 1, la fonction Tab définit la position d'impression dans la colonne 1. Si la valeur de l'argument n est supérieure à la largeur de la ligne de sortie, la fonction Tab calcule la position de sortie suivante à l'aide de la formule ci-après :

n Mod width

Par exemple, si l'argument width prend la valeur 80 et si vous indiquez Tab(90), l'impression suivante commence à la colonne 10 (le reste de 90 - 80). Si la valeur de l'argument n est inférieure à la position d'impression courante, l'impression commence à la ligne suivante, au niveau de la position d'impression calculée. Si la position calculée est supérieure à la position d'impression courante, la sortie commence à la même ligne, au niveau de la position calculée.

La position d'impression de l'extrême gauche de la ligne de sortie est toujours la position 1. Si vous utilisez l'instruction Print # pour imprimer dans des fichiers, la position d'impression de l'extrême droite correspond à la largeur courante du fichier de sortie, laquelle peut être définie à l'aide de l'instruction Width #.

Note   Vérifiez que les colonnes sont suffisamment larges pour contenir des lettres larges.

Lorsque vous utilisez la fonction Tab avec la méthode Print, la surface d'impression est divisée en colonnes uniformes de largeur fixe. La largeur de chaque colonne correspond à la largeur moyenne de tous les caractères dans la taille, exprimée en points, de la police choisie. Toutefois, il n'existe aucune corrélation entre le nombre de caractères affichés et le nombre de colonnes de largeur fixe qu'ils occupent. Par exemple, la lettre majuscule W occupe un espace supérieur à celui d'une colonne de largeur fixe et la lettre minuscule i occupe un espace inférieur à celui d'une colonne de largeur fixe.


Width #, instruction

Attribue une largeur de ligne de sortie à un fichier ouvert à l'aide de l'instruction Open.

Syntaxe

Width #filenumber, width

La syntaxe de l'instruction Width # comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
width	Expression numérique comprise entre 0 et 255, inclus, qui indique le nombre de caractères qui apparaissent sur une ligne avant le passage à la ligne suivante. Si la valeur de l'argument width est 0, la longueur de la ligne est illimitée. La valeur par défaut de l'argument width est 0.


Write #, instruction

Écrit des données dans un fichier séquentiel.

Syntaxe

Write #filenumber, [outputlist]

La syntaxe de l'instruction Write # comprend les éléments suivants :

Élément	Description
filenumber	Tout numéro de fichier valide.
outputlist	Facultatif. Une ou plusieurs expressions numériques ou expressions de chaîne délimitées par des séparateurs virgules, devant être écrites dans un fichier.
Remarques

Les données écrites à l'aide de l'instruction Write # sont généralement lues dans un fichier avec l'instruction Input #.

Si vous omettez l'argument outputlist et si vous insérez un séparateur virgule après l'argument filenumber, une ligne vierge est imprimée dans le fichier. Vous pouvez séparer plusieurs expressions par un espace, un point-virgule ou une virgule. Un espace ou un point-virgule ont le même effet.

Lorsque l'instruction Write # est utilisée pour écrire des données dans un fichier, certaines conventions universelles sont respectées afin que les données puissent être lues et correctement interprétées à l'aide de l'instruction Input #, quels que soient les paramètres régionaux :

•	Les données numériques sont toujours écrites avec un point en tant que séparateur décimal.

•	Pour les données de type Boolean, la valeur #TRUE# ou #FALSE# est imprimée. Les mots clés True et False ne sont jamais traduits, quels que soient les paramètres régionaux.

•	Les données de type Date sont écrites dans le fichier conformément au format de date universel. Si la composante date ou heure est omise ou égale à zéro, seule la partie fournie est écrite dans le fichier.

•	Si les données de l'argument outputlist sont de type Empty, rien n'est écrit dans le fichier. Toutefois, dans le cas de données de type Null, la valeur #NULL# est écrite.

•	Si les données de l'argument outputlist sont de type Null, la valeur #NULL# est écrite dans le fichier.

•	Pour les données de type Error, le résultat apparaît sous la forme #ERROR errorcode#. Le mot clé Error n'est jamais traduit, quels que soient les paramètres régionaux.

Contrairement à l'instruction Print #, l'instruction Write # insère des virgules entre les éléments et des guillemets doubles de part et d'autre des chaînes de caractères au moment de leur écriture dans le fichier. Vous n'avez donc pas à placer de séparateurs explicites dans la liste. L'instruction Write # insère un caractère de passage à la ligne, c'est-à-dire un retour chariot–saut de ligne (Chr(13) + Chr(10)), après l'écriture dans le fichier du dernier caractère contenu dans l'argument outputlist.

Note   Vous ne devez pas écrire des chaînes qui contiennent des guillemets incorporés, par exemple "1,2""X", avec l'instruction Input # ; en effet, Input # analyse cette chaîne comme deux chaînes intégrales distinctes.


DDB, fonction, exemple

Cet exemple utilise la fonction DDB pour renvoyer la valeur d'amortissement d'un actif sur une période déterminée, en fonction de son coût initial (InitCost), de sa valeur résiduelle à l'issue de sa période d'utilisation (SalvageVal), de sa durée de vie totale en nombre d'années (LifeTime) et de la période en nombre d'années, sur laquelle l'amortissement est calculé (Depr).

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr

Const YRMOS = 12	' Nombre de mois dans une année.

Fmt = "###,##0.00"

InitCost = InputBox("Quelle est la valeur initiale de l'actif ?")

SalvageVal = InputBox("Quelle est la valeur " & _

"résiduelle de l'actif à l'issue de sa " & _

"période d'utilisation ?")

MonthLife = InputBox("Quelle est la durée de vie " & _

"de l'actif en nombre de mois ?")

Do While MonthLife < YRMOS	' Vérifie que la période est >= 1 an.

MsgBox "La durée de vie de l'actif doit être " & _

"supérieure ou égale à un an."

MonthLife = InputBox("Quelle est la durée de " & _

"vie de l'actif en nombre de mois ?")

Loop

LifeTime = MonthLife / YRMOS	' Convertit le nombre

' de mois en années.

If LifeTime <> Int(MonthLife / YRMOS) Then

LifeTime = Int(LifeTime + 1)	' Arrondit à l'année la plus proche.

End If

DepYear = CInt(InputBox("Entrez l'année de référence pour le calcul de l'amortissement."))

Do While DepYear < 1 Or DepYear > LifeTime

MsgBox "Vous devez spécifier une valeur " & _

"comprise entre 1 et " & LifeTime

DepYear = InputBox("Entrez l'année de référence " _

& " pour le calcul de l'amortissement.")

Loop

Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)

MsgBox " La valeur de l'amortissement pour l'année" & _

DepYear & " est de " & Format(Depr, Fmt) & "."


FV, fonction, exemple

Cet exemple utilise la fonction FV pour renvoyer la valeur future d'un investissement, en fonction des intérêts produits par période (APR / 12), du nombre total des versements (TotPmts), du montant des versements (Payment), de la valeur actuelle de l'investissement (PVal) et d'un nombre indiquant si les versements s'effectuent au début ou à la fin des périodes de versement (PayType). Notez que Payment doit être une valeur négative puisqu'il s'agit d'une sortie de trésorerie.

Dim Fmt, Payment, APR, TotPmts, PayType, PVal, FVal

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Moment du versement.

Fmt = "###,###,##0.00"	' Définit un format monétaire.

Payment = InputBox("Quelle somme désirez-vous épargner chaque mois ?")

APR = InputBox("Entrez le taux d'intérêt annuel escompté.")

If APR > 1 Then APR = APR / 100	' Convertit au format approprié.

TotPmts = InputBox("Pendant combien de mois pensez-vous épargner ?")

PayType = MsgBox("Effectuez-vous les versements " & _

"à la fin du mois ?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

End If

PVal = InputBox("De quelle somme disposez-vous " & _

" actuellement sur ce compte d'épargne ?")

FVal = FV(APR / 12, TotPmts, -Payment, -PVal, PayType)

MsgBox "La valeur de votre épargne sera de " & Format(FVal, Fmt) & "."


IPmt, fonction, exemple

Cet exemple utilise la fonction IPmt pour calculer la proportion des intérêts dans le montant des remboursements d'un emprunt sachant que le montant des remboursements reste constant. Sont spécifiés le taux d'intérêt par période (APR / 12), la période de remboursement pour laquelle on souhaite connaître la proportion des intérêts (Period), le nombre total des remboursements (TotPmts), la valeur actuelle ou le principal de l'emprunt (PVal), la valeur future de l'emprunt (FVal) et un nombre indiquant si les remboursements s'effectuent au début ou à la fin des périodes de remboursement (PayType).

Dim FVal, Fmt, PVal, APR, TotPmts, PayType, Period, IntPmt, TotInt, Msg

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Moment du versement.

FVal = 0	' Habituellement 0 pour un emprunt.

Fmt = "###,###,##0.00"	' Définit un format monétaire.

PVal = InputBox("Quelle somme désirez-vous emprunter ?")

APR = InputBox("Quel est le taux d'intérêt annuel de votre emprunt ?")

If APR > 1 Then APR = APR / 100	' Convertit au format approprié.

TotPmts = InputBox("Entrez le nombre de mensualités.")

PayType = MsgBox("Effectuez-vous les versements " & _

"en fin de mois ?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

End If

For Period = 1 To TotPmts	' Totalise les intérêts.

IntPmt = IPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)

TotInt = TotInt + IntPmt

Next Period

Msg = "Vous paierez une somme totale de Format(TotInt, Fmt)

Msg = Msg & " au titre des intérêts de cet emprunt."

MsgBox Msg	' Affiche les résultats.


IRR, fonction, exemple

Dans cet exemple, la fonction IRR renvoie le taux de rentabilité interne d'une série de 5 mouvements de trésorerie contenus dans le tableau Values(). Le premier élément du tableau est un mouvement de trésorerie négatif correspondant aux frais de lancement de l'entreprise. Les 4 mouvements de trésorerie restant sont des mouvements positifs pour les 4 années qui suivent la première. Guess correspond au taux de rentabilité interne estimé.

Dim Guess, Fmt, RetRate, Msg

Static Values(5) As Double	' Définit un tableau.

Guess = .1	' La variable Guess commence à 10%.

Fmt = "#0.00"	' Définit un format pourcentage.

Values(0) = -70000	' Frais de lancement de l'entreprise.

' Mouvements de trésorerie positifs représentant

' les revenus de quatre années successives.

Values(1) = 22000 : Values(2) = 25000

Values(3) = 28000 : Values(4) = 31000

' Calcule le taux de rentabilité interne.

RetRate = IRR(Values(), Guess) * 100

Msg = "Le taux de rentabilité interne de ces" _

& "cinq mouvements de trésorerie est de "

Msg = Msg & Format(RetRate, Fmt) & " pour cent."

MsgBox Msg	' Affiche le taux de rentabilité interne.


MIRR, fonction, exemple

Cet exemple utilise la fonction MIRR pour renvoyer le taux de rentabilité interne modifié d'une série de mouvements de trésorerie représentés par les variables Values()contenues dans un tableau. LoanAPR représente les intérêts financiers tandis que InvAPR représente les intérêts produits par le réinvestissement.

Dim LoanAPR, InvAPR, Fmt, RetRate, Msg

Static Values(5) As Double	' Définit un tableau.

LoanAPR = .1	' Taux d'intérêt de l'emprunt.

InvAPR = .12	' Taux de réinvestissement.

Fmt = "#0.00"	' Définit un format monétaire.

Values(0) = -70000	' Frais de lancement de l'entreprise.

' Mouvements de trésorerie positifs représentant

' les revenus de quatre années successives.

Values(1) = 22000 : Values(2) = 25000

Values(3) = 28000 : Values(4) = 31000

' Calcule le taux de rentabilité interne.

RetRate = MIRR(Values(), LoanAPR, InvAPR)

Msg = "Le taux de rentabilité interne modifié de " & _

"ces cinq mouvements de trésorerie est de "

Msg = Msg & Format(Abs(RetRate) * 100, Fmt) & "%."

MsgBox Msg	' Affiche le taux de rentabilité interne.


NPer, fonction, exemple

Cet exemple utilise la fonction NPer pour renvoyer le nombre de périodes nécessaires pour rembourser un emprunt dont le montant est représenté par PVal. Sont également spécifiés le taux d'intérêt par période (APR / 12), le montant des versements (Payment), la valeur future de l'emprunt (FVal), ainsi qu'un nombre indiquant si les remboursements s'effectuent au début ou à la fin des périodes de remboursement (PayType).

Dim FVal, PVal, APR, Payment, PayType, TotPmts

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Moment du versement.

FVal = 0	' Habituellement 0 pour un emprunt.

PVal = InputBox("Quelle somme désirez-vous emprunter ?")

APR = InputBox("Quel est le taux d'intérêt annuel de votre emprunt ?")

If APR > 1 Then APR = APR / 100	' Convertit au format approprié.

Payment = InputBox("Quel montant désirez-vous rembourser chaque mois ?")

PayType = MsgBox("Effectuerez-vous les " & _

"remboursements en fin de mois ?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

End If

TotPmts = NPer(APR / 12, -Payment, PVal, FVal, PayType)

If Int(TotPmts) <> TotPmts Then TotPmts = Int(TotPmts) + 1

MsgBox "Il vous faudra " & TotPmts & _

" mois pour rembourser votre emprunt."


NPV, fonction, exemple

Cet exemple utilise la fonction NPV pour renvoyer la valeur actuelle nette d'une série de mouvements de trésorerie représentés par les variables Values()contenues dans un tableau. RetRate représente le taux de rentabilité interne fixe.

Dim Fmt, Guess, RetRate, NetPVal, Msg

Static Values(5) As Double	' Définit un tableau.

Fmt = "###,##0.00"	' Définit un format monétaire.

Guess = .1	' Guess commence à 10 pour cent.

RetRate = .0625	' Définit le taux de rentabilité interne fixe.

Values(0) = -70000	' Frais de lancement de l'entreprise.

' Mouvements de trésorerie positifs représentant

' les revenus de quatre années successives.

Values(1) = 22000 : Values(2) = 25000

Values(3) = 28000 : Values(4) = 31000

NetPVal = NPV(RetRate, Values())	' Calcule  la valeur actuelle nette.

Msg = "La valeur actuelle nette de ces mouvements de trésorerie est de "

Msg = Msg & Format(NetPVal, Fmt) & "."

MsgBox Msg	' Affiche la valeur actuelle nette.


Pmt, fonction, exemple

Cet exemple utilise la fonction Pmt pour renvoyer le montant mensuel des remboursements d'un emprunt sur une période fixe. Sont spécifiés le taux d'intérêt par période (APR / 12), le nombre total de versements (TotPmts), la valeur actuelle ou le principal de l'emprunt (PVal), la valeur future de l'emprunt (FVal) ainsi qu'un nombre indiquant si les remboursements s'effectuent au début ou à la fin des périodes de remboursement (PayType).

Dim Fmt, FVal, PVal, APR, TotPmts, PayType, Payment

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Moment du versement.

Fmt = "###,###,##0.00"	' Définit un format monétaire.

FVal = 0	' Habituellement 0 pour un emprunt.

PVal = InputBox("Quelle somme désirez-vous emprunter ?")

APR = InputBox("Quel est le taux d'intérêt annuel de votre emprunt ?")

If APR > 1 Then APR = APR / 100	' Convertit au format approprié.

TotPmts = InputBox("Combien de mensualités prévoyez-vous ?")

PayType = MsgBox("Effectuerez-vous les " & _

" remboursements en fin de mois ?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

End If

Payment = Pmt(APR / 12, TotPmts, -PVal, FVal, PayType)

MsgBox "Vos remboursements seront de " & _

Format(Payment, Fmt) & " par mois."


PPmt, fonction, exemple

Cet exemple utilise la fonction PPmt pour déterminer quelle proportion d'un versement réalisé à une période donnée correspond au remboursement du principal, sachant que le montant des remboursements reste constant par ailleurs. Sont spécifiés le taux d'intérêt par période (APR / 12), l'échéance pour laquelle on désire connaître la quotité du principal (Period), le nombre total de remboursements (TotPmts), la valeur actuelle ou le principal de l'emprunt (PVal), la valeur future de l'emprunt (FVal), ainsi qu'un nombre indiquant si les remboursements s'effectuent au début ou à la fin des périodes de remboursement (PayType).

Dim NL, TB, Fmt, FVal, PVal, APR, TotPmts, PayType, Payment, Msg, MakeChart, Period, P, I

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Moment du versement.

NL = Chr(13) & Chr(10)	' Définit une nouvelle ligne.

TB = Chr(9)	' Définit une tabulation.

Fmt = "###,###,##0.00"	' Définit un format monétaire.

FVal = 0	' Habituellement 0 pour un emprunt.

PVal = InputBox("Quelle somme désirez-vous emprunter ?")

APR = InputBox("Quel est le taux d'intérêt annuel de votre emprunt ?")

If APR > 1 Then APR = APR / 100	' Convertit au format approprié.

TotPmts = InputBox("Combien de mensualités prévoyez-vous ?")

PayType = MsgBox("Effectuerez-vous les " & _

"remboursements en fin de mois ?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

End If

Payment = Abs(-Pmt(APR / 12, TotPmts, PVal, FVal, PayType))

Msg = "Le montant de chaque mensualité sera de " & _

Format(Payment, Fmt) & ". "

Msg = Msg & "Désirez-vous connaître la proportion du remboursement "

Msg = Msg & " du principal et des intérêts par échéance ?"

MakeChart = MsgBox(Msg, vbYesNo)	' Vérifie si l'utilisateur

' souhaite un graphique.

If MakeChart <> vbNo Then

If TotPmts > 12 Then MsgBox "Ces informations "& _

"ne concernent que la première année."

Msg = "Mois  Versement  Principal  Intérêts" & NL

For Period = 1 To TotPmts

If Period > 12 Then Exit For	' N'affiche que les 12 premiers.

P = PPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)

P = (Int((P + .005) * 100) / 100)	' Arrondit le principal.

I = Payment - P

I = (Int((I + .005) * 100) / 100)	' Arrondit le montant des

' intérêts.

Msg = Msg & Period & TB & Format(Payment, Fmt)

Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL

Next Period

MsgBox Msg	' Affiche le tableau d'amortissement.

End If


PV, fonction, exemple

Dans cet exemple, la fonction PV renvoie la valeur actuelle d'une rente d'un million de francs qui produira un revenu de 50 000 francs par an pendant vingt ans. Sont spécifiés le taux de rendement annuel escompté (APR), le nombre total des annuités versées (TotPmts), le montant de chaque versement (YrIncome), la valeur future totale de l'investissement (FVal), ainsi qu'un nombre indiquant si les versements s'effectuent au début ou à la fin des périodes de paiement (PayType). Notez que, dans la mesure où YrIncome correspond à un prélèvement effectué chaque année sur le capital, il s'agit d'une valeur négative.

Dim Fmt, APR, TotPmts, YrIncome, FVal, PayType, PVal

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Moment des versements.

Fmt = "###,##0.00"	' Définit un format monétaire.

APR = .0825	' Taux de rendement annuel.

TotPmts = 20	' Nombre total de versements.

YrIncome = 50000	' Revenu annuel.

FVal = 1000000	' Valeur future.

PayType = BEGINPERIOD	' Paiement en début de mois.

PVal = PV(APR, TotPmts, -YrIncome, FVal, PayType)

MsgBox "La valeur actuelle est " & Format(PVal, Fmt) & "."


Rate, fonction, exemple

Cet exemple utilise la fonction Rate pour calculer le taux d'intérêt d'un emprunt, étant spécifié le nombre d'échéances (TotPmts), le montant des remboursements (Payment), la valeur actuelle ou le principal de l'emprunt (PVal), la valeur future de l'emprunt (FVal), un nombre indiquant si le paiement doit se faire en début ou en fin de période (PayType), ainsi que la valeur approximative du taux d'intérêt escompté (Guess).

Dim Fmt, FVal, Guess, PVal, Payment, TotPmts, PayType, APR

Const ENDPERIOD = 0, BEGINPERIOD = 1	' Moment des versements.

Fmt = "##0.00"	' Définit un format pourcentage.

FVal = 0	' Habituellement 0 pour un emprunt.

Guess = .1	' Guess de 10 pour cent.

PVal = InputBox("Quelle somme avez-vous empruntée ?")

Payment = InputBox("Quel est le montant de vos mensualités ?")

TotPmts = InputBox("Combien de mensualités devez-vous payer ?")

PayType = MsgBox("Effectuez-vous les remboursements " _

 & "en fin de mois ?", vbYesNo)

If PayType = vbNo Then PayType = BEGINPERIOD Else PayType = ENDPERIOD

End If

APR = (Rate(TotPmts, -Payment, PVal, FVal, PayType, Guess) * 12) * 100

MsgBox "Votre taux d'intérêt est de " & _

Format(CInt(APR), Fmt) & " pour cent."


SLN, fonction, exemple

Cet exemple utilise la fonction SLN pour renvoyer l'amortissement linéaire d'un actif pour une période déterminée, en fonction du coût initial de l'actif (InitCost), de sa valeur résiduelle à l'issue de sa période d'utilisation (SalvageVal) et de sa durée de vie en nombre d'années (LifeTime).

Dim Fmt, InitCost, SalvageVal, MonthLife

Dim LifeTime, PDepr

Const YEARMONTHS = 12	' Nombre de mois compris dans une année.

Fmt = "###,##0.00"	' Définit un format monétaire.

InitCost = InputBox("Quel est le coût initial de l'actif ?")

SalvageVal = InputBox("Quelle est la valeur résiduelle de l'actif " & _

"à l'issue de sa période d'utilisation ?")

MonthLife = InputBox("Quelle est la durée de vie " & _

"de l'actif en nombre de mois ?")

Do While MonthLife < YEARMONTHS	' Vérifie que période >= 1 an.

MsgBox "La durée de vie de l'actif doit être " & _

"supérieure ou égale à un an."

MonthLife = InputBox("Quelle est la durée de " & _

"vie de l'actif en nombre de mois ?")

Loop

LifeTime = MonthLife / YEARMONTHS	' Convertit le nombre de mois en

' années.

If LifeTime <> Int(MonthLife / YEARMONTHS) Then

LifeTime = Int(LifeTime + 1)	' Arrondit à l'année la plus proche.

End If

PDepr = SLN(InitCost, SalvageVal, LifeTime)

MsgBox "La valeur d'amortissement est de " & _

Format(PDepr, Fmt) & " par an."


SYD, fonction, exemple

Cet exemple utilise la fonction SYD pour renvoyer la valeur d'amortissement d'un actif pour une période déterminée, en fonction du coût initial de l'actif (InitCost), de sa valeur résiduelle à l'issue de sa période d'utilisation (SalvageVal) et de sa durée de vie totale en nombre d'années (LifeTime). La période de référence pour le calcul de l'amortissement (Pdepr) est également spécifiée en nombre d'années.

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, PDepr

Const YEARMONTHS = 12	' Nombre de mois compris dans une année.

Fmt = "###,##0.00"	' Définit un format monétaire.

InitCost = InputBox("Quel est le coût initial de l'actif ?")

SalvageVal = InputBox("Quelle est la valeur résiduelle de " & _

"l'actif à l'issue de sa période d'utilisation ?")

MonthLife = InputBox("Quelle est la durée de vie " & _

"de l'actif en nombre de mois ?")

Do While MonthLife < YEARMONTHS	' Vérifie que période >= 1 an.

MsgBox "La durée de vie de l'actif doit être " & _

" supérieure ou égale à un an."

MonthLife = InputBox("Quelle est la durée de " & _

"vie de l'actif en nombre de mois ?")

Loop

LifeTime = MonthLife / YEARMONTHS	' Convertit le nombre de mois en années.

If LifeTime <> Int(MonthLife / YEARMONTHS) Then

LifeTime = Int(LifeTime + 1)	' Arrondit à l'année la plus proche.

End If

DepYear = CInt(InputBox("Pour quelle année " & _

"désirez-vous connaître la valeur d'amortissement ?"))

Do While DepYear < 1 Or DepYear > LifeTime

MsgBox "Vous devez entrer une valeur comprise entre 1 et " & LifeTime

DepYear = CInt(InputBox("Pour quelle année souhaitez-vous " & _

"connaître la valeur d'amortissement ?"))

Loop

PDepr = SYD(InitCost, SalvageVal, LifeTime, DepYear)

MsgBox "Le valeur de l'amortissement pour l'année " & _

DepYear & " est " & Format(PDepr, Fmt) & "."


DDB, fonction

Renvoie une valeur de type Double indiquant l'amortissement d'un bien au cours d'une période spécifique en utilisant la méthode d'amortissement dégressif à taux double ou toute autre méthode précisée.

Syntaxe

DDB(cost, salvage, life, period[, factor])

La fonction DDB comprend les arguments nommés suivants :

Élément	Description
cost	Donnée de type Double indiquant le coût initial du bien.
salvage	Donnée de type Double indiquant la valeur du bien à la fin de son cycle de vie.
life	Donnée de type Double indiquant la durée du cycle de vie du bien.
period	Donnée de type Double indiquant la période sur laquelle l'amortissement du bien est calculé.
factor	Facultatif. Donnée de type Variant indiquant le taux utilisé pour le calcul de l'amortissement. S'il n'est pas précisé, la valeur par défaut est 2 (méthode d'amortissement dégressif à taux double).
Remarques

La méthode d'amortissement dégressif à taux double calcule l'amortissement à un taux accéléré. L'amortissement est plus important au cours de la première période, puis ralentit au cours des périodes suivantes.

Les arguments life et period doivent être exprimés dans les mêmes unités. Par exemple, si l'argument life est exprimé en mois, il doit en être de même pour l'argument period. Tous les arguments doivent avoir pour valeur des nombres positifs.

La fonction DDB utilise la formule suivante pour calculer l'amortissement sur une période donnée :

Amortissement / period = ((cost – salvage) * factor) / life


FV, fonction

Renvoie une valeur de type Double indiquant le futur montant d'une annuité basée sur des versements constants et périodiques et sur un taux d'intérêt fixe.

Syntaxe

FV(rate, nper, pmt[, pv[, type]])

La fonction FV comprend les arguments nommés suivants :

Élément	Description
rate	Donnée de type Double indiquant le taux d'intérêt par échéance. Par exemple, si vous obtenez un prêt pour l'achat d'une voiture à un taux d'intérêt annuel (TIA) de 10 % et si vous effectuez des remboursements mensuels, le taux par échéance est de 0,1/12, soit 0,0083.
nper	Donnée de type Integer indiquant le nombre total d'échéances de l'emprunt ou du placement. Par exemple, si vous effectuez des remboursements mensuels dans le cadre d'un prêt d'une durée de quatre ans pour l'achat d'une voiture, votre emprunt comporte un total de 4 * 12 (soit 48) échéances.
pmt	Donnée de type Double indiquant le montant du paiement à effectuer à chaque échéance. Les paiements incluent généralement le capital et les intérêts qui ne sont pas modifiés au cours de l'emprunt ou du placement.
pv	Facultatif. Donnée de type Variant indiquant la valeur actuelle (ou somme globale) d'une série de paiements devant être effectués dans le futur. Par exemple, lorsque vous empruntez pour acheter une voiture, le montant du prêt correspond pour le prêteur à la valeur actuelle des remboursements mensuels que vous allez effectuer. Si l'argument est omis, la valeur par défaut est 0.
type	Facultatif. Donnée de type Variant indiquant la date d'échéance des paiements. Indiquez la valeur 0 si les paiements sont dus à terme échu, ou la valeur 1 si les paiements sont dus à terme à échoir. Si l'argument est omis, la valeur par défaut est 0.
Remarques

Cette fonction concerne un contrat donnant lieu au versement périodique d'une somme pendant une certaine durée. Il peut s'agir d'un prêt (pour l'achat d'une maison, par exemple) ou d'un placement (tel qu'un plan d'épargne sur lequel de l'argent est viré chaque mois).

Les arguments rate et nper doivent être calculés à l'aide d'échéances exprimées dans les mêmes unités. Par exemple, si l'argument rate est calculé en mois, il doit en être de même pour l'argument nper.

Pour tous les arguments, les sommes versées (telles que les dépôts sur un compte épargne) sont représentées par des nombres négatifs ; les sommes reçues (telles que les distributions de dividendes), sont représentées par des nombres positifs.


IPmt, fonction

Renvoie une valeur de type Double indiquant le montant, sur une période donnée, d'une annuité basée sur des versements constants et périodiques et sur un taux d'intérêt fixe.

Syntaxe

IPmt(rate, per, nper, pv[, fv[, type]])

La fonction IPmt comprend les arguments nommés suivants :

Élément	Description
rate	Donnée de type Double indiquant le taux d'intérêt par échéance. Par exemple, si vous obtenez un prêt pour l'achat d'une voiture à un taux d'intérêt annuel (TIA) de 10 pour cent et si vous effectuez des remboursements mensuels, le taux par échéance est de 0,1/12, soit 0,0083.
per	Donnée de type Double indiquant la périodicité des paiements, comprise entre 1 et nper.
nper	Donnée de type Double indiquant le nombre total d'échéances de l'emprunt ou du placement. Par exemple, si vous effectuez des remboursements mensuels dans le cadre d'un prêt d'une durée de quatre ans pour l'achat d'une voiture, votre emprunt comporte un total de 4 * 12 (soit 48) échéances.
pv	Donnée de type Double indiquant la valeur actuelle, ou valeur au jour d'aujourd'hui, d'une série de paiements ou d'encaissements devant avoir lieu dans le futur. Par exemple, si vous empruntez pour acheter une voiture, le montant du prêt correspond pour le prêteur à la valeur actuelle des remboursements mensuels que vous allez effectuer.
fv	Facultatif. Donnée de type Variant indiquant la valeur future ou le solde que vous souhaitez obtenir après avoir effectué le dernier paiement. Par exemple, la valeur future d'un emprunt est de 0 F car il s'agit de sa valeur après le dernier remboursement. Toutefois, si vous souhaitez épargner 250 000 F sur 18 ans pour votre retraite, la valeur future est de 250 000 F. Si l'argument est omis, la valeur par défaut est 0.
type	Facultatif. Donnée de type Variant indiquant la date d'échéance des paiements. Indiquez la valeur 0 si les paiements sont dus à terme échu, ou la valeur 1 si les paiements sont dus à terme à échoir. Si l'argument est omis, la valeur par défaut est 0.
Remarques

Cette fonction concerne un contrat donnant lieu au versement périodique d'une somme pendant une certaine durée. Il peut s'agir d'un prêt (pour l'achat d'une maison, par exemple) ou d'un placement (tel qu'un plan d'épargne sur lequel de l'argent est viré chaque mois).

Les arguments rate et nper doivent être calculés à l'aide d'échéances exprimées dans les mêmes unités. Par exemple, si l'argument rate est calculé en mois, il doit en être de même pour l'argument nper.

Pour tous les arguments, les sommes versées (telles que les dépôts sur un compte épargne) sont représentées par des nombres négatifs ; les sommes reçues (telles que les distributions de dividendes), sont représentées par des nombres positifs.


IRR, fonction

Renvoie une valeur de type Double indiquant le taux de rendement interne d'une série de mouvements de trésorerie périodiques (paiements et encaissements).

Syntaxe

IRR(values()[, guess])

La fonction IRR comprend les arguments nommés suivants :

Élément	Description
values()	Tableau de données de type Double indiquant les valeurs des mouvements de trésorerie. Le tableau doit contenir au moins une valeur négative (un paiement) et une valeur positive (un encaissement).
guess	Facultatif. Donnée de type Variant indiquant la valeur qui devrait être renvoyée par la fonction IRR. S'il est omis, l'argument guess prend pour valeur 0,1 (10 pour cent).
Remarques

Le taux de rendement interne est le taux d'intérêt perçu pour un placement comprenant des paiements et des encaissements survenant à intervalles réguliers.

La fonction IRR utilise l'ordre des valeurs dans le tableau pour interpréter l'ordre des paiements et des encaissements. Veillez à saisir vos valeurs de paiements et d'encaissements dans l'ordre correct. Les mouvements de trésorerie pour chaque période ne doivent pas nécessairement être constants, comme dans le cas des emprunts et placements.

La fonction IRR effectue le calcul par itération. En commençant par la valeur de l'argument guess, la fonction IRR répète le cycle de calcul jusqu'à ce que le résultat soit précis à 0,00001 % près. La fonction IRR échoue si elle n'a pas pu trouver de résultat au bout de 20 tentatives.


MIRR, fonction

Renvoie une valeur de type Double indiquant le taux de rendement interne modifié d'une série de mouvements de trésorerie périodiques (paiements et encaissements).

Syntaxe

MIRR(values(), finance_rate, reinvest_rate)

La fonction MIRR comprend les arguments nommés suivants :

Élément	Description
values()	Tableau de données de type Double indiquant les valeurs des mouvements de trésorerie. Le tableau doit contenir au moins une valeur négative (un paiement) et une valeur positive (un encaissement).
finance_rate	Donnée de type Double indiquant le taux d'intérêt payé pour couvrir le coût du financement.
reinvest_rate	Donnée de type Double indiquant le taux d'intérêt perçu sur les gains tirés des sommes réinvesties.
Remarques

Le taux de rendement interne modifié est le taux de rendement interne lorsque les paiements et les encaissements sont soumis à des taux différents. La fonction MIRR prend en compte à la fois le coût de l'investissement (finance_rate) et le taux d'intérêt perçu pour les sommes réinvesties (reinvest_rate).

Les arguments finance_rate et reinvest_rate sont des pourcentages exprimés sous forme de valeurs décimales. Par exemple, 12 pour cent est exprimé sous la forme 0,12.

La fonction MIRR utilise l'ordre des valeurs dans le tableau pour interpréter l'ordre des paiements et des encaissements. Veillez à saisir vos valeurs de paiements et d'encaissements dans l'ordre correct.


NPer, fonction

Renvoie une valeur de type Double indiquant le nombre d'échéances d'une annuité basée sur des versements constants et périodiques et sur un taux d'intérêt fixe.

Syntaxe

NPer(rate, pmt, pv[, fv[, type]])

La fonction NPer comprend les arguments nommés suivants :

Élément	Description
rate	Donnée de type Double indiquant le taux d'intérêt par échéance. Par exemple, si vous obtenez un prêt pour l'achat d'une voiture à un taux d'intérêt annuel (TIA) de 10 pour cent et si vous effectuez des remboursements mensuels, le taux par échéance est de 0,1/12, ou 0,0083.
pmt	Donnée de type Double indiquant le paiement à effectuer à chaque échéance. Les paiements comprennent généralement le capital et les intérêts qui ne sont pas modifiés au cours de l'emprunt ou du placement.
pv	Donnée de type Double indiquant la valeur actuelle, ou valeur au jour d'aujourd'hui, d'une série de paiements ou d'encaissements devant avoir lieu dans le futur. Par exemple, si vous empruntez pour acheter une voiture, le montant du prêt correspond pour le prêteur à la valeur actuelle des remboursements mensuels que vous allez effectuer.
fv	Facultatif. Donnée de type Variant indiquant la valeur future ou le solde que vous souhaitez obtenir après avoir effectué le dernier paiement. Par exemple, la valeur future d'un emprunt est de 0 F car il s'agit de sa valeur après le dernier remboursement. Toutefois, si vous souhaitez épargner 250 000 F sur 18 ans pour votre retraite, la valeur future est de 250 000 F. Si l'argument est omis, la valeur par défaut est 0.
type	Facultatif. Donnée de type Variant indiquant la date d'échéance des paiements. Indiquez la valeur 0 si les paiements sont dus à terme échu ou la valeur 1 si les paiements sont dus à terme à échoir. Si l'argument est omis, la valeur par défaut est 0.
Remarques

Cette fonction concerne un contrat donnant lieu au versement périodique d'une somme pendant une certaine durée. Il peut s'agir d'un prêt (pour l'achat d'une maison, par exemple) ou d'un placement (tel qu'un plan d'épargne sur lequel de l'argent est viré chaque mois).

Pour tous les arguments, les sommes versées (telles que les dépôts sur un compte épargne) sont représentées par des nombres négatifs ; les sommes reçues (telles que les distributions de dividendes), sont représentées par des nombres positifs.


NPV, fonction

Renvoie une valeur de type Double indiquant la valeur nette actuelle d'un investissement, calculée en fonction d'une série de mouvements de trésorerie périodiques (paiements et encaissements) et d'un taux d'escompte.

Syntaxe

NPV(rate, values())

La fonction NPV comprend les arguments nommés suivants :

Élément	Description
rate	Donnée de type Double indiquant le taux d'escompte sur la période, exprimé sous la forme d'un nombre décimal.
values()	Tableau de données de type Double indiquant les valeurs des mouvements de trésorerie. Le tableau doit contenir au moins une valeur négative (un paiement) et une valeur positive (un encaissement).
Remarques

La valeur nette actuelle d'un investissement est la valeur actuelle d'une série de paiements et d'encaissements futurs.

La fonction NPV utilise l'ordre des valeurs dans le tableau pour interpréter l'ordre des paiements et des encaissements. Veillez à saisir vos valeurs de paiements et d'encaissements dans l'ordre correct.

La fonction NPV fait débuter l'investissement une échéance avant la date de valeur du premier mouvement de trésorerie et le fait s'achever avec le dernier mouvement de trésorerie du tableau.

Le calcul de la valeur nette actuelle est basé sur les mouvements de trésorerie à venir. Si votre premier mouvement de trésorerie se produit au début de la première échéance, la première valeur doit alors être ajoutée à la valeur renvoyée par la fonction NPV et ne doit pas être incluse dans les valeurs de mouvements de trésorerie de values().

La fonction NPV est similaire à la fonction PV (valeur actuelle) à la différence que la fonction PV autorise le début des mouvements de trésorerie soit à la fin, soit au début d'une échéance. Contrairement aux valeurs de mouvements de trésorerie variables de la fonction NPV, les mouvements de trésorerie de la fonction PV doivent être constants tout au long de la période d'investissement.


Pmt, fonction

Renvoie une valeur de type Double indiquant le montant d'une annuité basée sur des versements constants et périodiques et sur un taux d'intérêt fixe.

Syntaxe

Pmt(rate, nper, pv[, fv[, type]])

La fonction Pmt comprend les arguments nommés suivants :

Élément	Description
rate	Donnée de type Double indiquant le taux d'intérêt par échéance. Par exemple, si vous obtenez un prêt pour l'achat d'une voiture à un taux d'intérêt annuel (TIA) de 10 pour cent et si vous effectuez des remboursements mensuels, le taux par échéance est de 0,1/12, soit 0,0083.
nper	Donnée de type Integer indiquant le nombre total d'échéances de l'emprunt ou du placement. Par exemple, si vous effectuez des remboursements mensuels dans le cadre d'un prêt d'une durée de quatre ans pour l'achat d'une voiture, votre emprunt comporte un total de 4 * 12 (soit 48) échéances.
pv	Donnée de type Double indiquant la valeur actuelle (ou somme globale) d'une série de paiements devant être effectués dans le futur. Par exemple, lorsque vous empruntez pour acheter une voiture, le montant du prêt correspond pour le prêteur à la valeur actuelle des remboursements mensuels que vous allez effectuer.
fv	Facultatif. Donnée de type Variant indiquant la valeur future ou le solde que vous souhaitez obtenir après avoir effectué le dernier paiement. Par exemple, la valeur future d'un emprunt est de 0 F car il s'agit de sa valeur après le dernier remboursement. Toutefois, si vous souhaitez épargner 250 000 F sur 18 ans pour votre retraite, la valeur future est de 250 000 F. Si l'argument est omis, la valeur par défaut est 0.
type	Facultatif. Donnée de type Variant indiquant la date d'échéance des paiements. Indiquez la valeur 0 si les paiements sont dus à terme échu ou la valeur 1 si les paiements sont dus à terme à échoir. Si l'argument est omis, la valeur par défaut est 0.
Remarques

Cette fonction concerne un contrat donnant lieu au versement périodique d'une somme pendant une certaine durée. Il peut s'agir d'un prêt (pour l'achat d'une maison, par exemple) ou d'un placement (tel qu'un plan d'épargne sur lequel de l'argent est viré chaque mois).

Les arguments rate et nper doivent être calculés à l'aide d'échéances exprimées dans les mêmes unités. Par exemple, si l'argument rate est calculé en mois, il doit en être de même pour l'argument nper.

Pour tous les arguments, les sommes versées (telles que les dépôts sur un compte épargne) sont représentées par des nombres négatifs ; les sommes reçues (telles que les distributions de dividendes), sont représentées par des nombres positifs.


PPmt, fonction

Renvoie une valeur de type Double indiquant le remboursement du capital, pour une échéance donnée, d'une annuité basée sur des versements constants et périodiques et sur un taux d'intérêt fixe.

Syntaxe

PPmt(rate, per, nper, pv[, fv[, type]])

La fonction PPmt comprend les arguments nommés suivants :

Élément	Description
rate	Donnée de type Double indiquant le taux d'intérêt par échéance. Par exemple, si vous obtenez un prêt pour l'achat d'une voiture à un taux d'intérêt annuel (TIA) de 10 pour cent et si vous effectuez des remboursements mensuels, le taux par échéance est de 0,1/12, soit 0,0083.
per	Donnée de type Integer indiquant la périodicité des paiements, comprise entre 1 et nper.
nper	Donnée de type Integer indiquant le nombre total d'échéances de l'emprunt ou du placement. Par exemple, si vous effectuez des remboursements mensuels dans le cadre d'un prêt d'une durée de quatre ans pour l'achat d'une voiture, votre emprunt comporte un total de 4 * 12 (soit 48) échéances.
pv	Donnée de type Double indiquant la valeur actuelle, ou valeur au jour d'aujourd'hui, d'une série de paiements ou d'encaissements devant avoir lieu dans le futur. Par exemple, si vous empruntez pour acheter une voiture, le montant du prêt correspond pour le prêteur à la valeur actuelle des remboursements mensuels que vous allez effectuer.
fv	Facultatif. Donnée de type Variant indiquant la valeur future ou le solde que vous souhaitez obtenir après avoir effectué le dernier paiement. Par exemple, la valeur future d'un emprunt est de 0 F car il s'agit de sa valeur après le dernier remboursement. Toutefois, si vous souhaitez épargner 250 000 F sur 18 ans pour votre retraite, la valeur future est de 250 000 F. Si l'argument est omis, la valeur par défaut est 0.
type	Facultatif. Donnée de type Variant indiquant la date d'échéance des paiements. Indiquez la valeur 0 si les paiements sont dus à terme échu ou la valeur 1 si les paiements sont dus à terme à échoir. Si l'argument est omis, la valeur par défaut est 0.
Remarques

Cette fonction concerne un contrat donnant lieu au versement périodique d'une somme pendant une certaine durée. Il peut s'agir d'un prêt (pour l'achat d'une maison, par exemple) ou d'un placement (tel qu'un plan d'épargne sur lequel de l'argent est viré chaque mois).

Les arguments rate et nper doivent être calculés à l'aide d'échéances exprimées dans les mêmes unités. Par exemple, si l'argument rate est calculé en mois, il doit en être de même pour l'argument nper.

Pour tous les arguments, les sommes versées (telles que les dépôts sur un compte épargne) sont représentées par des nombres négatifs ; les sommes reçues (telles que les distributions de dividendes), sont représentées par des nombres positifs.


PV, fonction

Renvoie une valeur de type Double indiquant le montant actuel d'une annuité basée sur des échéances futures constantes et périodiques, et sur un taux d'intérêt fixe.

Syntaxe

PV(rate, nper, pmt[, fv[, type]])

La fonction PV comprend les arguments nommés suivants :

Élément	Description
rate	Donnée de type Double indiquant le taux d'intérêt par échéance. Par exemple, si vous obtenez un prêt pour l'achat d'une voiture à un taux d'intérêt annuel (TIA) de 10 pour cent et si vous effectuez des remboursements mensuels, le taux par échéance est de 0,1/12, soit 0,0083.
nper	Donnée de type Integer indiquant le nombre total d'échéances de l'emprunt ou du placement. Par exemple, si vous effectuez des remboursements mensuels dans le cadre d'un prêt d'une durée de quatre ans pour l'achat d'une voiture, votre emprunt comporte un total de 4 * 12 (soit 48) échéances.
pmt	Donnée de type Double indiquant le paiement à effectuer à chaque échéance. Les paiements comprennent généralement le capital et les intérêts qui ne sont pas modifiés au cours de l'emprunt ou du placement.
fv	Facultatif. Donnée de type Variant indiquant la valeur future ou le solde que vous souhaitez obtenir après avoir effectué le dernier paiement. Par exemple, la valeur future d'un emprunt est de 0 F car il s'agit de sa valeur après le dernier remboursement. Toutefois, si vous souhaitez épargner 250 000 F sur 18 ans pour votre retraite, la valeur future est de 250 000 F. Si l'argument est omis, la valeur par défaut est 0.
type	Facultatif. Donnée de type Variant indiquant la date d'échéance des paiements. Indiquez la valeur 0 si les paiements sont dus à terme échu ou la valeur 1 si les paiements sont dus à terme à échoir. Si l'argument est omis, la valeur par défaut est 0.
Remarques

Cette fonction concerne un contrat donnant lieu au versement périodique d'une somme pendant une certaine durée. Il peut s'agir d'un prêt (pour l'achat d'une maison, par exemple) ou d'un placement (tel qu'un plan d'épargne sur lequel de l'argent est viré chaque mois).

Les arguments rate et nper doivent être calculés à l'aide d'échéances exprimées dans les mêmes unités. Par exemple, si l'argument rate est calculé en mois, il doit en être de même pour l'argument nper.

Pour tous les arguments, les sommes versées (telles que les dépôts sur un compte épargne) sont représentées par des nombres négatifs ; les sommes reçues (telles que les distributions de dividendes), sont représentées par des nombres positifs.


Rate, fonction

Renvoie une valeur de type Double indiquant le taux d'intérêt par échéance pour une annuité.

Syntaxe

Rate(nper, pmt, pv[, fv[, type[, guess]]])

La fonction Rate comprend les arguments nommés suivants :

Élément	Description
nper	Donnée de type Double indiquant le nombre total d'échéances de l'emprunt ou du placement. Par exemple, si vous effectuez des remboursements mensuels dans le cadre d'un prêt d'une durée de quatre ans pour l'achat d'une voiture, votre emprunt comporte un total de 4 * 12 (soit 48) échéances.
pmt	Donnée de type Double indiquant le paiement à effectuer à chaque échéance. Les paiements comprennent généralement le capital et les intérêts qui ne sont pas modifiés au cours de l'emprunt ou du placement.
pv	Donnée de type Double indiquant la valeur actuelle, ou valeur au jour d'aujourd'hui, d'une série de paiements ou d'encaissements devant avoir lieu dans le futur. Par exemple, si vous empruntez pour acheter une voiture, le montant du prêt correspond pour le prêteur à la valeur actuelle des remboursements mensuels que vous allez effectuer.
fv	Facultatif. Donnée de type Variant indiquant la valeur future ou le solde que vous souhaitez obtenir après avoir effectué le dernier paiement. Par exemple, la valeur future d'un emprunt est de 0 F car il s'agit de sa valeur après le dernier remboursement. Toutefois, si vous souhaitez épargner 250 000 F sur 18 ans pour votre retraite, la valeur future est de 250 000 F. Si l'argument est omis, la valeur par défaut est 0.
type	Facultatif. Donnée de type Variant indiquant la date d'échéance des paiements. Indiquez la valeur 0 si les paiements sont dus à terme échu ou la valeur 1 si les paiements sont dus à terme à échoir. Si l'argument est omis, la valeur par défaut est 0.
guess	Facultatif. Donnée de type Variant indiquant la valeur qui devrait être renvoyée par la fonction Rate. S'il est omis, l'argument guess prend pour valeur 0,1 (10 pour cent).
Remarques

Cette fonction concerne un contrat donnant lieu au versement périodique d'une somme pendant une certaine durée. Il peut s'agir d'un prêt (pour l'achat d'une maison, par exemple) ou d'un placement (tel qu'un plan d'épargne sur lequel de l'argent est viré chaque mois).

Pour tous les arguments, les sommes versées (telles que les dépôts sur un compte épargne) sont représentées par des nombres négatifs ; les sommes reçues (telles que les distributions de dividendes) sont représentées par des nombres positifs.

La fonction Rate effectue le calcul par itération. En commençant par la valeur de l'argument guess, la fonction Rate répète le cycle de calcul jusqu'à ce que le résultat soit précis à 0,00001 % près. La fonction Rate échoue si elle ne peut trouver de résultat au bout de 20 tentatives. Si votre estimation est de 10 % et si la fonction Rate échoue, essayez d'attribuer une valeur différente à l'argument guess.


SLN, fonction

Renvoie une valeur de type Double indiquant l'amortissement linéaire d'un bien sur une période donnée.

Syntaxe

SLN(cost, salvage, life)

La fonction SLN comprend les arguments nommés suivants :

Élément	Description
cost	Donnée de type Double indiquant le coût initial du bien.
salvage	Donnée de type Double indiquant la valeur du bien à la fin de son cycle de vie.
life	Donnée de type Double indiquant la durée du cycle de vie du bien.
Remarques

La période d'amortissement doit être exprimée dans la même unité de temps que l'argument life. Tous les arguments doivent avoir pour valeur des nombres positifs.


SYD, fonction

Renvoie une valeur de type Double indiquant l'amortissement global d'un bien sur une période donnée.

Syntaxe

SYD(cost, salvage, life, period)

La fonction SYD comprend les arguments nommés suivants :

Élément	Description
cost	Donnée de type Double indiquant le coût initial du bien.
salvage	Donnée de type Double indiquant la valeur du bien à la fin de son cycle de vie.
life	Donnée de type Double indiquant la durée du cycle de vie du bien.
period	Donnée de type Double indiquant la période sur laquelle l'amortissement du bien est calculé.
Remarques

Les arguments life et period doivent être exprimés dans les mêmes unités. Par exemple, si l'argument life est exprimé en mois, il doit en être de même pour l'argument period. Tous les arguments doivent avoir pour valeur des nombres positifs.


IsArray, fonction, exemple

Cet exemple utilise la fonction IsArray pour contrôler si une variable est un tableau ou non.

Dim MyArray(1 To 5) As Integer, YourArray, MyCheck	' Déclaration des variables.

YourArray = Array(1, 2, 3)	' Utilisation de la fonction Array.

MyCheck = IsArray(MyArray)	' Renvoie True.

MyCheck = IsArray(YourArray)	' Renvoie True.


IsDate, fonction, exemple

Cet exemple utilise la fonction IsDate pour déterminer si une expression peut être convertie en date.

Dim MyDate, YourDate, NoDate, MyCheck

MyDate = "12 Février 1969": YourDate = #12/2/69#: NoDate = "Bonjour"

MyCheck = IsDate(MyDate)	' Renvoie True.

MyCheck = IsDate(YourDate)	' Renvoie True.

MyCheck = IsDate(NoDate)	' Renvoie False.


IsEmpty, fonction, exemple

Cet exemple utilise la fonction IsEmpty pour déterminer si une variable a été initialisée.

Dim MyVar, MyCheck

MyCheck = IsEmpty(MyVar)	' Renvoie True.

MyVar = Null	' Affectation de Null.

MyCheck = IsEmpty(MyVar)	' Renvoie False.

MyVar = Empty	' Affectation de Empty.

MyCheck = IsEmpty(MyVar)	' Renvoie True.


IsError, fonction, exemple

Cet exemple utilise la fonction IsError pour vérifier si une expression numérique est un numéro d'erreur. La fonction CVErr est utilisée pour renvoyer une valeur de type Error Variant à partir d'une fonction définie par l'utilisateur. Dans cet exemple, UserFunction est une procédure de fonction définie par l'utilisateur qui renvoie un numéro d'erreur, par exemple une valeur renvoyée associée à l'instruction UserFunction = CVErr(32767), dans laquelle 32767 est un nombre défini par l'utilisateur.

Dim ReturnVal, MyCheck

ReturnVal = UserFunction()

MyCheck = IsError(ReturnVal)	' Renvoie True.


IsMissing, fonction, exemple

Cet exemple utilise la fonction IsMissing pour vérifier si un argument facultatif a été passé à une procédure définie par l'utilisateur. Notez que les arguments de type Optional peuvent désormais avoir des valeurs par défaut et être de types autres que Variant.

Dim ReturnValue

' Les instructions suivantes appellent la procédure de

' fonction définie par l'utilisateur.

ReturnValue = ReturnTwice()	' Renvoie Null.

ReturnValue = ReturnTwice(2)	' Renvoie 4.

' Définition de la procédure de fonction.

Function ReturnTwice(Optional A)

If IsMissing(A) Then

' En l'absence d'argument, renvoie une valeur Null.

ReturnTwice = Null

Else

' Si l'argument est présent, renvoie deux fois la valeur trouvée.

ReturnTwice = A * 2

End If

End Function


IsNull, fonction, exemple

Cet exemple utilise la fonction IsNull pour déterminer si une variable contient une valeur Null.

Dim MyVar, MyCheck

MyCheck = IsNull(MyVar)	' Renvoie False.

MyVar = ""

MyCheck = IsNull(MyVar)	' Renvoie False.

MyVar = Null

MyCheck = IsNull(MyVar)	' Renvoie True.


IsNumeric, fonction, exemple

Cet exemple utilise la fonction IsNumeric pour déterminer si une variable peut prendre la valeur d'un nombre.

Dim MyVar, MyCheck

MyVar = "53"	' Affectation d'une valeur numérique.

MyCheck = IsNumeric(MyVar)	' Renvoie True.

MyVar = "459.95"	' Affectation d'une valeur numérique.

MyCheck = IsNumeric(MyVar)	' Renvoie True.

MyVar = "45 Aide"	' Affectation d'une chaîne de caractères.

MyCheck = IsNumeric(MyVar)	' Renvoie False.


IsObject, fonction, exemple

Cet exemple utilise la fonction IsObject pour déterminer si un identificateur représente une variable d'objet. MyObject et YourObject sont des variables d'objets du même type. Il s'agit de noms génériques employés ici à seul titre d'exemple.

Dim MyInt As Integer, YourObject, MyCheck Déclaration des variables.

Dim MyObject As Object

Set YourObject = MyObject	' Affectation d'une référence d'objet.

MyCheck = IsObject(YourObject)	' Renvoie True.

MyCheck = IsObject(MyInt)	' Renvoie False.


TypeName, fonction, exemple

Cet exemple utilise la fonction TypeName pour renvoyer des informations relatives à une variable.

' Déclaration des variables.

Dim NullVar, MyType, StrVar As String, IntVar As Integer, CurVar As Currency

Dim ArrayVar (1 To 5) As Integer

NullVar = Null	' Affectation d'une valeur Null.

MyType = TypeName(StrVar)	' Renvoie "String".

MyType = TypeName(IntVar)	' Renvoie "Integer".

MyType = TypeName(CurVar)	' Renvoie "Currency".

MyType = TypeName(NullVar)	' Renvoie "Null".

MyType = TypeName(ArrayVar)	' Renvoie "Integer()".


VarType, fonction, exemple

Cet exemple utilise la fonction VarType pour déterminer le sous-type d'une variable.

Dim IntVar, StrVar, DateVar, MyCheck

' Initialisation des variables.

IntVar = 459: StrVar = "Bonjour": DateVar = #2/12/69#

MyCheck = VarType(IntVar)	' Renvoie 2.

MyCheck = VarType(DateVar)	' Renvoie 7.

MyCheck = VarType(StrVar)	' Renvoie 8.


IsArray, fonction

Renvoie une valeur de type Boolean qui indique si une variable est un tableau.

Syntaxe

IsArray(varname)

L'argument varname est un identificateur spécifiant une variable.

Remarques

La fonction IsArray renvoie la valeur True si la variable est un tableau et la valeur False dans le cas contraire. La fonction IsArray est particulièrement utile dans le cas de valeurs de type Variant contenant des tableaux.


IsDate, fonction

Renvoie une valeur de type Boolean qui indique si une expression peut être convertie en date.

Syntaxe

IsDate(expression)

L'argument expression est une valeur de type Variant contenant une expression de date ou une expression de chaîne qui peut être interprétée comme une date ou une heure.

Remarques

La fonction IsDate renvoie la valeur True si l'expression est une date ou peut être reconnue en tant que date ; sinon elle renvoie la valeur False. Dans Microsoft Windows, la plage des dates valides s'étend du 1er janvier 100 au 31 décembre 9999. Les plages varient en fonction des systèmes d'exploitation.


IsEmpty, fonction

Renvoie une valeur de type Boolean indiquant si une variable a été initialisée.

Syntaxe

IsEmpty(expression)

L'argument expression est une valeur de type Variant contenant une expression numérique ou une expression de chaîne. Toutefois, comme la fonction IsEmpty est utilisée pour déterminer si des variables sont initialisées, l'argument expression est le plus souvent constitué d'un seul nom de variable.

Remarques

La fonction IsEmpty renvoie la valeur True si la variable n'est pas initialisée ou contient une valeur de type Empty ; dans le cas contraire, elle renvoie la valeur False. La valeur False est toujours renvoyée si l'argument expression contient plusieurs variables. La fonction IsEmpty ne renvoie des informations pertinentes que pour les variables de type Variant.


IsError, fonction

Renvoie une valeur de type Boolean qui indique si une expression est une valeur d'erreur.

Syntaxe

IsError(expression)

L'argument expression peut être toute expression valide.

Remarques

Les valeurs d'erreur sont le résultat de la conversion de nombres réels en valeurs d'erreur par la fonction CVErr. La fonction IsError est utilisée pour déterminer si une expression numérique représente une erreur. La fonction IsError renvoie la valeur True si l'argument expression désigne une erreur ; sinon, elle renvoie la valeur False.


IsMissing, fonction

Renvoie une valeur de type Boolean qui indique si un argument facultatif de type Variant a été passé dans une procédure.

Syntaxe

IsMissing(argname)

L'argument argname contient le nom d'un argument facultatif de type Variant dans une procédure.

Remarques

Utilisez la fonction IsMissing pour déterminer si des arguments facultatifs ont été fournis lors de l'appel d'une procédure. La fonction IsMissing renvoie la valeur True si aucune valeur correspondant à l'argument spécifié n'a été passée ; sinon, elle renvoie la valeur False. Si la fonction IsMissing renvoie la valeur True pour un argument, l'utilisation de l'argument manquant ailleurs dans le code peut provoquer une erreur définie par l'utilisateur. Si la fonction IsMissing est utilisée sur un argument ParamArray, elle renvoie toujours la valeur False. Pour détecter un argument ParamArray vide, effectuez un test afin de déterminer si la limite maximale du tableau est inférieure à sa limite minimale.

Note   La fonction IsMissing ne fonctionne pas sur les types de données simples (tels que les types Integer ou Double) car, contrairement au type Variant, ces types ne fournissent pas d'indicateur de bit "manquant". C'est pourquoi la syntaxe des arguments facultatifs caractérisés par un type vous permet d'indiquer une valeur par défaut. Si l'argument est omis lors de l'appel de la procédure, il aura la valeur par défaut, comme dans l'exemple ci-dessous :

Sub MySub(Optional MyVar As String = "valeur spéciale")

    If MyVar = "valeur spéciale" Then

    ' MyVar était omis.

    Else

    ...

End Sub

Vous pouvez le plus souvent omettre complètement le test If MyVar en attribuant à la valeur par défaut la valeur souhaitée pour MyVar dans le cas où l'utilisateur omettrait l'argument lors de l'appel de la fonction. Cette méthode est plus rapide et plus efficace.


IsNull, fonction

Renvoie une valeur de type Boolean qui indique si une expression ne contient aucune donnée valide (Null).

Syntaxe

IsNull(expression)

L'argument expression est une valeur de type Variant contenant une expression numérique ou une expression de chaîne.

Remarques

La fonction IsNull renvoie la valeur True si l'argument expression est de type Null ; sinon, la fonction IsNull renvoie la valeur False. Si l'argument expression contient plusieurs variables, et si l'une d'elles est de type Null, la valeur True est renvoyée pour l'expression entière.

La valeur Null indique que la variable de type Variant ne contient aucune donnée valide. Null est donc différent de Empty, qui indique qu'une variable n'a pas encore été initialisée. De même, Null ne correspond pas à une chaîne de longueur nulle (""), bien que cette dernière soit parfois appelée chaîne nulle.

Important   Utilisez la fonction IsNull pour déterminer si une expression contient une valeur de type Null. Certaines expressions dont vous pourriez penser qu'elles sont vraies (True) dans certaines circonstances, par exemple If Var = Null et If Var <> Null, ont pourtant toujours la valeur False. En effet, toute expression contenant une valeur de type Null est elle-même de type Null et a par conséquent la valeur False.


IsNumeric, fonction

Renvoie une valeur de type Boolean qui indique si une expression peut être interprétée comme un nombre.

Syntaxe

IsNumeric(expression)

L'argument expression est une valeur de type Variant contenant une expression numérique ou une expression de chaîne.

Remarques

La fonction IsNumeric renvoie la valeur True si l'ensemble de l'expression est reconnue comme étant un nombre ; sinon, elle renvoie la valeur False.

La fonction IsNumeric renvoie la valeur False si l'argument expression est une expression de date.


IsObject, fonction

Renvoie une valeur de type Boolean qui indique si un identificateur représente une variable objet.

Syntaxe

IsObject(identificateur)

L'argument identificateur est un nom de variable.

Remarques

La fonction IsObject ne sert qu'à déterminer si la valeur de type Variant est de VarType vbObject (sous-type). Ce cas ne se présente que si la valeur de type Variant fait référence (ou a fait référence à un moment donné) à un objet, ou si elle contient une valeur de type Nothing.

La fonction IsObject renvoie la valeur True si l'argument identificateur est une variable de type Object ou d'un type de classe valide, ou si l'argument identificateur est une valeur de type Variant et de VarType vbObject (sous-type), ou un objet défini par l'utilisateur ; sinon, elle renvoie la valeur False. La fonction IsObject renvoie la valeur True même si la variable est de type Nothing.

Utilisez la récupération d'erreur pour vérifier qu'une référence d'objet est valide.


TypeName, fonction

Renvoie une valeur de type String qui fournit des informations sur une variable.

Syntaxe

TypeName(varname)

L'argument varname est une valeur de type Variant pouvant contenir toute variable à l'exception d'une variable de type défini par l'utilisateur.

Remarques

La fonction TypeName peut renvoyer l'une des chaînes suivantes :

Chaîne renvoyée	Variable
type objet	Objet dont le type est type objet
Byte	Octet
Integer	Entier
Long	Entier long
Single	Nombre à virgule flottante en simple précision
Double	Nombre à virgule flottante en double précision
Currency	Valeur monétaire
Decimal	Valeur décimale
Date	Valeur de date
String	Chaîne
Boolean	Valeur booléenne
Error	Valeur d'erreur
Empty	Non initialisée
Null	Aucune donnée valide
Object	Objet
Unknown	Objet dont le type est inconnu
Nothing	Variable objet qui ne fait pas référence à un objet
Si l'argument varname est un tableau, la chaîne renvoyée peut être n'importe laquelle des chaînes possibles (ou Variant) suivie de parenthèses vides. Par exemple, si l'argument varname est un tableau de nombres entiers, la fonction TypeName renvoie la valeur "Integer()".


VarType, fonction

Renvoie une valeur de type Integer qui indique le sous-type d'une variable.

Syntaxe

VarType(varname)

L'argument varname est une valeur de type Variant pouvant contenir toute variable à l'exception d'une variable de type défini par l'utilisateur.

Valeurs renvoyées

Constante	Valeur	Description
vbEmpty	0	Empty (non initialisée)
vbNull	1	Null (aucune donnée valide)
vbInteger	2	Entier
vbLong	3	Entier long
vbSingle	4	Nombre à virgule flottante en simple précision
vbDouble	5	Nombre à virgule flottante en double précision
vbCurrency	6	Valeur monétaire
vbDate	7	Valeur de date
vbString	8	Chaîne
vbObject	9	Objet
vbError	10	Valeur d'erreur
vbBoolean	11	Valeur booléenne
vbVariant	12	Variant (utilisée seulement avec des tableaux de variants)
vbDataObject	13	Objet d'accès aux données
vbDecimal	14	Valeur décimale
vbByte	17	Octet
vbUserDefinedType	36	Variant contenant des types définis par l'utilisateur
vbArray	8192	Tableau
Note   Les constantes mentionnées dans ce tableau sont spécifiées par Visual Basic pour Applications. Vous pouvez par conséquent utiliser leur nom n'importe où dans votre code à la place des valeurs réelles correspondantes.

Remarques

La fonction VarType ne renvoie jamais la valeur pour la constante vbArray elle-même. Elle est toujours ajoutée à une autre valeur pour indiquer un tableau d'un type particulier. La constante vbVariant n'est renvoyée que lorsqu'elle est associée à vbArray pour indiquer que l'argument de la fonction VarType est un tableau de type Variant. Par exemple, la valeur renvoyée pour un tableau de nombres entiers est le résultat de vbInteger + vbArray, ou 8194. Si un objet possède une propriété par défaut, VarType (object) renvoie le type de celle-ci.


Empty

Le mot clé Empty est utilisé comme un sous-type Variant. Il indique une valeur de variable non initialisée.


False

Le mot clé False possède une valeur égale à 0.


Me

Le mot clé Me se comporte comme une variable déclarée de façon implicite. Il est automatiquement disponible pour toutes les procédures d'un module de classe. Lorsqu'une classe peut comporter plusieurs instances, le mot clé Me offre la possibilité de faire référence à l'instance de la classe dans laquelle le code est exécuté. Il s'avère particulièrement utile pour passer les informations concernant l'instance d'une classe en cours d'exécution à une procédure d'un autre module. Par exemple, supposez que la procédure suivante se présente dans un module :

Sub ChangeFormColor(FormName As Form)

FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)

End Sub

Vous pouvez appeler cette procédure et passer l'instance en cours de la classe Form comme un argument à l'aide de l'instruction suivante :

ChangeFormColor Me


Nothing

Le mot clé Nothing permet de distinguer une variable objet d'un objet réel. Utilisez l'instruction Set pour attribuer le mot clé Nothing à une variable objet. Par exemple :

Set MyObject = Nothing

Plusieurs variables objets peuvent faire référence à un même objet réel. Lorsque le mot clé Nothing est attribué à une variable objet, cette dernière ne fait plus référence à l'objet réel. Lorsque plusieurs variables objets font référence au même objet réel, les ressources mémoire et système associées à l'objet auquel les variables font référence sont libérées uniquement une fois que le mot clé Nothing leur a été affecté. Cette affectation peut avoir lieu de manière explicite à l'aide de l'instruction Set, ou implicite, une fois que la dernière variable objet associée au mot clé Nothing est hors de portée.


Null

Le mot clé Null est utilisé comme un sous-type Variant. Il indique qu'une variable ne contient aucune donnée valide.


True

Le mot clé True possède une valeur égale à -1.


MacScript, fonction, exemple

Cet exemple utilise la fonction MacScript pour ouvrir la boîte de dialogue Choisir fichier (boîte de dialogue standard aux fichiers Macintosh). Le chemin complet du fichier choisi par l'utilisateur est renvoyé. Le cas échéant, la spécification de fichier est précédée du type de fichier.

ThePath$ = Macscript("ChooseFile")


MacID, fonction

Utilisée sur Macintosh pour convertir une constante à quatre caractères en une valeur pouvant être exploitée par les fonctions Dir, Kill, Shell et AppActivate.

Syntaxe

MacID(constant)

L'argument constant se compose de quatre caractères et sert à spécifier un type de ressource, un type de fichier, une signature d'application ou un événement Apple. Exemples : TEXT, OBIN, "XLS5" pour les fichiers Excel ("XLS8" pour Excel 97), "W6BN" pour les fichiers Microsoft Word ("W8BN" pour Word 97), etc.

Remarques

MacID s'emploie avec Dir et Kill pour spécifier un type de fichier Macintosh. Dans la mesure où le Macintosh ne gère pas les caractères génériques * et ?, vous pouvez utiliser une constante à quatre caractères pour identifier des groupes de fichiers. Par exemple, l'instruction suivante renvoie les noms des fichiers de type TEXT contenus dans le dossier courant :

Dir("SomePath", MacID("TEXT"))

MacID s'emploie avec Shell et AppActivate pour spécifier une application en utilisant la signature unique de l'application.


MacScript, fonction

Exécute un script AppleScript et retourne une valeur renvoyée par le script, le cas échéant.

Syntaxe

MacScript script

L'argument script est une expression de chaîne. L'expression de chaîne peut soit être une série de commandes AppleScript, soit spécifier le nom d'un script AppleScript ou un fichier script.

Remarques

Vous pouvez créer des scripts à plusieurs lignes en encadrant les caractères de retour chariot (Chr(13)) par des parenthèses.


Abs, fonction, exemple

Cet exemple utilise la fonction Abs pour calculer la valeur absolue d'un nombre.

Dim MyNumber

MyNumber = Abs(50.3)	' Renvoie 50.3.

MyNumber = Abs(-50.3)	' Renvoie 50.3.


Atn, fonction, exemple

Cet exemple utilise la fonction Atn pour calculer la valeur de pi.

Dim pi

pi = 4 * Atn(1)	' Calcule la valeur de pi.


Cos, fonction, exemple

Cet exemple utilise la fonction Cos pour renvoyer le cosinus d'un angle.

Dim MyAngle, MySecant

MyAngle = 1.3	' Définit un angle en radians.

MySecant = 1 / Cos(MyAngle)	' Calcule la sécante.


Exp, fonction, exemple

Cet exemple utilise la fonction Exp pour renvoyer e élevé à une puissance déterminée.

Dim MyAngle, MyHSin

' Définit un angle en radians.

MyAngle = 1.3

' Calcule le sinus hyperbolique.

MyHSin = (Exp(MyAngle) - Exp(-1 * MyAngle)) / 2


Int, fonction, Fix, fonction, exemple

Cet exemple montre comment les fonctions Int et Fix renvoient les parties entières de nombres. Dans le cas d'un argument spécifiant un nombre négatif, la fonction Int renvoie le premier entier négatif inférieur ou égal au nombre, tandis que la fonction Fix renvoie le premier entier négatif supérieur ou égal au nombre.

Dim MyNumber

MyNumber = Int(99.8)	' Renvoie 99.

MyNumber = Fix(99.2)	' Renvoie 99.

MyNumber = Int(-99.8)	' Renvoie -100.

MyNumber = Fix(-99.8)	' Renvoie -99.

MyNumber = Int(-99.2)	' Renvoie -100.

MyNumber = Fix(-99.2)	' Renvoie -99.


Log, fonction, exemple

Cet exemple utilise la fonction Log pour renvoyer le logarithme népérien d'un nombre.

Dim MyAngle, MyLog

' Définit un angle en radians.

MyAngle = 1.3

' Calcule le sinus hyperbolique inverse.

MyLog = Log(MyAngle + Sqr(MyAngle * MyAngle + 1))


Randomize, instruction, exemple

Cet exemple utilise l'instruction Randomize pour initialiser le générateur de nombres aléatoires. Si l'argument de nombre a été omis, l'instruction Randomize utilise la valeur renvoyée par la fonction Timer comme nouvelle valeur initiale.

Dim MyValue

Randomize	' Initialise le générateur de nombres aléatoires.

' Renvoie une valeur aléatoire comprise entre 1 et 6.

MyValue = Int((6 * Rnd) + 1)


Rnd, fonction, exemple

Cet exemple utilise la fonction Rnd pour générer une valeur entière aléatoire comprise entre 1 et 6.

Dim MyValue

' Renvoie une valeur aléatoire comprise entre 1 et 6.

MyValue = Int((6 * Rnd) + 1)


Sgn, fonction, exemple

Cet exemple utilise la fonction Sgn pour déterminer le signe d'un nombre.

Dim MyVar1, MyVar2, MyVar3, MySign

MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0

MySign = Sgn(MyVar1)	' Renvoie 1.

MySign = Sgn(MyVar2)	' Renvoie -1.

MySign = Sgn(MyVar3)	' Renvoie 0.


Sin, fonction, exemple

Cet exemple utilise la fonction Sin pour renvoyer le sinus d'un angle.

Dim MyAngle, MyCosecant

MyAngle = 1.3	' Définit un angle en radians.

MyCosecant = 1 / Sin(MyAngle)	' Calcule la cosécante.


Sqr, fonction, exemple

Cet exemple utilise la fonction Sqr pour calculer la racine carrée d'un nombre.

Dim MySqr

MySqr = Sqr(4)	' Renvoie 2.

MySqr = Sqr(23)	' Renvoie 4.79583152331272.

MySqr = Sqr(0)	' Renvoie 0.

MySqr = Sqr(-4)	' Génère une erreur d'exécution.


Tan, fonction, exemple

Cet exemple utilise la fonction Tan pour renvoyer la tangente d'un angle.

Dim MyAngle, MyCotangent

MyAngle = 1.3	' Définit un angle en radians.

MyCotangent = 1 / Tan(MyAngle)	' Calcule la cotangente.


Fonctions mathématiques

Abs, fonction

Atn, fonction

Cos, fonction

Exp, fonction

Fix, fonction

Int, fonction

Log, fonction

Rnd, fonction

Sgn, fonction

Sin, fonction

Sqr, fonction

Tan, fonction

Fonctions mathématiques dérivées


Abs, fonction

Renvoie une valeur de même type que celle transmise, indiquant la valeur absolue d'un nombre.

Syntaxe

Abs(number)

L'argument number peut contenir toute expression numérique valide. Si l'argument number contient une valeur de type Null, Null est renvoyé ; s'il s'agit d'une variable non initialisée, zéro est renvoyé.

Remarques

La valeur absolue d'un nombre est sa valeur sans le signe. Par exemple, ABS(-1) et ABS(1) renvoient tous deux 1.


Atn, fonction

Renvoie une valeur de type Double indiquant l'arctangente d'un nombre.

Syntaxe

Atn(number)

L'argument number peut contenir une valeur de type Double ou toute autre expression numérique valide.

Remarques

La fonction Atn prend le rapport entre deux côtés d'un triangle rectangle (number) et renvoie l'angle correspondant en radians. Il s'agit du rapport entre la longueur du côté opposé à l'angle et la longueur du côté adjacent.

Le résultat est compris entre -pi/2 et pi/2 radians.

Pour convertir des degrés en radians, multipliez-les par pi/180. Inversement, pour convertir des radians en degrés, multipliez-les par 180/pi.

Note   Atn est la fonction trigonométrique réciproque de la fonction Tan, qui accepte comme argument un angle et renvoie le rapport de deux côtés d'un triangle rectangle. Ne confondez pas Atn et la cotangente, qui est simplement l'inverse d'une tangente (1/tangente).


Cos, fonction

Renvoie une valeur de type Double indiquant le cosinus d'un angle.

Syntaxe

Cos(number)

L'argument number peut contenir une valeur de type Double ou toute expression numérique valide exprimant la valeur d'un angle en radians.

Remarques

La fonction Cos prend un angle et renvoie le rapport entre deux côtés d'un triangle rectangle. Il s'agit du rapport entre la longueur du côté adjacent à l'angle et la longueur de l'hypoténuse.

Le résultat est compris entre -1 et 1.

Pour convertir des degrés en radians, multipliez-les par pi/180. Inversement, pour convertir des radians en degrés, multipliez-les par 180/pi.


Exp, fonction

Renvoie une valeur de type Double indiquant la valeur de e (base des logarithmes népériens) élevé à une puissance.

Syntaxe

Exp(number)

L'argument number peut contenir une valeur de type Double ou toute expression numérique valide.

Remarques

Si la valeur de l'argument number est supérieure à 709,782712893, une erreur se produit. La constante e est environ égale à 2,718282.

Note   La fonction Exp, qui est la fonction réciproque de la fonction Log, est parfois désignée par l'expression "antilogarithme".


Int, Fix, fonctions

Renvoie la partie entière d'un nombre.

Syntaxe

Int(number)

Fix(number)

L'argument number peut contenir une valeur de type Double ou toute autre expression numérique valide. Si l'argument number contient une valeur de type Null, Null est renvoyé.

Remarques

Les fonctions Int et Fix suppriment toutes deux la partie fractionnelle de l'argument number et renvoient l'entier obtenu.

Différence entre les fonctions Int et Fix : si number est négatif, Int renvoie le premier entier négatif inférieur ou égal à number, alors que Fix renvoie le premier entier négatif supérieur ou égal à number. Par exemple, Int convertit -8,4 en -9 et Fix convertit -8,4 en -8.

Fix(number) équivaut à :

Sgn(number) * Int(Abs(number))


Log, fonction

Renvoie une valeur de type Double indiquant le logarithme népérien d'un nombre.

Syntaxe

Log(number)

L'argument number peut contenir une valeur de type Double ou toute autre expression numérique valide supérieure à zéro.

Remarques

Le logarithme népérien est le logarithme de base e. La constante e est environ égale à 2,718282.

Pour calculer le logarithme de base n d'un nombre x, divisez le logarithme népérien de x par celui de n selon la formule ci-dessous :

Logn(x) = Log(x) / Log(n)

L'exemple suivant présente la fonction personnalisée Function qui calcule le logarithme de base 10 :

Static Function Log10(X)

Log10 = Log(X) / Log(10#)

End Function


Randomize, instruction

Initialise le générateur de nombres aléatoires.

Syntaxe

Randomize [number]

L'argument number est facultatif, il peut contenir une valeur de type Variant ou toute expression numérique valide.

Remarques

Randomize utilise l'argument number pour initialiser le générateur de nombres aléatoires de la fonction Rnd en lui donnant une nouvelle valeur initiale. Si l'argument number est omis, la valeur renvoyée par l'horloge système sert de valeur initiale.

En l'absence de Randomize, la fonction Rnd (sans argument) adopte le même nombre comme valeur initiale la première fois qu'elle est appelée. Lors des appels ultérieurs, elle réutilise le dernier nombre généré comme valeur initiale.

Note   Pour obtenir plusieurs fois les mêmes séries de nombres aléatoires, appelez Rnd avec un argument négatif juste avant d'utiliser Randomize avec un argument numérique. L'utilisation de Randomize en répétant la valeur précédente pour l'argument number ne permet pas de reproduire une série de nombres.


Rnd, fonction

Renvoie une valeur de type Single contenant un nombre aléatoire.

Syntaxe

Rnd[(number)]

L'argument number est facultatif. Il peut contenir une valeur de type Single ou toute expression numérique valide.

Valeurs renvoyées

Argument number	Nombre généré par la fonction Rnd
Inférieur à zéro	Même nombre à chaque fois, en utilisant l'argument number comme valeur initiale.
Supérieur à zéro	Nombre aléatoire suivant dans la série.
Égal à zéro	Dernier nombre aléatoire généré.
Omis	Nombre aléatoire suivant dans la série.
Remarques

La fonction Rnd renvoie une valeur inférieure à 1 mais supérieure ou égale à zéro.

La valeur de l'argument number définit le mode de génération adopté par Rnd :

Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.

Avant d'appeler Rnd, utilisez l'instruction Randomize sans argument pour initialiser le générateur de nombres aléatoires à partir d'une valeur initiale tirée de l'horloge système.

Pour générer des entiers aléatoires dans une plage donnée, utilisez la formule ci-dessous :

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

Dans cette formule, upperbound désigne la limite supérieure de la plage et lowerbound la limite inférieure.

Note   Pour obtenir plusieurs fois les mêmes séries de nombres aléatoires, appelez Rnd avec un argument négatif juste avant d'utiliser Randomize avec un argument numérique. L'utilisation de Randomize en répétant pour l'argument number la valeur précédente ne permet pas de reproduire une série de nombres.


Sgn, fonction

Renvoie une valeur de type Variant (Integer) indiquant le signe d'un nombre.

Syntaxe

Sgn(number)

L'argument number peut contenir toute expression numérique valide.

Valeurs renvoyées

Argument number	Valeur renvoyée par la fonction Sgn
Supérieur à zéro	1
Égal à zéro	0
Inférieur à zéro	-1
Remarques

Le signe de l'argument number détermine la valeur renvoyée par la fonction Sgn.


Sin, fonction

Renvoie une valeur de type Double indiquant le sinus d'un angle.

Syntaxe

Sin(number)

L'argument number peut contenir une valeur de type Double ou toute expression numérique valide exprimant un angle en radians.

Remarques

La fonction Sin prend un angle et renvoie le rapport entre deux côtés d'un triangle rectangle. Il s'agit du rapport entre la longueur du côté opposé à l'angle et la longueur de l'hypoténuse.

Le résultat est compris entre -1 et 1.

Pour convertir des degrés en radians, multipliez-les par pi/180. Inversement, pour convertir des radians en degrés, multipliez-les par 180/pi.


Sqr, fonction

Renvoie une valeur de type Double indiquant la racine carrée d'un nombre.

Syntaxe

Sqr(number)

L'argument number peut contenir une valeur de type Double ou toute expression numérique valide supérieure ou égale à zéro.


Tan, fonction

Renvoie une valeur de type Double indiquant la tangente d'un angle.

Syntaxe

Tan(number)

L'argument number peut contenir une valeur de type Double ou toute expression numérique valide exprimant un angle en radians.

Remarques

Tan prend un angle et renvoie le rapport de deux côtés d'un triangle rectangle. Il s'agit du rapport entre la longueur du côté opposé à l'angle et la longueur du côté adjacent.

Pour convertir des degrés en radians, multipliez-les par pi/180. Inversement, pour convertir des radians en degrés, multipliez-les par 180/pi.


Fonctions mathématiques dérivées

Voici une liste de fonctions mathématiques non intrinsèques pouvant être dérivées des fonctions intrinsèques :

Fonction	Équivalents
Sécante	Sec(X) = 1 / Cos(X)
Cosécante	Cosec(X) = 1 / Sin(X)
Cotangente	Cotan(X) = 1 / Tan(X)
Arcsinus	Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Arccosinus	Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Arcsécante	Arcsec(X) = Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1))
Arccosécante	Arccosec(X) = Atn(X / Sqr(X * X – 1)) + (Sgn(X) – 1) * (2 * Atn(1))
Arccotangente	Arccotan(X) = Atn(X) + 2 * Atn(1)
Sinus hyperbolique	HSin(X) = (Exp(X) – Exp(-X)) / 2
Cosinus hyperbolique	HCos(X) = (Exp(X) + Exp(-X)) / 2
Tangente hyperbolique	HTan(X) = (Exp(X) – Exp(-X)) / (Exp(X) + Exp(-X))
Sécante hyperbolique	HSec(X) = 2 / (Exp(X) + Exp(-X))
Cosécante hyperbolique	HCosec(X) = 2 / (Exp(X) – Exp(-X))
Cotangente hyperbolique	HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) – Exp(-X))
Arcsinus hyperbolique	HArcsin(X) = Log(X + Sqr(X * X + 1))
Arccosinus hyperbolique	HArccos(X) = Log(X + Sqr(X * X – 1))
Arctangente hyperbolique	HArctan(X) = Log((1 + X) / (1 – X)) / 2
Arcsécante hyperbolique	HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
Arccosécante hyperbolique	HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
Arccotangente hyperbolique	HArccotan(X) = Log((X + 1) / (X – 1)) / 2
Logarithme de base N	LogN(X) = Log(X) / Log(N)


Add, méthode, exemple

Cet exemple utilise la méthode Add pour ajouter des objets Inst (instances d'une classe nommée Class1 contenant une variable Public InstanceName) à une collection nommée MyClasses. Pour voir comment fonctionne cette méthode, insérez un module de classe et déclarez une variable Public nommée InstanceName, au niveau du module de Class1 (tapez : Public InstanceName), qui contiendra les noms de chaque instance. Conservez Class1 comme nom par défaut. Copiez et collez le code suivant dans la procédure d'événement Form_Load du module de la feuille.

Dim MyClasses As New Collection	' Crée un objet Collection.

Dim Num As Integer	' Compteur destiné à individualiser les clés.

Dim Msg

Dim TheName	' Variable contenant les noms que l'utilisateur spécifie.

Do

Dim Inst As New Class1	' Crée une nouvelle instance de Class1.

Num = Num + 1	' Incrémente Num d'une unité, puis insère un nom.

Msg = "Veuillez affecter un nom à cet objet." & Chr (13) _

& "Appuyez sur Annuler pour afficher les noms dans la _

& "collection."

TheName = InputBox(Msg, "Nommez les éléments de la collection ")

' Affecte le nom à l'instance de l'objet.

Inst.InstanceName = TheName

' Si l'utilisateur a tapé un nom, ajoute celui-ci à la collection.

If Inst.InstanceName <> "" Then

' Ajoute l'objet nommé à la collection.

MyClasses.Add item := Inst, key := CStr(Num)

End If

' Supprime la référence en cours en prévision de la prochaine.

Set Inst = Nothing

Loop Until TheName = ""

For Each x In MyClasses

MsgBox x.instancename, , "Nom de l'instance"

Next


Clear, méthode, exemple

Cet exemple utilise la méthode Clear de l'objet Err pour réinitialiser les propriétés numériques de l'objet Err et ses propriétés de chaîne sur des chaînes de longueur nulle. Si la méthode Clear était absente du code suivant, la boîte de dialogue de message d'erreur s'afficherait à chaque itération de la boucle (après une erreur), qu'un autre calcul ait généré une erreur ou non. Vous pouvez exécuter le code pas à pas pour vous rendre compte du résultat.

' Déclare un tableau dont les éléments peuvent facilement déborder.

Dim Result(10) As Integer

Dim indx

On Error Resume Next	' Retarde la récupération d'erreur.

Do Until indx = 10

' Génère une erreur occasionnelle ou enregistre

' le résultat en l'absence d'erreur.

Result(indx) = Rnd * indx * 20000

If Err.Number <> 0 Then

MsgBox Err, , "Erreur générée: ", Err.HelpFile, Err.HelpContext

Err.Clear	' Réinitialise les propriétés de l'objet Err.

End If

indx = indx + 1

Loop


Item, méthode, exemple

Cet exemple utilise la méthode Item pour récupérer une référence d'objet dans une collection. Dans l'exemple, Birthdays est un objet Collection. Le code suivant extrait de la collection les références des objets représentant les anniversaires de Jean Dupuis et de Bernard Dupuis, en utilisant "DupuisJean" et "DupuisBernard" comme arguments index. Notez que le premier appel spécifie explicitement la méthode Item mais que le deuxième ne le fait pas. Les deux appels aboutissent car la méthode Item est la méthode par défaut pour un objet Collection. Les références affectées à DupuisJeanBD et à DupuisBernardBD, avec l'instruction Set, peuvent être utilisées pour accéder aux propriétés et aux méthodes des objets spécifiés. Pour exécuter ce code, créez la collection et remplissez-la avec au moins les deux membres référencés.

Dim DupuisJeanBD As Object

Dim DupuisBernardBD As Object

Dim Birthdays

Set DupuisJeanBD = Birthdays.Item("DupuisJean")

Set DupuisBernardBD = Birthdays("DupuisBernard")


Print, méthode, exemple

Basé sur la méthode Print, cet exemple affiche la valeur de la variable MyVar dans la fenêtre Exécution. Notez que la méthode Print ne s'applique qu'aux objets pouvant afficher du texte.

Dim MyVar

MyVar = "Venez me voir dans la fenêtre Exécution."

Debug.Print MyVar


Raise, méthode, exemple

Cet exemple utilise la méthode Raise de l'objet Err pour générer une erreur dans le cadre d'un objet Automation écrit en Visual Basic. Son identificateur de ressource est MyProj.MyObject.

Const MyContextID = 1010407	' Définit une constante pour contextID.

Function TestName(CurrentName, NewName)

If Instr(NewName, "bob") Then	' Teste la validité de NewName.

' Indique l'exception

Err.Raise vbObjectError + 513, "MyProj.MyObject", _

"La chaîne ""bob"" ne peut pas figurer dans votre nom ", _

"c:\MyProj\MyHelp.Hlp", MyContextID

End If

End Function


Remove, méthode, exemple

Cet exemple montre comment utiliser la méthode Remove pour supprimer des objets d'un objet Collection appelé MyClasses. Le code suivant supprime l'objet dont l'index est 1 à chaque itération de la boucle.

Dim Num, MyClasses

For Num = 1 To MyClasses.Count

MyClasses.Remove 1	' Supprime le premier objet à chaque fois

' avec la boucle, jusqu'à ce qu'il ne reste

' plus aucun objet dans la collection.

Next Num


Add, méthode

Ajoute un membre à un objet Collection.

Syntaxe

object.Add item, key, before, after

La syntaxe de la méthode Add comprend le qualificateur d'objet et les arguments nommés suivants :

Élément	Description
object	Expression d'objet qui prend la valeur d'un objet figurant dans la liste Application.
item	Expression de n'importe quel type indiquant le membre à ajouter à la collection.
key	Facultatif. Expression de chaîne unique indiquant une chaîne de clé susceptible d'être utilisée à la place de l'index de position pour accéder à un membre de la collection.
before	Facultatif. Expression indiquant une position relative au sein de la collection. Le membre à ajouter est inséré dans la collection juste avant le membre désigné par l'argument before. S'il s'agit d'une expression numérique, l'argument before doit être un nombre compris entre 1 et la valeur de la propriété Count de la collection. S'il s'agit d'une expression de chaîne, l'argument before doit correspondre à la valeur de l'argument key indiqué lorsque le membre auquel il est fait référence a été ajouté à la collection. Vous pouvez indiquer la position before ou after, mais pas les deux.
after	Facultatif. Expression indiquant une position relative au sein de la collection. Le membre à ajouter est inséré dans la collection juste après le membre désigné par l'argument after. S'il s'agit d'une expression numérique, l'argument after doit être un nombre compris entre 1 et la valeur de la propriété Count de la collection. S'il s'agit d'une chaîne, l'argument after doit correspondre à la valeur de l'argument key indiqué lorsque le membre auquel il est fait référence a été ajouté à la collection. Vous pouvez indiquer la position before ou after, mais pas les deux.
Remarques

Que l'argument before ou after soit une expression de chaîne ou une expression numérique, il doit faire référence à un membre existant de la collection ; sinon, une erreur se produit.

Une erreur se produit également si un argument key duplique l'argument key d'un membre existant de la collection.


Clear, méthode

Efface toutes les valeurs de propriété de l'objet Err.

Syntaxe

object.Clear

L'élément object fait toujours référence à l'objet Err.

Remarques

Utilisez la méthode Clear pour effacer de manière explicite le contenu de l'objet Err à la suite du traitement d'une erreur, à l'aide de l'instruction On Error Resume Next par exemple. La méthode Clear est appelée automatiquement dès que l'une des instructions suivantes est exécutée :

•	Tout type d'instruction Resume

•	Exit Sub, Exit Function, Exit Property

•	Toute instruction On Error

Note   Il est préférable d'utiliser l'instruction On Error Resume Next et non l'instruction On Error GoTo pour traiter des erreurs générées à l'occasion de l'accès à d'autres objets. La vérification de la propriété Err après chaque interaction avec un objet évite en effet toute ambiguïté sur l'objet auquel le code accède. Vous saurez ainsi avec certitude quel objet a placé le code d'erreur dans la propriété Err.Number, et quel est celui qui a généré l'erreur à l'origine (indiqué dans la propriété Err.Source).


Item, méthode

Renvoie un membre donné d'un objet Collection en fonction de sa position ou de sa clé.

Syntaxe

object.Item(index)

La syntaxe de la méthode Item comprend le qualificateur d'objet et l'élément suivants :

Élément	Description
object	Expression d'objet qui prend la valeur d'un objet figurant dans la liste Application.
index	Expression indiquant la position d'un membre de la collection. S'il s'agit d'une expression numérique, l'argument index doit être un nombre compris entre 1 et la valeur de la propriété Count de la collection. S'il s'agit d'une expression de chaîne, l'argument index doit correspondre à l'argument key indiqué lorsque le membre auquel il est fait référence a été ajouté à la collection.
Remarques

Si la valeur fournie pour l'argument index ne correspond à aucun membre existant de la collection, une erreur se produit.

La méthode Item est adoptée par défaut pour toutes les collections. Les lignes de code suivantes sont donc équivalentes :

Print MyCollection(1)

Print MyCollection.Item(1)


Print, méthode

Affiche du texte dans la fenêtre Exécution.

Syntaxe

object.Print [outputlist]

La syntaxe de la méthode Print comprend le qualificateur d'objet et l'élément suivants :

Élément	Description
object	Facultatif. Expression d'objet qui prend la valeur d'un objet figurant dans la liste Application.
outputlist	Facultatif. Expression ou liste d'expressions à imprimer. En cas d'omission, une ligne vierge est imprimée.
L'argument outputlist possède la syntaxe et les éléments suivants :

{Spc(n) | Tab(n)} expression charpos

Élément	Description
Spc(n)	Facultatif. Permet d'insérer des espaces dans la sortie imprimée, n étant le nombre d'espaces à insérer.
Tab(n)	Facultatif. Permet de placer le point d'insertion sur un numéro de colonne absolu, n étant le numéro de colonne. Utilisez Tab sans argument pour placer le point d'insertion au début de la zone d'impression suivante.
expression	Facultatif. Expression numérique ou expression de chaîne à imprimer.
charpos	Facultatif. Indique le point d'insertion du caractère suivant. Utilisez un point-virgule (;) pour placer le point d'insertion immédiatement à la suite du dernier caractère affiché. Utilisez Tab(n) pour placer le point d'insertion sur un numéro de colonne absolu. Utilisez Tab sans argument pour placer le point d'insertion au début de la zone d'impression suivante. Si vous ne précisez pas d'argument charpos, le caractère suivant est imprimé sur la ligne suivante.
Remarques

Des expressions multiples peuvent être séparées indifféremment par un espace ou par un point-virgule.

Toutes les données affichées dans la fenêtre Exécution adoptent le séparateur décimal défini dans les paramètres régionaux de votre système. Les mots clés sont affichés dans la langue de l'application hôte.

Pour les données de type Boolean, la valeur True ou False est affichée. Les mots clés True et False seront traduits dans la langue définie pour l'application hôte.

Les données de type Date sont présentées au format de date courte reconnu par votre système. Si l'une des composantes date ou heure est omise ou égale à zéro, seules les données fournies sont affichées.

Si la valeur de outputlist est Empty, rien n'est affiché. Toutefois, si la valeur de outputlist est Null, Null est affiché. Le mot clé Null est également traduit dans la langue appropriée.

Les données d'erreur sont affichées au format Error errorcode. Le mot clé Error est traduit dans la langue appropriée.

L'argument object est obligatoire si la méthode est utilisée à l'extérieur d'un module dont l'espace d'affichage est fixe. Par exemple, une erreur se produit si la méthode est appelée dans un module standard sans indiquer une valeur object ; si elle est appelée dans un module de la feuille, la valeur outputlist est affichée sur la feuille.

Note   Comme la méthode Print utilise normalement une police de caractères proportionnelle, il n'existe aucune corrélation entre le nombre de caractères affichés et le nombre de colonnes de largeur fixe que ces caractères occupent. Par exemple, une lettre large telle que "W" occupe davantage d'espace que ce qui est normalement réservé à une colonne de longueur fixe, tandis qu'une lettre plus étroite, telle que "I", en occupe moins. Pour tenir compte des caractères plus larges, vous devez veiller à ce que les colonnes soient suffisamment espacées. Vous pouvez aussi opter pour une police à espacement fixe (tel que Courier) afin que chaque caractère n'occupe qu'une seule colonne.


Raise, méthode

Génère une erreur d'exécution.

Syntaxe

object.Raise number, source, description, helpfile, helpcontext

La méthode Raise comprend le qualificateur d'objet et les arguments nommés suivants :

Argument	Description
object	Il s'agit toujours de l'objet Err.
Number	Entier de type Long identifiant la nature de l'erreur. Les erreurs Visual Basic (qu'elles soient provoquées par Visual Basic ou par l'utilisateur) sont comprises entre 0 et 65535. La plage de 0 à 512 est réservée aux erreurs système ; la plage de 513 à 65535 est disponible pour les erreurs définies par l'utilisateur. Lorsque vous attribuez à la propriété Number votre propre code d'erreur dans un module de classe, vous ajoutez votre numéro de code d'erreur à la constante vbObjectError. Par exemple, pour générer le numéro d'erreur 513, attribuez vbObjectError + 513 à la propriété Number.
Source	Facultatif. Expression de chaîne qui nomme l'objet ou l'application à l'origine de l'erreur. Lorsque vous définissez cette propriété pour un objet, adoptez le format project class. Si l'argument source n'est pas indiqué, l'identificateur de programmation du projet Visual Basic en cours est automatiquement adopté.
description	Facultatif. Expression de chaîne décrivant l'erreur. Si cet argument n'est pas indiqué, la valeur de Number est examinée. Si elle peut être convertie en code d'erreur d'exécution Visual Basic, la chaîne qui serait renvoyée par la fonction Error est adoptée comme Description. S'il n'existe pas d'erreur Visual Basic correspondant à Number, le message "Erreur définie par l'application ou par l'objet" est utilisé.
helpfile	Facultatif. Chemin d'accès complet au fichier d'aide contenant des informations sur cette erreur. Si ce chemin n'est pas indiqué, Visual Basic adopte le nom, le dossier et le lecteur du fichier d'aide de Visual Basic.
helpcontext	Facultatif. Identificateur de contexte désignant une rubrique contenue dans helpfile et fournissant des informations sur l'erreur. En cas d'omission, l'identificateur de contexte du fichier d'aide de Visual Basic pour l'erreur correspondant à la propriété Number est utilisé (si cet identificateur existe).
Remarques

Tous les arguments sont facultatifs, à l'exception de number. Si vous utilisez la méthode Raise sans indiquer d'argument et si les propriétés de l'objet Err contiennent des valeurs qui n'ont pas été effacées, ces dernières serviront de valeurs pour votre erreur.

La méthode Raise permet de générer des erreurs d'exécution ; elle peut être utilisée à la place de l'instruction Error, notamment pour générer des erreurs à l'occasion de l'écriture de modules de classe. L'objet Err fournit en effet des informations plus détaillées que celles obtenues avec l'instruction Error. La méthode Raise vous offre, par exemple, la possibilité d'indiquer la source de l'erreur dans la propriété Source et la rubrique correspondant aux erreurs.


Remove, méthode

Retire un membre d'un objet Collection.

Syntaxe

object.Remove index

La syntaxe de la méthode Remove comprend le qualificateur d'objet et l'élément suivants :

Élément	Description
object	Expression d'objet qui prend la valeur d'un objet figurant dans la liste Application.
index	Expression indiquant la position d'un membre de la collection. S'il s'agit d'une expression numérique, l'argument index doit être un nombre compris entre 1 et la valeur de la propriété Count de la collection. S'il s'agit d'une expression de chaîne, l'argument index doit correspondre à l'argument key indiqué lorsque le membre auquel il est fait référence a été ajouté à la collection.
Remarques

Si la valeur fournie pour l'argument index ne correspond à aucun membre existant de la collection, une erreur se produit.


AppActivate, instruction, exemple

Cet exemple montre comment utiliser l'instruction AppActivate pour activer une fenêtre d'application. Les instructions Shell employées supposent que les applications se trouvent dans les chemins spécifiés.

Dim MyAppID, ReturnValue

AppActivate "Microsoft Word"	' Active Microsoft

' Word.

' L'instruction AppActivate peut utiliser la valeur renvoyée par la

' fonction Shell.

MyAppID = Shell("C:\WORD\WINWORD.EXE", 1)	' Exécute Microsoft Word.

AppActivate MyAppID	' Active Microsoft Word.

' Vous pouvez également utiliser la valeur renvoyée par la

' fonction Shell.

ReturnValue = Shell("c:\EXCEL\EXCEL.EXE",1)	' Exécute Microsoft Excel.

AppActivate ReturnValue	' Active Microsoft Excel.


Beep, instruction, exemple

Cet exemple utilise l'instruction Beep pour diffuser trois notes à la suite par le haut-parleur de l'ordinateur.

Dim I

For I = 1 To 3	' Fait 3 boucles.

Beep	' Émet une note.

Next I


Command, fonction, exemple

Cet exemple utilise la fonction Command pour obtenir les arguments de la ligne de commande au moyen d'une fonction qui les renvoie dans une variable de type Variant constituée d'un tableau.

Function GetCommandLine(Optional MaxArgs)

' Déclare les variables.

Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs

' Vérifie si MaxArgs a été spécifié.

If IsMissing(MaxArgs) Then MaxArgs = 10

' Définit un tableau au format approprié.

ReDim ArgArray(MaxArgs)

NumArgs = 0: InArg = False

' Récupère les arguments de ligne de commande.

CmdLine = Command()

CmdLnLen = Len(CmdLine)

' Analyse de la ligne de commande caractère par caractère.

For I = 1 To CmdLnLen

C = Mid(CmdLine, I, 1)

' Analyse de caractères d'espacement ou de tabulations.

If (C <> " " And C <> vbTab) Then

' Ni espace ni tabulation.

' Vérifie une éventuelle présence dans l'argument.

If Not InArg Then

' Le nouvel argument commence.

' Vérifie si les arguments ne sont pas trop nombreux.

If NumArgs = MaxArgs Then Exit For

NumArgs = NumArgs + 1

InArg = True

End If

' Concatène un caractère à l'argument courant.

ArgArray(NumArgs) = ArgArray(NumArgs) & C

Else

' Recherche un espace ou une tabulation.

' L'indicateur InArg prend la valeur False.

InArg = False

End If

Next I

' Redimensionne le tableau pour qu'il puisse

' juste contenir les arguments.

ReDim Preserve ArgArray(NumArgs)

' Renvoie le tableau dans le nom de fonction.

GetCommandLine = ArgArray()

End Function


InputBox, fonction, exemple

Cet exemple montre comment utiliser la fonction InputBox pour inviter l'utilisateur à saisir une valeur. Si vous omettez de spécifier les positions de x et de y, les deux axes correspondants sont automatiquement déterminés de manière à centrer la boîte de dialogue. La variable MyValue contient la valeur entrée par l'utilisateur si celui-ci clique sur OK ou appuie sur la touche ENTRÉE. Si l'utilisateur clique sur Annuler, une chaîne de longueur nulle est renvoyée.

Dim Message, Title, Default, MyValue

' Définit le message.

Message = "Entrez une valeur comprise entre 1 et 3"

Title = "Démonstration de InputBox"	' Définit le titre.

Default = "1"	' Définition la valeur par défaut.

' Affiche le message, le titre et la valeur par défaut.

MyValue = InputBox(Message, Title, Default)

' Utilise le fichier d'aide et le contexte.

' Le bouton Aide est ajouté automatiquement.

MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)

' Affiche la boîte de dialogue sur la position 100, 100.

MyValue = InputBox(Message, Title, Default, 100, 100)


MsgBox, fonction, exemple

Cet exemple utilise la fonction MsgBox pour afficher un message d'erreur grave dans une boîte de dialogue pourvue des boutons Yes et No. Le bouton No est spécifié comme réponse par défaut. La valeur renvoyée par la fonction MsgBox dépend du bouton sélectionné par l'utilisateur. Dans cet exemple, DEMO.HLP est un fichier d'aide contenant une section dont le numéro de contexte d'aide est 1000.

Dim Msg, Style, Title, Help, Ctxt, Response, MyString

Msg = "Souhaitez-vous continuer?"	' Définit le message.

Style = vbYesNo + vbCritical + vbDefaultButton2	' Définit les boutons.

Title = "Démonstration de MsgBox "	' Définit le titre.

Help = "DEMO.HLP"	' Définit le fichier d'aide.

Ctxt = 1000	' Définit le contexte de

' la rubrique.

' Affiche le message.

Response = MsgBox(Msg, Style, Title, Help, Ctxt)

If Response = vbYes Then	' L'utilisateur a choisi Oui.

MyString = "Oui"	' Effectue une action.

Else	' L'utilisateur a choisi Non.

MyString = "Non"	' Effectue une action.

End If


SendKeys, instruction, exemple

Cet exemple utilise la fonction Shell pour exécuter l'application Calculatrice fournie avec Microsoft Windows. Il utilise ensuite l'instruction SendKeys pour envoyer des frappes de touches destinées à ajouter des nombres, puis à quitter la Calculatrice. (Pour afficher l'exemple, collez le code ci-dessous dans une procédure puis exécutez cette dernière. Dans la mesure où l'instruction AppActivate transfère le focus vers l'application Calculatrice, il n'est pas possible d'exécuter le code pas à pas).

Dim ReturnValue, I

ReturnValue = Shell("CALC.EXE", 1)	' Exécute l'application Calculatrice.

AppActivate ReturnValue	' Active l'application Calculatrice.

For I = 1 To 100	' Configure la boucle de comptage.

SendKeys I & "{+}", True	' Envoie des frappes de touches

Next I	' à l'application Calculatrice pour

' ajouter chaque valeur de I.

SendKeys "=", True	' Fait le total général.

SendKeys "%{F4}", True	' Envoie la combinaison ALT+F4 pour fermer

' l'application Calculatrice.


AppActivate, instruction

Active une fenêtre d'application.

Syntaxe

AppActivate title[, wait]

La syntaxe de l'instruction AppActivate comprend les arguments nommés suivants :

Élément	Description
title	Expression de chaîne indiquant le titre dans la barre de titre de la fenêtre d'application à activer. Pour activer une application, vous pouvez utiliser l'identificateur de tâche renvoyé par la fonction Shell à la place de l'argument title.
wait	Facultatif. Valeur de type Boolean qui indique si l'application appelante est active avant d'en activer une autre. Si la valeur est False (valeur par défaut), l'application indiquée est immédiatement activée, même si l'application appelante n'est pas active. Si la valeur est True, l'application appelante attend de devenir active, puis active l'application indiquée.
Remarques

L'instruction AppActivate rend active l'application ou la fenêtre nommée, mais ne l'agrandit ni ne la réduit. La fenêtre d'application cesse d'être active dès que l'utilisateur exécute une action qui entraîne la fermeture de la fenêtre ou l'activation d'une autre. Utilisez la fonction Shell pour démarrer une application et définir le style de la fenêtre.

Pour rechercher l'application à activer, les chaînes de titre de toutes les applications sont comparées avec celle de l'argument title. Si aucun titre ne correspond exactement à l'argument, une application dont le titre commence par la valeur de l'argument title est activée. Si plusieurs applications ont pour nom l'argument title, l'une d'entre elles est activée arbitrairement.


Beep, instruction

Émet un signal sonore par le haut-parleur de l'ordinateur.

Syntaxe

Beep

Remarques

La fréquence et la durée du signal sonore dépendent des caractéristiques du matériel et du logiciel système utilisés, lesquelles peuvent varier d'un ordinateur à l'autre.


Command, fonction

Renvoie la partie argument de la ligne de commande utilisée pour lancer Microsoft Visual Basic ou un programme exécutable développé avec Visual Basic.

Syntaxe

Command

Remarques

Lorsque Visual Basic est lancé à partir de la ligne de commande, toute partie de cette dernière située après /cmd est passée au programme comme argument de ligne de commande. Dans l'exemple suivant, cmdlineargs représente l'argument renvoyé par la fonction Command.

VB /cmd cmdlineargs

Pour les applications développées avec Visual Basic et compilées en un fichier .exe, la fonction Command renvoie tout argument apparaissant après le nom de l'application sur la ligne de commande. Par exemple :

MyApp cmdlineargs

Pour en savoir plus sur la modification des arguments de ligne de commande dans l'interface utilisateur de l'application que vous utilisez, recherchez la rubrique "arguments de ligne de commande".


InputBox, fonction

Affiche une invite dans une boîte de dialogue, attend que l'utilisateur tape du texte ou clique sur un bouton, puis renvoie le contenu de la zone de texte sous la forme d'une valeur de type String.

Syntaxe

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

La syntaxe de la fonction InputBox comprend les arguments nommés suivants :

Élément	Description
prompt	Expression de chaîne affichée comme message dans la boîte de dialogue. La longueur maximale de l'argument prompt est d'environ 1 024 caractères, selon la largeur des caractères utilisés. Si prompt occupe plus d'une ligne, n'oubliez pas d'insérer un retour chariot (Chr(13)) ou un saut de ligne (Chr(10)) entre les lignes, ou une combinaison de caractères retour chariot-saut de ligne (Chr(13) & Chr(10)) entre chaque ligne.
title	Facultatif. Expression de chaîne affichée dans la barre de titre de la boîte de dialogue. Si l'argument title est omis, le nom de l'application est placé dans la barre de titre.
default	Facultatif. Expression de chaîne affichée par défaut dans la zone de texte en l'absence de toute autre valeur. Si l'argument default est omis, la zone de texte qui s'affiche est vide.
xpos	Facultatif. Expression numérique indiquant, en twips, la distance horizontale qui sépare le bord gauche de l'écran de la bordure gauche de la boîte de dialogue. Si l'argument xpos est omis, la boîte de dialogue est centrée horizontalement.
ypos	Facultatif. Expression numérique indiquant, en twips, la distance verticale qui sépare le haut de l'écran de la bordure supérieure de la boîte de dialogue. Si l'argument ypos est omis, la boîte de dialogue est positionnée verticalement, à environ un tiers de l'écran en partant du haut.
helpfile	Facultatif. Expression de chaîne indiquant le fichier d'aide à utiliser pour fournir une aide contextuelle sur la boîte de dialogue. Si l'argument helpfile est défini, l'argument context doit l'être également.
context	Facultatif. Expression numérique indiquant le numéro de contexte attribué par l'auteur de l'aide à la rubrique appropriée. Si l'argument context est défini, l'argument helpfile doit l'être également.
Remarques

Lorsque les deux arguments helpfile et context sont définis, l'utilisateur peut appuyer sur F1 pour afficher la rubrique d'aide correspondant à l'argument context. Certaines applications hôtes, Microsoft Excel par exemple, peuvent ajouter automatiquement un bouton Aide à la boîte de dialogue. Si l'utilisateur clique sur OK ou appuie sur ENTRÉE , la fonction InputBox renvoie le texte contenu dans la zone de texte. Si l'utilisateur clique sur le bouton Annuler, la fonction renvoie une chaîne de longueur nulle ("").

Note   Si vous souhaitez préciser plus d'informations que celles fournies par le premier argument nommé, vous devez utiliser la fonction InputBox dans une expression. Si vous voulez omettre certains arguments de position, vous devez quand même placer la virgule de séparation correspondante.


MsgBox, fonction

Affiche un message dans une boîte de dialogue, attend que l'utilisateur clique sur un bouton, puis renvoie une valeur de type Integer qui indique le bouton choisi par l'utilisateur.

Syntaxe

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

La syntaxe de la fonction MsgBox comprend les arguments nommés suivants :

Élément	Description
prompt	Expression de chaîne affichée comme message dans la boîte de dialogue. La longueur maximale de l'argument prompt est d'environ 1 024 caractères selon la largeur des caractères utilisés. Si l'argument prompt occupe plus d'une ligne, n'oubliez pas d'insérer un retour chariot (Chr(13)) ou un saut de ligne (Chr(10)) entre les lignes, ou une combinaison de caractères retour chariot-saut de ligne (Chr(13) & Chr(10)).
buttons	Facultatif. Expression numérique qui représente la somme des valeurs indiquant le nombre et le type de boutons à afficher, le style d'icône à utiliser, l'identité du bouton par défaut, ainsi que la modalité du message. Si l'argument buttons est omis, sa valeur par défaut est 0.
title	Facultatif. Expression de chaîne affichée dans la barre de titre de la boîte de dialogue. Si l'argument title est omis, le nom de l'application est placé dans la barre de titre.
helpfile	Facultatif. Expression de chaîne indiquant le fichier d'aide à utiliser pour fournir une aide contextuelle sur la boîte de dialogue. Si l'argument helpfile est défini, l'argument context doit l'être également.
context	Facultatif. Expression indiquant le numéro de contexte attribué par l'auteur de l'aide à la rubrique appropriée. Si l'argument context est défini, l'argument helpfile doit l'être également.
Valeurs

L'argument buttons prend les valeurs suivantes :

Constant	Value	Description
vbOKOnly	0	Affiche le bouton OK uniquement.
vbOKCancel	1	Affiche les boutons OK et Annuler.
vbAbortRetryIgnore	2	Affiche le bouton Abandonner, Réessayer et Ignorer.
vbYesNoCancel	3	Affiche les boutons Oui, Non et Annuler.
vbYesNo	4	Affiche les boutons Oui et Non.
vbRetryCancel	5	Affiche les boutons Réessayer et Annuler.
vbCritical	16	Affiche l'icône Message critique.
vbQuestion	32	Affiche l'icône Requête d'avertissement.
vbExclamation	48	Affiche l'icône Message d'avertissement.
vbInformation	64	Affiche l'icône Message d'information.
vbDefaultButton1	0	Le premier bouton est le bouton par défaut.
vbDefaultButton2	256	Le deuxième bouton est le bouton par défaut.
vbDefaultButton3	512	Le troisième bouton est le bouton par défaut.
vbDefaultButton4	768	Le quatrième bouton est le bouton par défaut.
vbApplicationModal	0	Boîte de dialogue modale. L'utilisateur doit répondre au message affiché dans la zone de message avant de pouvoir continuer de travailler dans l'application en cours.
vbSystemModal	4096	Modal système. Toutes les applications sont interrompues jusqu'à ce que l'utilisateur réponde au message affiché dans la zone de message.
vbMsgBoxHelpButton	16384	Ajoute le bouton Aide à la zone de message.
VbMsgBoxSetForeground	65536	Indique la fenêtre de zone de message comme fenêtre de premier plan.
vbMsgBoxRight	524288	Le teste est aligné à droite.
vbMsgBoxRtlReading	1048576	Indique que le texte doit apparaître de droite à gauche sur les systèmes hébraïques et arabes.
Le premier groupe de valeurs (0 à 5) décrit le nombre et le type de boutons affichés dans la boîte de dialogue. Le deuxième groupe (16, 32, 48 et 64) décrit le style d'icône. Le troisième groupe (0, 256 et 512) définit le bouton par défaut. Enfin, le quatrième groupe (0 et 4 096) détermine la modalité de la zone de message. Au moment d'additionner ces nombres pour obtenir la valeur finale de l'argument buttons, ne sélectionnez qu'un seul nombre dans chaque groupe.

Note   Ces constantes sont indiquées par Visual Basic pour Applications. Vous pouvez par conséquent les utiliser n'importe où dans votre code à la place des valeurs réelles correspondantes.

Valeurs renvoyées

Constante	Valeur	Description
vbOK	1	OK
vbCancel	2	Annuler
vbAbort	3	Abandonner
vbRetry	4	Réessayer
vbIgnore	5	Ignorer
vbYes	6	Oui
vbNo	7	Non
Remarques

Lorsque les deux arguments helpfile et context sont définis, l'utilisateur peut appuyer sur F1 pour afficher la rubrique d'aide correspondant à l'argument context. Certaines applications hôtes, Microsoft Excel par exemple, peuvent ajouter automatiquement un bouton Aide à la boîte de dialogue.

Si la boîte de dialogue est dotée d'un bouton Annuler, appuyer sur Échap équivaut à cliquer sur Annuler. Si la boîte de dialogue contient un bouton Aide, cela signifie qu'une aide contextuelle relative à la boîte de dialogue est disponible. Toutefois, aucune valeur n'est renvoyée tant que l'utilisateur n'a pas cliqué sur l'un des autres boutons.

Note    Si vous souhaitez préciser plus d'informations que celles fournies par le premier argument nommé, vous devez utiliser la fonction MsgBox dans une expression. Si vous voulez omettre certains arguments de position, vous devez quand même placer la virgule de séparation correspondante.


SendKeys, instruction

Envoie une ou plusieurs touches à la fenêtre active comme s'il s'agissait d'une saisie directe au clavier.

Syntaxe

SendKeys string[, wait]

La syntaxe de l'instruction SendKeys comprend les arguments nommés suivants :

Élément	Description
string	Expression de chaîne indiquant la ou les touches à envoyer.
wait	Facultatif. Valeur de type Boolean indiquant le mode d'attente. Si la valeur est False (valeur par défaut), la procédure reprend le contrôle dès que les touches sont envoyées. Si la valeur est True, les touches doivent être traitées avant que la procédure ne reprenne le contrôle.
Remarques

Chaque touche est représentée par un ou plusieurs caractères. Pour indiquer un seul caractère du clavier, utilisez le caractère proprement dit. Par exemple, pour représenter la lettre A, affectez à l'argument string la valeur "A". Si vous souhaitez représenter plusieurs caractères, il vous suffit d'ajouter les caractères les uns à la suite des autres. Par exemple, pour représenter les lettres A, B et C, affectez la valeur "ABC" à l'argument string.

L'instruction SendKeys attribue une signification spéciale au signe plus (+), au signe insertion (^), au signe pourcentage (%), au tilde (~) et aux parenthèses ( ). Pour indiquer l'un de ces caractères, placez-le entre accolades ({}). Par exemple, pour indiquer le signe plus, tapez {+}. Bien que les crochets droits ([ ]) n'aient aucune signification particulière dans l'instruction SendKeys, vous devez les placer eux aussi entre accolades. En effet, dans d'autres applications, ils ont une signification spéciale à prendre en compte en cas d'échange dynamique de données (DDE). Pour indiquer des accolades, utilisez les caractères {{} et {}}.

Pour indiquer des caractères qui n'apparaissent pas à l'écran lorsque vous appuyez sur une touche (comme la touche ENTRÉE ou TAB) et des touches qui représentent des actions plutôt que des caractères, employez les codes suivants :

Key	Code
RET.ARR	{BACKSPACE}, {BS} ou {BKSP}
ATTN	{BREAK}
VERR.MAJ	{CAPSLOCK}
SUPPR	{DELETE} ou {DEL}
BAS	{DOWN}
FIN	{END}
ENTRÉE	{ENTER}ou ~
ÉCHAP	{ESC}
AIDE	{HELP}
ORIGINE	{HOME}
INSERTION	{INSERT} ou {INS}
GAUCHE	{LEFT}
VERR.NUM	{NUMLOCK}
PG.SUIV	{PGDN}
PG.PRÉC	{PGUP}
IMPR. ÉCRAN	{PRTSC}
DROITE	{RIGHT}
ARRÊT.DÉFIL	{SCROLLLOCK}
TAB	{TAB}
HAUT	{UP}
F1	{F1}
F2	{F2}
F3	{F3}
F4	{F4}
F5	{F5}
F6	{F6}
F7	{F7}
F8	{F8}
F9	{F9}
F10	{F10}
F11	{F11}
F12	{F12}
F13	{F13}
F14	{F14}
F15	{F15}
F16	{F16}
Pour indiquer une combinaison de touches avec MAJ, CTRL et ALT, faites précéder le code normal de la touche d'un ou plusieurs codes parmi les suivants :

Touche	Code
MAJ	+
CTRL	^
ALT	%
Pour indiquer que les touches MAJ, CTRL et ALT doivent être maintenues enfoncées pendant que d'autres touches sont utilisées, mettez le code des touches entre parenthèses. Par exemple, pour que la touche MAJ soit maintenue enfoncée pendant que les touches E et C sont utilisées, indiquez "+(EC)". Pour que la touche MAJ soit maintenue enfoncée en même temps que la touche E et que l'utilisateur appuie ensuite sur la touche C sans enfoncer la touche MAJ, utilisez "+EC".

Pour indiquer qu'une touche doit être répétée, employez la forme {touche nombre}, sans oublier d'insérer un espace entre touche et nombre. Par exemple, {LEFT 42} signifie que la touche GAUCHE doit être enfoncée 42 fois et {h 10} qu'il faut appuyer 10 fois sur la touche H.

Note   L'instruction SendKeys ne peut envoyer de touches à une application qui n'est pas conçue pour être exécutée dans l'environnement Microsoft Windows. L'instruction Sendkeys ne peut pas non plus envoyer la touche IMP. ÉCRAN {PRTSC} aux applications.


Jeu de caractères (0 à 127)

0	•	32	[space]	64	@	96	`
1	•	33	!	65	A	97	a
2	•	34	"	66	B	98	b
3	•	35	#	67	C	99	c
4	•	36	$	68	D	100	d
5	•	37	%	69	E	101	e
6	•	38	&	70	F	102	f
7	•	39	'	71	G	103	g
8	* *	40	(	72	H	104	h
9	* *	41	)	73	I	105	i
10	* *	42	*	74	J	106	j
11	•	43	+	75	K	107	k
12	•	44	,	76	L	108	l
13	* *	45	-	77	M	109	m
14	•	46	.	78	N	110	n
15	•	47	/	79	O	111	o
16	•	48	0	80	P	112	p
17	•	49	1	81	Q	113	q
18	•	50	2	82	R	114	r
19	•	51	3	83	S	115	s
20	•	52	4	84	T	116	t
21	•	53	5	85	U	117	u
22	•	54	6	86	V	118	v
23	•	55	7	87	W	119	w
24	•	56	8	88	X	120	x
25	•	57	9	89	Y	121	y
26	•	58	:	90	Z	122	z
27	•	59	;	91	[	123	{
28	•	60	<	92	\	124	|
29	•	61	=	93	]	125	}
30	•	62	>	94	^	126	~
31	•	63	?	95	_	127	•
•	Caractères non gérés par Microsoft Windows.

* *	Les valeurs 8, 9, 10 et 13 correspondent respectivement aux caractères de retour arrière, de tabulation, de saut de ligne et de retour chariot. Elles n'ont pas de représentation graphique mais peuvent, selon l'application utilisée, modifier l'aspect du texte.


IMEStatus, fonction

Renvoie une valeur de type Integer indiquant le mode IME (Input Method Editor) en cours de Microsoft Windows ; disponible uniquement dans les versions destinées aux pays asiatiques.

Syntaxe

IMEStatus

Valeurs renvoyées

Les constantes concernant les paramètres régionaux japonais sont les suivantes :

Constante	Valeur	Description
vbIMEModeNoControl	0	Ne pas contrôler l'IME (valeur par défaut)
vbIMEModeOn	1	IME actif
vbIMEModeOff	2	IME inactif
vbIMEModeDisable	3	IME désactivé
vbIMEModeHiragana	4	Mode Hiragana à deux octets
vbIMEModeKatakana	5	Mode Katakana à deux octets
vbIMEModeKatakanaHalf	6	Mode Katakana à un octet
vbIMEModeAlphaFull	7	Mode alphanumérique à deux octets
vbIMEModeAlpha	8	Mode alphanumérique à un octet
Les constantes concernant les paramètres régionaux coréens sont les suivantes :

Constante	Valeur	Description
vbIMEModeNoControl	0	Ne pas contrôler l'IME (valeur par défaut)
vbIMEModeAlphaFull	7	Mode alphanumérique à deux octets
vbIMEModeAlpha	8	Mode alphanumérique à un octet
vbIMEModeHangulFull	9	Mode Hangul à deux octets
vbIMEModeHangul	10	Mode Hangul à un octet
Les constantes concernant les paramètres régionaux chinois sont les suivantes :

Constante	Valeur	Description
vbIMEModeNoControl	0	Ne pas contrôler l'IME (valeur par défaut)
vbIMEModeOn	1	IME actif
vbIMEModeOff	2	IME inactif


Impossible d'exécuter le code en mode arrêt

Le mode arrêt correspond à l'interruption de l'exécution du code. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'exécuter du code à partir de la boîte de dialogue Macro. Cependant, un autre code était déjà en exécution sous Visual Basic, bien que le code soit en mode arrêt.

Vous pouvez être entré en mode arrêt sans vous en apercevoir, par exemple à cause d'une erreur de syntaxe ou d'exécution intervenue dans votre code. Continuez l'exécution du code interrompu ou arrêtez-la avant de lancer le code à partir de la boîte de dialogue Macro. Vous pouvez corriger l'erreur puis cliquer sur Continuer, ou revenir dans la boîte de dialogue Macro et relancer la macro.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'appeler une procédure Friend d'un objet qui n'est pas une instance de la classe de définition (erreur 97)

Une procédure Friend peut être appelée à partir de modules situés en dehors de la classe, mais faisant partie du projet dans lequel la classe est définie. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'appeler la procédure Friend d'une classe, mais bien que la variable de référence soit du type correct, elle pointe vers une instance autre que celle de la classe.

Par exemple, cela peut se produire s'il existe deux classes, classx et classy (qui implémente classy), mais vous assignez par erreur l'instance de classy à l'instance de classx.

•	Vous avez tenté d'accéder à une propriété ou à une méthode Friend interprocessus ou interthread. Les procédures Friend ne faisant pas partie de l'interface publique d'une classe, elles ne peuvent faire l'objet d'un marshaling interprocessus ou interthread.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de sortir du mode création car un contrôle ne peut pas être créé.
Impossible de sortir du mode création car un contrôle ne peut pas être créé

Vous devez créer une occurrence pour tous les contrôles avant de quitter le mode création. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le contrôle indiqué dans le message d'erreur n'a pas pu être créé.

Le code ne peut être exécuté qu'une fois une occurrence créée pour tous les contrôles et une fois ces derniers correctement connectés. Vérifiez que tous les fichiers nécessaires au contrôle sont disponibles avant de réessayer.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Un objet ne gère pas d'événements Automation

Un objet doit fournir une interface source par défaut pour que vous puissiez écrire des procédures d'événement pour ses événements. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez écrit une procédure d'événement pour un événement d'un objet, mais cet événement n'est pas disponible en dehors de l'objet.

Consultez la documentation relative à l'objet. Vous pouvez y trouver des suggestions ou des moyens détournés pour traiter l'événement qui vous intéresse.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Opération non autorisée dans une DLL

Toutes les instructions Visual Basic ne sont pas acceptées au sein d'une bibliothèque de liaisons dynamiques (DLL). Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté de créer une DLL à partir d'une classe contenant une instruction ne pouvant pas être exécutée à partir d'une DLL.

Vérifiez les instructions de votre classe ne pouvant être exécutées au sein d'une DLL, par exemple l'instruction End.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Incorrect en dehors d'un type Enum

Enum est un type de données permettant de créer des groupes de constantes (appelés énumérations) reliées. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez utilisé un End Enum hors d'une définition de type Enum.

Vérifiez si du texte s'est inséré entre le corps de la définition Enum et End Enum.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce document a été ouvert avec l'option Macros désactivée.
Ce document a été ouvert avec l'option Macros désactivée

Une application hôte peut désactiver ou activer des macros. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez ouvert le document avec l'option Macros Désactivées.

Fermez le document, puis ouvrez-le de nouveau en sélectionnant l'option Activer les Macros.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La bibliothèque qui contient ce symbole n'est pas référencée dans le projet actuel ; ce symbole est donc indéfini. Voulez-vous ajouter une référence maintenant?

Les informations relatives aux objets et aux types sont contenues dans des bibliothèques. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Une définition de ce symbole existe dans une bibliothèque de types.

Pour définir le symbole comme contenu dans la bibliothèque mentionnée, cliquez sur OK pour ajouter la référence à cette bibliothèque.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Un objet ne dispose pas de procédure Property Let

Vous ne pouvez pas attribuer de valeur à une propriété à moins que celle-ci ait une méthode Property Let à disposition. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'attribuer une valeur à une propriété qui n'a pas de méthode Property Let à disposition.

Vous ne pouvez pas attribuer directement de valeur à cette propriété. Si vous avez créé la classe, vous pouvez modifier l'interface en mettant à disposition une méthode Property Let. Si tel n'est pas le cas, consultez la documentation relative au composant pour déterminer s'il existe une méthode indirecte permettant d'attribuer une valeur.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Aucune aide disponible

Les erreurs n'ont pas toutes une rubrique d'aide qui leur est associée. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez généré une erreur pour laquelle aucune rubrique d'aide n'existe.

Consultez le fichier Lisezmoi. Ce fichier comporte souvent des rubriques d'aide relatives aux erreurs décelées tardivement.


Impossible de récupérer les événements de cet objet car celui-ci génère déjà des événements vers le nombre maximal de destinataires géré (erreur 96)

Chaque objet indique le nombre maximal de destinataires simultanés pour lesquels il peut déclencher des événements. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'utiliser l'instruction Set avec une variable WithEvents pour un contrôle sur une feuille.

Vous ne pouvez pas utiliser l'instruction Set avec une variable WithEvents en raison du nombre de destinataires autorisé pour ces événements.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Point d'entrée d'une DLL introuvable dans la DLL spécifiée

Un point d'entrée est le nom d'une procédure DLL (sous Windows) ou une ressource de code (sur Macintosh) ou le numéro représentant la procédure. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Une bibliothèque de types a donné un point d'entrée incorrect. Le nom peut être mal orthographié ou le numéro peut être incorrect.

Contactez le fournisseur pour obtenir une bibliothèque de types à jour.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'exécuter le programme indiqué

Lorsque vous créez un exécutable en code natif, d'autres programmes doivent être exécutés. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Les ressources système ou mémoire sont insuffisantes pour lancer le générateur de code ou de lien.

Fermez autant d'applications que possible pour libérer des ressources système ou mémoire.

•	Visual Basic n'a pas été installé correctement.

Réinstallez Visual Basic.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ressources dupliquées de type et nom identiques

Un fichier ressource Windows contient généralement des images bitmap, des chaînes de texte et autres données similaires nécessaires à l'application. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier ressource Windows que vous tentez d'utiliser dans votre projet contient plusieurs ressources du même type et portant le même nom, ou le fichier comporte une ressource créée automatiquement par Visual Basic.

Utilisez un autre fichier ressource ou recréez le fichier non valide et supprimez l'une des ressources dupliquées.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Une propriété ou un appel à une méthode ne peut utiliser une référence vers un objet privé, que ce soit comme argument ou comme valeur de retour (erreur 98)

Les objets de type Private ne doivent jamais être transmis en dehors d'un projet. Les cas suivants, qui constituent tous des opérations non autorisées, peuvent être à l'origine de cette erreur :

•	Un client a appelé une propriété ou une méthode d'un composant out-of-process et a tenté de transmettre en argument une référence à un objet de type Private. Un client a appelé une propriété ou une méthode d'un composant out-of-process et le composant a tenté de renvoyer une référence à un objet de type Private ou d'attribuer une référence de ce type à un argument ByRef.

•	Un composant out-of-process a appelé une méthode de rappel (callback) pour son client et a tenté de transmettre une référence à un objet de type Private.

•	Un composant out-of-process a tenté de transmettre une référence à un objet de type Private comme argument d'un événement qu'il déclenchait.

•	Un client a tenté d'attribuer une référence d'objet de type Private à un argument ByRef d'un événement qu'il était en train de gérer.

Notez que même si Visual Basic vous interdit de transmettre des références à des objets interprocessus de type Private non visuels, cette erreur n'est, dans certains cas, pas détectée par Visual Basic et ne peut donc pas être évitée. Les objets de type Private ne sont pas conçus pour être utilisés en dehors de votre projet. Si vous les transmettez à un client, la stabilité de votre programme et sa compatibilité avec les versions futures de Visual Basic peuvent être compromises. Si vous êtes obligé de transmettre l'une de vos classes de type Private à un client, donnez à la propriété Instancing une valeur autre que Private.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Affectation à une constante non autorisée

Une constante représente une valeur en lecture seule. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'attribuer une nouvelle valeur à une variable déclarée avec l'instruction Const ou à une constante de bibliothèque de types.

Si vous devez attribuer une nouvelle valeur, déclarez une variable ordinaire du type désiré et affectez-lui la nouvelle valeur. Si vous avez besoin d'une variable avec un jeu de valeurs restreint, déclarez une énumération, à l'aide du mot clé Enum.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'utiliser ParamArray avec des arguments optionnels

Le mot clé ParamArray vous permet de définir des procédures acceptant des listes d'arguments de longueur variable ; un argument Optional est un argument que la procédure appelante peut fournir ou omettre sans générer d'erreur. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez utilisé les mots clé ParamArray et Optional dans la même liste de paramètres.

Supprimez le paramètre Optional ou le paramètre ParamArray ; ces deux mots clé ne peuvent pas être utilisés simultanément dans la même liste de paramètres. L'une ou l'autre de ces techniques peut être utilisée en fonction du type de liste de paramètres souhaité.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Fichier spécifié introuvable

Consultez le message pour obtenir le nom du fichier qui n'a pu être trouvé. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier indiqué dans le message d'erreur est introuvable à l'endroit indiqué.

Vérifiez que le nom du lecteur, le chemin d'accès et le nom de fichier, sont correctement indiqués.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Type de paramètre optionnel incorrect

Les types Visual Basic ne sont pas tous autorisés comme paramètres Optional. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Un paramètre a été défini avec un type de données incorrect.

Vous ne pouvez pas, par exemple, avoir un paramètre Optional de type défini par l'utilisateur. Vous pouvez peut-être arriver au même résultat en utilisant un tableau de type Variant qui permet de stocker des données de différents types.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Modèle incorrect

Une classe dérivée d'un modèle ne peut pas être utilisée comme modèle. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé de créer un composant de modèle, mais en le dérivant d'un modèle.

Vous ne pouvez pas dériver une classe modèle d'un modèle.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Valide seulement dans un module d'objet

Certaines instructions ou constructions Visual Basic sont valides uniquement dans des modules objet (feuilles, modules de classe, etc.). Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'utiliser une instruction ou une construction incorrecte (par exemple, l'instruction Implements, le mot clé WithEvents ou un récepteur d'événements) dans un module qui n'est pas un module de classe.

Placez les instructions qui ont généré l'erreur dans un module objet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La bibliothèque de types ou l'assistant requis n'est pas un projet VBA

Les éléments disponibles dans Visual Basic ne peuvent pas tous être utilisés à la fois en lecture et en écriture. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'écrire dans un complément ou une bibliothèque de types à partir d'un projet Visual Basic.

Vous ne pouvez pas écrire directement dans un complément prédéfini ou une bibliothèque de types dans le cadre d'un projet Visual Basic.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette modification requiert une réinitialisation

Dans la plupart des cas, vous pouvez modifier le code et continuer à l'exécuter à partir de l'endroit où la modification a été effectuée. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La modification que vous avez apportée à votre code nécessite que le code s'exécute de nouveau à partir du point d'initialisation.

Ce cas peut e présenter si vous avez scindé le code d'une procédure et si la ligne d'exécution en cours ne figure plus dans le contexte procédural dans lequel elle se trouvait lors de la suspension de l'exécution.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La traduction a échoué. Consultez le fichier trnslate.log pour des informations complémentaires.
La traduction a échoué. Consultez le fichier trnslate.log pour des informations complémentaires

Les versions actuelles de Visual Basic ne permettent la traduction que dans un souci de compatibilité avec les versions antérieures. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La traduction a échoué de façon inattendue.

La cause la plus courante est la coupure d'une référence de bibliothèque de types. Vous devriez trouver des informations supplémentaires dans le fichier journal de traduction indiqué.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les assistants ne peuvent pas référencer des projets

Un Assistant peut référencer un autre Assistant, mais ne peut pas référencer un projet. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Une référence à un projet a été trouvée pendant la génération de l'Assistant.

Supprimez la référence au projet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur de compilation inattendue

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Une erreur inattendue s'est produite au cours de la compilation qui n'a pas pu être gérée par le programme de compilation.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de gérer les événements pour l'objet spécifié

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Les événements relatifs à cet objet ne peuvent être traités. Ils sont sans doute absents de l'objet, présents mais défectueux, ou désactivés intentionnellement.

Vérifiez l'objet et ses événements dans l'Explorateur d'objets afin d'obtenir des informations complémentaires à leur sujet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Utilisation incorrecte du nom de classe de base

Vous ne pouvez utiliser le nom de la classe de base. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'utiliser le nom de la classe de base sans indiquer clairement que vous souhaitiez accéder au membre par défaut de cette classe.

Mettez le nom de la classe de base entre parenthèses pour indiquer que vous souhaitez accéder au membre par défaut.

•	Vous avez utilisé le nom de la classe de base dans une expression sans indiquer explicitement le membre auquel vous souhaitiez accéder.

Insérez un caractère non significatif (un point d'exclamation, par exemple), entre le nom de la classe de base et le membre concerné.

•	Vous avez utilisé le nom de la classe de base dans une instruction Set comme s'il contenait une référence à la classe.

Utilisez le nom de la classe de base pour extraire une référence à l'aide, par exemple, de GetObject.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Nom d'événement incorrect

Dans les noms de procédures d'événements, le nom de l'objet est relié au nom de l'événement par un trait de soulignement. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez utilisé un trait de soulignement dans le nom de l'événement.

Supprimez le trait de soulignement.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Evénement introuvable

Un événement indiqué dans une instruction RaiseEvent doit correspondre à un événement défini. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez indiqué un nom dans l'instruction RaiseEvent, mais la définition de l'événement est introuvable.

Vérifiez l'orthographe du nom de l'événement.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La chaîne de recherche doit être spécifiée

Pour une recherche dans l'Explorateur d'objets, vous devez entrer une chaîne. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez lancé une recherche dans l'Explorateur d'objets, sans indiquer le texte à rechercher.

Entrez une chaîne de recherche.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'afficher le nom spécifié car il est masqué

Des noms existent dans une bibliothèque de types, mais sont identifiés comme étant masqués. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez indiqué un nom figurant dans la bibliothèque de types, mais ce nom est masqué.

En principe, les membres des bibliothèques de types sont masqués. Pour les afficher, sélectionnez l'option Afficher membres cachés dans le menu contextuel de l'Explorateur d'objets. Vous pouvez alors consulter les informations relatives aux membres.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'accéder au type indiqué car celui-ci se trouve dans la bibliothèque spécifiée, qui n'est pas actuellement référencée

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'indiquer un type dans une bibliothèque qui n'était pas référencée dans le projet.

Affectez une référence à la bibliothèque de types à l'aide de la boîte de dialogue Références.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Enum interne non valide

Tous les types ne sont pas corrects dans une définition d'énumération. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez essayé d'indiquer une chaîne ou un type incorrect comme valeur d'un membre Enum.

L'expression de constante utilisée pour spécifier un membre Enum doit être de type Long ou d'un autre type Enum.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur inattendue

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Une erreur totalement inattendue s'est produite. Redémarrez l'ordinateur.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le projet en cours ne prend pas en charge les fichiers de ce type

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier que vous avez tenté d'ouvrir est un fichier projet non valide ou encore, le fichier projet contient des fonctionnalités non gérées par l'application hôte Visual Basic et l'environnement Visual Basic.

Assurez-vous que le fichier projet que vous voulez ouvrir est correct (c'est-à-dire qu'il a été créé et enregistré dans la même application hôte et dans le même environnement Visual Basic).

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce projet VBA a été créé alors que VBA tournait sur une autre application. Vous devez l'ouvrir depuis l'application dans laquelle il a été créé

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier que vous avez tenté d'ouvrir est un fichier projet créé dans une application hôte différente.

Assurez-vous que le fichier projet que vous voulez ouvrir a été créé et enregistré dans la même application hôte Visual Basic.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les contrôles sans fenêtre ne peuvent pas avoir de menus

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'insérer un menu dans un contrôle sans fenêtre, ce qui n'est pas autorisé.

Pour placer un menu sur un contrôle, choisissez un contrôle associé à une fenêtre.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce contrôle ne peut être utilisé qu'avec des concepteurs 'item'

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le contrôle que vous avez choisi fonctionne seulement avec le concepteur indiqué.

Vous devez choisir un autre contrôle ou un concepteur différent.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce contrôle ne peut être utilisé avec des concepteurs 'item'

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le contrôle que vous avez choisi ne fonctionne pas avec le concepteur indiqué.

Vous devez choisir un autre contrôle ou un concepteur différent.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Concepteur non valide car il utilise des fonctions qui ne sont pas prises en charge par cette version de Visual Basic.
Concepteur non valide car il utilise des fonctions qui ne sont pas prises en charge par cette version de Visual Basic

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le concepteur que vous avez choisi n'est pas pris en charge dans cette version de Visual Basic.

Vous devez utiliser un concepteur différent ou un concepteur conçu pour la version indiquée de Visual Basic.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


'Item' ne peut être ajouté car il est référencé mais n'est utilisé par aucun élément du projet. Pour corriger cela, désactivez 'Supprimer les informations relatives aux contrôles ActiveX inutilisés' dans la boîte de dialogue Options du projet.
'Item' ne peut être ajouté car il est référencé mais n'est utilisé par aucun élément du projet. Pour corriger cela, désactivez 'Supprimer les informations relatives aux contrôles ActiveX inutilisés' dans la boîte de dialogue Options du projet

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le composant indiqué ne peut pas être ajouté car il n'est utilisé par aucun des éléments du projet.

Désactivez la case à cocher 'Supprimer les informations relatives aux contrôles ActiveX inutilisés' de la boîte de dialogue Options du projet que vous ouvrez à partir du menu Projet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de démarrer Internet Explorer

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Un problème inconnu empêche l'exécution d'Internet Explorer.

Essayez de démarrer Internet Explorer seul pour vous assurer qu'il fonctionne correctement.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les concepteurs 'item' s'utilisent uniquement dans les projets de DLL

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le concepteur indiqué doit être utilisé uniquement dans les projets DLL ActiveX.

Essayez de vous servir du concepteur dans un projet DLL ActiveX.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les concepteurs 'item' ne peuvent pas être publics dans les projets EXE ActiveX

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La propriété Instancing du concepteur désigné ne peut pas prendre la valeur Public dans les projets .exe ActiveX.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les concepteurs 'item' doivent être publics et ne peuvent pas être utilisés dans des projets EXE  Standard

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La propriété Instancing du concepteur désigné doit prendre la valeur Public.

Le concepteur ne peut pas être utilisé dans les projets.exe standard.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les concepteurs 'item' ne peuvent pas être privés

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La propriété Instancing du concepteur désigné ne peut pas prendre la valeur Private.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Une ou plusieurs instances de cet objet sont actives. Impossible de le supprimer pour l'instant.
Une ou plusieurs instances de cet objet sont actives. Impossible de le supprimer pour l'instant

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté de supprimer un objet qui est en cours d'exécution.

Fermez toutes les instances de l'objet avant de le supprimer du projet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Ce projet est actuellement référencé par un autre projet et ne peut être fermé

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le projet indiqué que vous avez tenté de fermer a une référence dans un autre projet.

Fermez le projet après avoir supprimé la référence contenue dans l'autre projet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les feuilles MDI ne sont pas autorisées dans un projet multithread. Toute feuille MDI sera supprimée du projet. Pour conserver la feuille MDI, sélectionnez Annuler et modifiez le modèle de thread afin que le nombre max de threads soit défini à 1.
Les feuilles MDI ne sont pas autorisées dans un projet multithread. Toute feuille MDI sera supprimée du projet. Pour conserver la feuille MDI, sélectionnez Annuler et modifiez le modèle de thread afin que le nombre max de threads soit défini à 1

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'ajouter une feuille MDI à un projet multithread.

Pour conserver la feuille MDI, modifiez le modèle de thread afin que le nombre maximum de threads soit défini à 1.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


'Item' a provoqué une violation d'accès. Voulez-vous le supprimer de la liste des compléments disponibles?

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le complément indiqué a provoqué une violation d'accès.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le composant sélectionné n'a pas été confirmé comme étant 'compatible avec la ligne de commande' et peut nécessiter une intervention de l'utilisateur (IU possible).
Le composant sélectionné n'a pas été confirmé comme étant 'compatible avec la ligne de commande' et peut nécessiter une intervention de l'utilisateur (IU possible)

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Compatible avec la ligne de commande' signifie que le complément a été enregistré de manière à indiquer qu'il ne contient aucune interface utilisateur nécessitant l'intervention de l'utilisateur lorsque Visual Basic est appelé via la ligne de commande. Une interface utilisateur peut créer des interférences avec le fonctionnement de procédures inattendues (comme la génération des scripts).

Si vous n'indiquez pas qu'un complément est compatible avec la ligne de commande (même s'il l'est) et qu'un utilisateur sélectionne ce complément, puis Ligne de commande dans la zone Le comportement de chargement, un message d'avertissement s'affiche. Il s'agit d'un simple avertissement destiné à informer l'utilisateur que le complément sélectionné peut contenir des éléments IU. Ces derniers risquent d'apparaître de façon inattendue et de suspendre ainsi le déroulement automatique de leurs scripts pour obtenir des données de l'utilisateur.

Pour indiquer qu'un complément est compatible avec la ligne de commande, définissez-le comme tel (utilisez le concepteur de complément pour cela) ou modifiez manuellement la valeur dans la clé du registre.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Paramètre illégal. Impossible d'écrire un type défini par l'utilisateur.
Paramètre illégal. Impossible d'écrire un type défini par l'utilisateur

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'écrire un type défini par l'utilisateur dans un objet PropertyBag non pris en charge.

Pour résoudre ce problème, écrivez chaque élément du type défini par l'utilisateur dans l'objet PropertyBag.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Paramètre illégal. Impossible d'écrire un objet parce qu'il ne gère pas la persistance.
Paramètre illégal. Impossible d'écrire un objet parce qu'il ne gère pas la persistance

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'écrire un type défini par l'utilisateur dans un objet PropertyBag mais l'objet ne gère pas une des interfaces de persistance ActiveX.

Pour résoudre ce problème, vous devez avoir accès au code pour cet objet. Il doit s'agir d'un objet créé à l'aide de Visual Basic et la valeur de la propriété Persistable doit être True. Il est nécessaire également que la classe ait la valeur Public ou Public Creatable et fasse partie d'un projet DLL ActiveX, EXE ActiveX ou UserControl.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Nom de propriété incorrect

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le nom que vous avez saisi pour la propriété est incorrect. En d'autres termes, le nom est déjà utilisé ou réservé à l'utilisation du système ou encore contient des caractères non autorisés.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


'Item' est un composant à une seule thread non prévu pour les projets multithread. Remplacez le modèle de thread par 'item' ou demandez une nouvelle version au concepteur du composant.
'Item' est un composant à une seule thread non prévu pour les projets multithread. Remplacez le modèle de thread par 'item' ou demandez une nouvelle version au concepteur du composant

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous tentez d'utiliser un composant à une seule thread dans un projet multithread.

Modifiez le modèle de thread ou demandez une nouvelle version au concepteur du composant.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible de charger le contrôle 'item1' à partir de 'item2'. Votre version de 'item2' est peut-être obsolète. Vérifiez que vous utilisez la version du contrôle fournie avec votre application.
Impossible de charger le contrôle 'item1' à partir de 'item2'. Votre version de 'item2' est peut-être obsolète. Vérifiez que vous utilisez la version du contrôle fournie avec votre application

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous utilisez une version obsolète.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Échec d'activation du contrôle 'item 1'. Ce contrôle est peut-être incompatible avec votre application. Assurez-vous d'utiliser la version du contrôle qui a été fournie avec votre application.

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	L'application n'a pas réussi à activer le contrôle indiqué car il est incompatible avec l'application. Ceci se produit si la version du contrôle actuellement installée sur votre ordinateur est différente de celle fournie avec votre application.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


L'information de type du Concepteur ActiveX ne correspond pas à celle enregistrée. Chargement impossible.
L'information de type du Concepteur ActiveX ne correspond pas à celle enregistrée. Chargement impossible

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le projet n'a pas pu être chargé car l'information de type du Concepteur ActiveX ne correspond pas à celle enregistrée. Un fichier est peu-être endommagé.

Essayez de charger une copie de sauvegarde du projet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette interaction entre des composants d'environnement de conception et compilés n'est pas gérée.
Cette interaction entre des composants d'environnement de conception et compilés n'est pas gérée

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Ceci se produit lorsque deux composants sont exécutés simultanément et qu'un composant, (comme une feuille ou un objet UserControl) préalablement compilé, est exécuté au moyen de msvbvm60.dll et que l'autre composant est exécuté dans l'environnement de création. Tel est le cas, par exemple, lorsqu'un UserControl compilé est exécuté sur une feuille dans l'IDE.

Le cas se produit lorsque la structure de la mémoire interne d'un élément en cours d'exécution dans l'IDE et celle d'un objet compilé sont légèrement différentes et pas toujours compatibles. En revanche, cela ne devrait généralement pas poser de problèmes, sauf si transférez une instance d'un objet UserControl (Me) vers une feuille ou un autre composant hôte en utilisant la procédure Property ou Sub.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'imprimer l'image de feuille réduite

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	L'image de feuille ne peut pas être imprimée lorsqu'elle est affichée sous forme réduite.

Agrandissez l'image et relancez l'impression.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Erreur inattendue dans le générateur de code ou de lien.
Erreur inattendue dans le générateur de code ou de lien

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le générateur de code ou de lien a provoqué une erreur inattendue.

Cliquez sur Oui pour afficher les erreurs dans le Bloc-notes.

Les causes les plus fréquentes de cette erreur sont liées à un problème relatif au disque, notamment un espace disque insuffisant.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les numéros de version doivent se trouver dans la plage 0 à 9999.
Les numéros de version doivent se trouver dans la plage 0 à 9999

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'attribuer un nombre négatif, un caractère non numérique ou un nombre supérieur à 9999 au composant principal, secondaire ou de révision du numéro de version pour un projet, dans l'onglet Créer de la boîte de dialogue Propriétés du projet. Utilisez un nombre compris entre 0 et 9999 inclus.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Adresse de base incorrecte

Vous avez tapé une adresse de base incorrecte. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez spécifié une adresse de base incorrecte dans l'onglet Compilation de la boîte de dialogue Propriétés du projet.

Une adresse de base correcte doit être un multiple de 64K, supérieur à 64K et inférieur à &H7FFF0000.

Cette erreur se produit dans les projets DLL ActiveX ou Contrôle ActiveX.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Aucun composant public ne peut être créé. Appuyez sur F1 pour plus d'informations.
Aucun composant public ne peut être créé. Appuyez sur F1 pour plus d'informations

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Votre projet doit posséder au moins un composant public pouvant être créer.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le fichier 'item' ne peut être enregistré en tant que composant ActiveX.
Le fichier 'item' ne peut être enregistré en tant que composant ActiveX

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'enregistrer un contrôle ou une bibliothèque de liaisons dynamiques (.dll) qui n'est pas un composant ActiveX correct. Assurez-vous que vous disposez du contrôle ou du .dll correct et demandez plus d'informations au concepteur du composant ActiveX.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le fichier projet 'item1' contient une touche incorrecte 'item2'

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier projet Visual Basic (.vbp) contient une clé que le programme Visual Basic ne reconnaît pas. Le fichier est peut-être endommagé.

Installez la copie de sauvegarde du fichier spécifié ou modifiez le fichier à l'aide d'un éditeur de texte afin de corriger l'erreur.

Avertissement   la modification d'un fichier Visual Basic dans un éditeur autre que Visual Basic risque d'endommager le fichier. Par conséquent, ne recourez à un autre éditeur que si vous maîtrisez bien ce programme.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'afficher l'aide

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Si vous exécutez WinHelp, le programme d'aide de Windows n'est pas disponible. Si le fichier Winhelp.exe est installé sur votre machine, assurez-vous qu'il est mentionné dans le chemin. S'il ne figure pas sur votre machine, lancez le programme d'installation de Microsoft Windows 9x ou de Microsoft Windows NT.

•	Si vous exécutez HTMLHelp et si le fichier HH.exe figure sur votre machine, assurez-vous qu'il est mentionné dans le chemin d'accès. S'il ne figure pas sur votre ordinateur, vous devez l'installer pour pouvoir consulter l'aide.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La classe n'est pas enregistrée. 'item 1'

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le module de classe indiqué n'est pas enregistré.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


La chaîne de l'identificateur de ressource 'item' est trop longue. Elle ne doit pas dépasser 39 caractères.
La chaîne de l'identificateur de ressource 'item' est trop longue. Elle ne doit pas dépasser 39 caractères

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La chaîne ProgID du composant ActiveX ne peut pas dépasser 39 caractères. Le ProgID est créé par concaténation du nom du projet et du nom du module de classe.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le projet <nom> a été modifié. Voulez-vous enregistrer les modifications maintenant ?

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La valeur d'une propriété ou une instruction du code a été modifiée pour un ou plusieurs fichiers du projet ; les modifications ne sont pas enregistrées. Pour éviter de perdre ces changements, enregistrez-les maintenant avant de charger un autre projet.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le comportement de chargement de 'item' n'a pas été mis à jour en raison des autorisations actuelles du Registre.
Le comportement de chargement de 'item' n'a pas été mis à jour en raison des autorisations actuelles du Registre

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Visual Basic ne peut pas charger le complément que vous avez essayé de sélectionner dans la liste Compléments disponibles de la boîte de dialogue Gestionnaire de compléments. Cette impossibilité est due au fait que le complément n'a pas été enregistré correctement ou ne figure plus dans le registre système.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le composant n'est pas enregistré correctement.
Le composant n'est pas enregistré correctement

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le composant indiqué n'a pas été enregistré correctement.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le composant est introuvable à l'emplacement spécifié.
Le composant est introuvable à l'emplacement spécifié

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier exécutable (.exe) ou le fichier de bibliothèque de liaisons dynamiques (.dll) nécessaire n'a pas été trouvé.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le composant n'a pas réussi à créer l'objet demandé.
Le composant n'a pas réussi à créer l'objet demandé

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier exécutable (exe) du composant ActiveX n'a pas pu être exécuté correctement.

Les informations contenues dans le registre sont peut-être erronées.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le composant 'item' ou une de ses dépendances n'est pas correctement enregistré: un fichier est absent ou incorrect.
Le composant 'item' ou une de ses dépendances n'est pas correctement enregistré: un fichier est absent ou incorrect

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le fichier indiqué a été déplacé ou supprimé.

•	Le fichier indiqué a été enregistré de façon incorrecte.

Réinstallez le fichier spécifié pour l'enregistrer correctement. Consultez le concepteur de l'objet pour plus d'informations.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Cette fonctionnalité nécessite au moins Internet Explorer 'item'. Vous pouvez obtenir la dernière version à l'adresse suivante : www.microsoft.com

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	La version indiquée d'Internet Explorer est nécessaire pour l'exécution de cette fonctionnalité.

Consultez le site Internet à l'adresse http://www.microsoft.com/france pour télécharger la version la plus récente d'Internet Explorer.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Une feuille ne peut être déplacée ou dimensionnée lorsqu'elle est réduite ou agrandie.
Une feuille ne peut être déplacée ou dimensionnée lorsqu'elle est réduite ou agrandie

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté de déplacer ou de redimensionner une feuille réduite ou agrandie, ce qui n'est pas autorisé.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Impossible d'afficher une feuille non modale lorsqu'une feuille modale est affichée.
Impossible d'afficher une feuille non modale lorsqu'une feuille modale est affichée

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'afficher une feuille non modale avant de fermer une feuille modale.

Fermez d'abord la feuille modale.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Les opérations Redim, Erase et d'affectation à un Variant qui contient un tableau dont l'élément est un objet With sont impossibles

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Vous avez tenté d'effectuer une opération ReDim ou Erase ou encore d'affecter à un Variant une variable dont un élément est un objet With.

Voici un exemple de code générant cette erreur :

Type Test

Name as Integer

End Type

Sub Main()

Dim c(0) As Test

Dim e

e = c

With e(0)

ReDim e(1)

End With

End Sub

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Le projet ne peut être affiché.
Le projet ne peut être affiché

Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

•	Le projet que vous avez tenté d'afficher est verrouillé.

Reportez-vous à la documentation de l'application hôte pour plus d'informations.

Pour plus d'informations, sélectionnez l'élément concerné, puis appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).


Activate, Deactivate, événements, exemple

Le code suivant utilise deux objets UserForm : UserForm1 et UserForm2. Copiez ces procédures dans le module de UserForm1 puis ajoutez UserForm2. La légende de UserForm1 est créée dans sa procédure d'événement Activate. Lorsque l'utilisateur clique sur la zone client de UserForm1, UserForm2 se charge et s'affiche, déclenchant l'événement Deactivate de UserForm1 et modifiant leurs légendes.

' Événement Activate pour UserForm1

Private Sub UserForm_Activate()

    UserForm1.Caption = "Cliquez sur ma zone client"

End Sub

' Événement Click pour UserForm1

Private Sub UserForm_Click()

    Load UserForm2

    UserForm2.StartUpPosition = 3

    UserForm2.Show

End Sub

' Événement Deactivate pour UserForm1

Private Sub UserForm_Deactivate()

UserForm1.Caption = "Je viens de perdre le focus !"

UserForm2.Caption = "Le focus vient de quitter UserForm1 et de me parvenir"

End Sub


Initialize, événement, exemple

Dans l'exemple suivant, un programme contient deux objets UserForm. Dans l'événement Initialize de l'objet UserForm1, l'objet UserForm2 est chargé et affiché. Lorsque l'utilisateur clique sur UserForm2, cet objet est masqué et UserForm1 apparaît. Un clic sur UserForm1 entraîne l'affichage de UserForm2.

' Procédure d'événement Initialize pour UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Événement Click pour UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Événement Click pour UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


QueryClose, événement, exemple

Le code suivant force l'utilisateur à cliquer sur la zone client de UserForm pour la refermer. Si l'utilisateur tente d'utiliser la boîte Fermeture de la barre de titre, le paramètre Cancel prend une valeur différente de zéro, empêchant ainsi l'arrêt. Cependant, si l'utilisateur a cliqué sur la zone client, CloseMode prend la valeur 1 et l'événement Unload Me s'accomplit.

Private Sub UserForm_Activate()

    UserForm1.Caption = "Cliquez sur moi pour me supprimer!"

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

' Empêche l'utilisateur de fermer avec le bouton

' Fermer de la barre de titre.

If CloseMode <> 1 Then Cancel = 1

UserForm1.Caption = "Le bouton Fermer ne " & _

"fonctionne pas! Cliquez sur moi!"

End Sub


Resize, événement, exemple

L'exemple suivant utilise les événements Activate et Click pour illustrer le déclenchement de l'événement Resize de l'objet UserForm. Dès que l'utilisateur clique sur la zone client de la feuille, celle-ci s'agrandit ou rétrécit et la nouvelle hauteur s'affiche dans la barre de titre. Notez que la propriété Tag est utilisée pour consigner la hauteur initiale de l'objet UserForm.

' Événement Activate pour UserForm1

Private Sub UserForm_Activate()

UserForm1.Caption = "Cliquez sur moi pour m'agrandir!"

Tag = Height	' Enregistre la hauteur initiale.

End Sub

' Événement Click pour UserForm1

Private Sub UserForm_Click()

Dim NewHeight As Single

NewHeight = Height

' Si la feuille est petite: agrandissement.

If NewHeight = Val(Tag) Then

Height = Val(Tag) * 2

Else

' Si la feuille est grande: réduction.

Height = Val(Tag)

End If

End Sub

' Événement Resize pour UserForm1

Private Sub UserForm_Resize()

UserForm1.Caption = "Nouvelle hauteur: " & _

Height &  "  " & "Cliquez pour me redimensionner!"

End Sub


Terminate, événement, exemple

Avec les procédures d'événement suivantes, un objet UserForm produit un bip sonore pendant quelques secondes après que l'utilisateur a cliqué sur la zone client pour supprimer la feuille.

Private Sub UserForm_Activate()

    UserForm1.Caption = "Cliquez sur moi pour me supprimer!"

End Sub

Private Sub UserForm_Click()

  Unload Me

End Sub

Private Sub UserForm_Terminate()

    Dim Count As Integer

    For Count = 1 To 100

        Beep

    Next

End Sub


Activate, Deactivate, événements

L'événement Activate se produit lorsqu'une feuille devient la fenêtre active. L'événement Deactivate se produit lorsqu'une feuille cesse d'être la fenêtre active.

Syntaxe

Private Sub object_Activate()

Private Sub object_Deactivate()

L'espace réservé object représente une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application".

Remarques

Une feuille peut être activée en utilisant la méthode Show dans le code.

L'événement Activate ne peut se produire que lorsqu'une feuille est visible. Un objet UserForm chargé avec Load n'est visible que si vous utilisez la méthode Show.

Les événements Activate et Deactivate ne se produisent que lorsque vous déplacez le focus à l'intérieur d'une application. Placer ou déplacer le focus sur ou hors d'un objet depuis une autre application ne déclenche ni l'un ni l'autre de ces événements.

L'événement Deactivate ne se produit pas lors du déchargement d'une feuille.


Initialize, événement

Se produit lorsqu'une feuille est chargée, avant que celle ne s'affiche.

Syntaxe

Private Sub object_Initialize()

L'espace réservé object représente une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application".

Remarques

L'événement Initialize est ordinairement utilisé pour préparer une application ou un objet UserForm avant son utilisation. Les variables reçoivent des valeurs initiales et les contrôles peuvent être déplacés ou redimensionnés pour recevoir les données d'initialisation.


QueryClose, événement

Se produit avant la fermeture d'un objet UserForm.

Syntaxe

Private Sub UserForm_QueryClose(cancel As Integer, closemode As Integer)

La syntaxe de l'événement QueryClose comprend les éléments suivants :

Élément	Description
cancel	Nombre entier. Affecter à cet argument une valeur différente de 0 interrompt l'événement QueryClose dans toutes les feuilles utilisateur chargées et empêche l'objet UserForm et l'application de se fermer.
closemode	Valeur ou constante indiquant la cause de l'événement QueryClose.
Valeurs renvoyées

L'argument closemode renvoie les valeurs suivantes :

Constante	Valeur	Description
vbFormControlMenu	0	L'utilisateur a choisi la commande Fermeture dans le menu Système placé sur l'objet UserForm.
vbFormCode	1	L'instruction Unload est appelée à partir du code.
VbAppWindows	2	La session courante dans l'environnement d'exploitation Windows est en train de s'achever. (Visual Basic 5.0 uniquement.)
VbAppTaskManager	3	Le Gestionnaire de tâches de Windows est en train de fermer l'application. (Visual Basic 5.0 uniquement.)
Ces constantes sont répertoriées dans la bibliothèque d'objets de Visual Basic pour Applications, dans l'Explorateur d'objets. Notez que vbFormMDIForm est également spécifié dans l'Explorateur d'objets bien que n'étant pas géré pour le moment.

Remarques

Cet événement est ordinairement utilisé pour s'assurer qu'il n'existe plus aucune tâche en cours d'exécution dans les feuilles utilisateur d'une application avant que celle-ci ne se referme. Par exemple, si un utilisateur n'a pas enregistré les nouvelles données dans un objet UserForm, l'application peut demander à l'utilisateur de les enregistrer.

Lorsqu'une application se ferme, vous pouvez utiliser la procédure d'événement QueryClose pour affecter à la propriété Cancel la valeur True, interrompant ainsi le processus de fermeture.


Resize, événement

Se produit lorsqu'une feuille utilisateur est redimensionnée.

Syntaxe

Private Sub UserForm_Resize()

Remarques

Utilisez la procédure d'événement Resize pour déplacer ou pour redimensionner des contrôles lorsque l'objet parent UserForm est redimensionné. Vous pouvez également utiliser cette procédure d'événement pour recalculer des variables ou des propriétés.


Terminate, événement

Se produit lorsque toutes les références à une instance d'un objet sont supprimées de la mémoire en affectant à toutes les variables se référant à l'objet en question la valeur Nothing, ou bien lorsque la dernière référence à l'objet sort de la portée.

Syntaxe

Private Sub object_Terminate( )

L'espace réservé object représente une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application".

Remarques

L'événement Terminate se produit après le déchargement de l'objet. L'événement Terminate ne se déclenche pas si les instances de l'objet UserForm ou que sa classe sont supprimés de la mémoire parce que l'application s'est anormalement terminée. Par exemple, si votre application appelle l'instruction End avant de supprimer de la mémoire toutes les instances existantes de la classe ou bien l'objet UserForm, l'événement Terminate ne se déclenche ni pour cette classe ni pour cet objet.


Hide, méthode, exemple

Nous supposons dans l'exemple suivant qu'un programme comporte deux objets UserForm. Dans l'événement Initialize de l'objet UserForm1, l'objet UserForm2 est chargé et affiché. Lorsque l'utilisateur clique sur l'objet UserForm2, celui-ci est masqué et l'objet UserForm1 apparaît. Si l'utilisateur clique sur l'objet UserForm1, l'objet UserForm2 est réaffiché.

' Procédure d'événement Initialize pour UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Événement Click pour UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Événement Click pour UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Load, instruction, exemple

Dans l'exemple suivant, l'objet UserForm2 est chargé pendant l'événement Initialize de l'objet UserForm1. Si l'utilisateur clique ensuite sur l'objet UserForm2, l'objet UserForm1 est affiché.

' Procédure d'événement Initialize pour UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Événement Click pour UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Événement Click pour UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


PrintForm, méthode, exemple

Dans l'exemple suivant, la zone client de la feuille est imprimée lorsque l'utilisateur clique sur la feuille.

' Événement Click pour UserForm1

Private Sub UserForm_Click()

UserForm1.PrintForm

End Sub


Show, méthode, exemple

Nous supposons dans l'exemple suivant qu'un programme comporte deux objets UserForm. Dans l'événement Initialize de l'objet UserForm1, l'objet UserForm2 est chargé et affiché. Lorsque l'utilisateur clique sur l'objet UserForm2, celui-ci est masqué et l'objet UserForm1 apparaît. Lorsque l'utilisateur clique sur l'objet UserForm1, l'objet UserForm2 est réaffiché.

' Procédure d'événement Initialize pour UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Événement Click pour UserForm2

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Événement Click pour UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub


Unload, instruction, exemple

Nous supposons dans l'exemple suivant qu'un programme comporte deux objets UserForm. Dans l'événement Initialize de l'objet UserForm1, l'objet UserForm2 est chargé et affiché. Lorsque l'utilisateur clique sur l'objet UserForm2, celui-ci est déchargé et l'objet UserForm1 apparaît. Lorsque l'utilisateur clique sur l'objet UserForm1, il est déchargé à son tour.

' Procédure d'événement Initialize pour UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Événement Click pour UserForm2

Private Sub UserForm_Click()

Unload UserForm2

End Sub

' Événement Click pour UserForm1

Private Sub UserForm_Click()

Unload UserForm1

End Sub


WhatsThisMode, méthode, exemple

L'exemple suivant transforme le pointeur de la souris en Qu'est-ce que c'est (point d'interrogation) lorsque l'utilisateur clique sur l'objet UserForm. Si aucune des deux propriétés WhatsThisHelp ou WhatsThisButton n'a la valeur True dans la fenêtre Propriétés, l'appel suivant n'a aucun effet.

Private Sub UserForm_Click()

' Transforme le pointeur de la souris en point

' d'interrogation (Qu'est-ce que c'est).

WhatsThisMode

End Sub


Hide, méthode

Masque un objet sans le décharger.

Syntaxe

object.Hide

L'espace réservé object représente une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application". Si object n'est pas spécifié, l'objet UserForm sur lequel se trouve le focus est supposé lui correspondre.

Remarques

Lorsqu'un objet est masqué, il est retiré de l'écran et sa propriété Visible prend la valeur False. Les contrôles d'un objet masqué ne sont pas accessibles à l'utilisateur mais restent accessibles à l'application en cours par voie de programmation, aux autres processus susceptibles de communiquer avec l'application par le biais de Automation, ainsi que, sous Windows, aux événements du contrôle Timer.

Lorsqu'un objet UserForm est masqué, l'utilisateur n'a plus aucune interaction avec l'application tant que le code contenu dans la procédure d'événement ayant conduit l'objet UserForm à se masquer ne s'est pas intégralement terminé.

Si l'objet UserForm n'est pas chargé lors de l'appel de la méthode Hide, celle-ci charge l'objet en question mais ne l'affiche pas.


Load, instruction

Charge un objet sans l'afficher.

Syntaxe

Load object

L'espace réservé object représente une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application".

Remarques

Lorsqu'un objet est chargé, il se place en mémoire mais n'est pas visible. Utilisez la méthode Show pour rendre cet objet visible. Tant qu'un objet n'est pas visible, l'utilisateur n'a aucune interaction avec lui. Toutefois, l'objet peut être manipulé par voie de programmation par le biais de sa procédure d'événement Initialize.


PrintForm, méthode

Envoie à l'imprimante une image bit par bit d'un objet UserForm.

Syntaxe

object.PrintForm

L'espace réservé object représente une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application". Si object n'est pas spécifié, l'objet UserForm sur lequel se trouve le focus est supposé lui correspondre.

Remarques

PrintForm imprime tous les objets et les images bitmap visibles de l'objet UserForm. PrintForm imprime également les graphiques ajoutés à un objet UserForm.

L'imprimante utilisée par la méthode PrintForm est déterminée par les paramètres du Panneau de configuration du système d'exploitation.


Show, méthode

Affiche un objet UserForm.

Syntaxe

[object.]Show modal

La syntaxe de la méthode Show comprend les éléments suivants :

Élément	Description
object	L'espace réservé facultatif object est une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application". Si object n'est pas spécifié, l'objet UserForm associé avec le module UserForm actif est supposé lui correspondre.
modal	Valeur booléenne facultative qui détermine si l'objet UserForm est modal ou pas.
Valeurs

Les valeurs pour modal sont :

Constante	Valeur	Description
vbModal	1	UserForm est modal. Valeur par défaut.
vbModeless	0	UserForm n'est pas modal.
Remarques

Si l'objet spécifié n'est pas chargé lors de l'appel de la méthode Show, Visual Basic le charge automatiquement.

Note   Dans Microsoft Office 97, si un objet UserForm est défini de telle sorte qu'il s'affiche sans intervention de l'utilisateur (objet non modal), une erreur se produit au moment de l'exécution. Les objets UserForms d'Office 97 sont toujours de forme modale.

Lorsqu'un objet UserForm n'est pas modal, le code suivant est exécuté dès qu'il apparait. Les feuilles non modales n'apparaissent pas dans la barre des tâches et ne figurent pas dans l'ordre de l'onglet de la fenêtre.

Note   Vous risquez de perdre les données associées à un objet UserForm non modal si vous apportez une modification au projet UserForm à l'origine de la recompilation, par exemple, lorsque vous supprimez un module de code.

Un objet UserForm est toujours modal, il en résulte que l'utilisateur doit toujours répondre avant d'utiliser une autre partie de l'application. Aucun autre code ne s'exécutera tant que l'objet UserForm ne sera pas masqué ou déchargé. Bien que les autres feuilles de l'application soient désactivées pendant l'affichage d'un objet UserForm, les autres applications ne le sont pas.


Unload, instruction

Supprime un objet de la mémoire.

Syntaxe

Unload object

L'espace réservé object est une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application".

Remarques

Lorsqu'un objet est déchargé, il est supprimé de la mémoire et toute la mémoire qui lui était associée est libérée. Tant qu'il n'aura pas de nouveau été placé en mémoire par l'instruction Load, l'utilisateur n'aura aucune interaction avec cet objet ni ne pourra le manipuler par voie de programmation.


WhatsThisMode, méthode

Transforme le pointeur de la souris en pointeur Qu'est-ce-que c'est et prépare l'application à afficher l'aide relative à un objet sélectionné. Cette méthode existe sur le Macintosh, mais ne possède pas de fonctionnalité pointeur.

Syntaxe

object.WhatsThisMode

L'espace réservé object représente une expression d'objet qui prend la valeur d'un objet figurant dans la rubrique "Application". Si object n'est pas spécifié, l'objet UserForm sur lequel se trouve le focus est supposé lui correspondre.

Remarques

L'exécution de la méthode WhatsThisMode place l'application dans le même état que celui obtenu quand l'utilisateur clique sur le bouton Qu'est-ce que c'est de la barre de titre. Le pointeur de la souris se transforme en pointeur Qu'est-ce que c'est. Lorsque l'utilisateur clique sur un objet, la propriété WhatsThisHelpID de l'objet sélectionné est utilisée pour appeler l'aide contextuelle.


UserForm, objet et UserForms, collection

Un objet UserForm est une fenêtre ou une boîte de dialogue entrant dans la composition d'une interface utilisateur.

La collection UserForms est l'ensemble des objets UserForm chargés dans une application. La collection UserForms possède une propriété Count et Item, ainsi qu'une méthode Add. La propriété Count indique le nombre d'éléments de la collection et la propriété Item (membre par défaut) un membre de collection spécifique. Quant à la méthode Add, elle permet de placer un nouvel élément UserForm dans la collection.

Syntaxe

UserForm

UserForms[.Item](index)

L'espace réservé index représente un entier compris entre 0 et UserForms.Count – 1. La propriété Item est le membre par défaut de la collection UserForms ; il n'est donc pas nécessaire de la spécifier.

Remarques

Vous pouvez utiliser la collection UserForms pour parcourir toutes les feuilles utilisateur chargées d'une application. Elle permet d'identifier une variable globale intrinsèque appelée UserForms. Vous pouvez passer UserForms(index) à une fonction dont l'argument est indiqué en tant que classe UserForm.

Les feuilles utilisateur sont associées à des propriétés indiquant leur position, leurs dimensions, leur couleur, ainsi que certains aspects de leur comportement.

Les feuilles utilisateur peuvent répondre à des événements provoqués par un utilisateur ou déclenchés par le système. Vous pouvez, par exemple, écrire une ligne de code dans la procédure d'événement Initialize de l'objet UserForm afin d'initialiser des variables de niveau de module avant l'affichage de l'objet UserForm.

Parallèlement aux propriétés et aux événements, vous pouvez utiliser des méthodes pour manipuler les feuilles utilisateur dans votre code. Il est ainsi possible d'employer la méthode Move afin de modifier l'emplacement et les dimensions d'un objet UserForm.

Lors de la création des feuilles utilisateur, attribuez une valeur à la propriété BorderStyle pour définir les bordures et à la propriété Caption pour placer un texte sur la barre de titre. Dans le code, vous pouvez également recourir aux méthodes Hide et Show afin de rendre un objet UserForm visible ou invisible au moment de l'exécution.

UserForm est un type de données Object. Vous pouvez déclarer des variables en leur attribuant le type UserForm avant de les associer à une instance dont le type UserForm a été déclaré au moment de la création. De même, vous pouvez passer un argument à une procédure en tant que type UserForm. Vous pouvez créer plusieurs instances des feuilles utilisateur dans le code en utilisant le mot clé New dans les instructions Dim, Set et Static.

Il est possible d'accéder à la collection des contrôles d'un objet UserForm à l'aide de la collection Controls. Pour masquer, par exemple, tous les contrôles d'un objet UserForm, écrivez une ligne de code sur le modèle suivant :

For Each Control in UserForm1.Controls

Control.Visible = False

Next Control


StartUpPosition, propriété, exemple

L'exemple suivant utilise l'instruction Load et la méthode Show dans l'événement Click de l'objet UserForm1 pour charger l'objet UserForm2 avec la propriété StartUpPosition définie à 3 (position par défaut prévue par Windows). La méthode Show rend ensuite visible l'objet UserForm2.

Private Sub UserForm_Click()

Load UserForm2

UserForm2.StartUpPosition = 3

UserForm2.Show

End Sub


StartUpPosition, propriété

Renvoie ou définit une valeur indiquant la position d'un objet UserForm lors de sa première apparition.

La propriété StartUpPosition peut prendre l'une des quatre valeurs suivantes :

Valeur	Paramètre	Description
Manual	0	Aucune valeur initiale n'est indiquée.
CenterOwner	1	Centre l'objet UserForm au sein de l'élément auquel il appartient.
CenterScreen	2	Centre l'objet par rapport à l'écran.
WindowsDefault	3	Place l'objet dans l'angle supérieur gauche de l'écran.
Remarques

Vous pouvez définir la propriété StartUpPosition par programmation ou depuis la fenêtre Propriétés.


WhatsThisButton, propriété

Renvoie une valeur de type Boolean qui détermine si le bouton d'aide Qu'est-ce que c'est apparaît sur la barre de titre d'un objet UserForm. En lecture seule au moment de l'exécution.  Cette propriété ne s'applique pas au Macintosh.

Remarques

La propriété WhatsThisButton peut prendre les valeurs suivantes :

Valeur	Description
True	Active l'affichage du bouton d'aide Qu'est-ce que c'est.
False	(Valeur par défaut) Désactive l'affichage du bouton d'aide Qu'est-ce que c'est.
Remarques

La propriété WhatsThisHelp doit avoir la valeur True pour que la propriété WhatsThisButton puisse prendre la valeur True.


WhatsThisHelp, propriété

Renvoie une valeur de type Boolean qui détermine si l'aide contextuelle utilise la fenêtre automatique fournie par l'aide de Windows 95 ou la fenêtre d'aide principale. En lecture seule au moment de l'exécution.  Cette propriété ne s'applique pas au Macintosh.

Remarques

La propriété WhatsThisHelp peut prendre les valeurs suivantes :

Valeur	Description
True	L'application utilise l'une des techniques d'accès à l'aide en ligne de type "Qu'est-ce que c'est" pour lancer l'aide Windows et charge la rubrique indiquée dans la propriété WhatsThisHelpID.
False	(Valeur par défaut) L'application utilise la touche F1 pour lancer l'aide Windows et charge la rubrique indiquée dans la propriété HelpContextID.
Remarques

Vous disposez de deux techniques d'accès pour fournir une aide de type "Qu'est-ce que c'est" dans une application. Dans tous les cas de figure, il faut que la propriété WhatsThisHelp ait la valeur True.

•	Ajout d'un bouton Qu'est-ce que c'est sur la barre de titre de l'objet UserForm à l'aide de la propriété WhatsThisButton. Lorsque vous cliquez sur ce bouton, le pointeur de la souris se transforme en point d'interrogation accompagné d'une flèche. La rubrique qui apparaît est désignée par la propriété WhatsThisHelpID du contrôle sur lequel l'utilisateur a cliqué.

•	Appel de la méthode WhatsThisMode d'un objet UserForm. Vous obtenez le même résultat que si vous cliquiez sur le bouton d'aide Qu'est-ce que c'est, mais aucun bouton n'est utilisé ici. Vous pouvez par exemple invoquer cette méthode à l'aide d'une commande de menu dans la barre de menu de l'application.


ShowModal, propriété

Définit un objet UserForm indiquant que son affichage est modal ou pas. En lecture seule au moment de l'exécution.

Remarques

La propriété ShowModal peut prendre les valeurs suivantes :

Valeur	Description
True	(Valeur par défaut) L'objet UserForm est modal.
False	L'objet UserForm est non modal.
Remarques

Lorsqu'un objet UserForm est modal, l'utilisateur doit fournir des informations ou fermer l'objet UserForm pour pouvoir utiliser toute autre partie de l'application. Aucun code suivant n'est exécuté tant que l'objet UserForm est masqué ou déchargé. Bien que d'autres feuilles de l'application soient désactivées lorsqu'un objet UserForm est affiché, les autres applications ne le sont pas.

Lorsqu'un objet UserForm n'est pas modal, l'utilisateur peut afficher d'autres feuilles ou fenêtres sans fermer cet objet.

Les feuilles non modales ne sont pas affichées dans la barre des tâches et ne figurent pas dans l'ordre de tabulation de la fenêtre.

Note   Si vous tentez d'ouvrir un objet UserForm qui possède la propriété ShowModal dans Microsoft Office 97, une erreur au moment de l'exécution est générée car Office 97 affiche uniquement les objets UserForm de type modal. Office 97 ignore la propriété ShowModal et affiche l'objet de façon modale.


RightToLeft, propriété

Renvoie une valeur de type Boolean indiquant le sens d'affichage du texte et contrôle l'apparence visuelle sur un système bidirectionnel.

Remarques

La propriété RightToLeft peut prendre les valeurs suivantes :

Valeur	Description
True	Le contrôle est exécuté sur une plate-forme bidirectionnelle, telle que la version arabe ou hébraïque de Windows 95, et le texte est lu de droite à gauche. Le contrôle doit modifier son comportement : il place ainsi ses barres de défilement verticales à gauche du texte ou d'une zone de liste et les étiquettes à droite des champ de texte, etc.
False	Le contrôle se comporte comme s'il était exécuté sur une plate-forme non bidirectionnelle, comme la version anglaise de Windows 95, et le texte est lu de gauche à droite. Si le conteneur n'ajoute pas cette propriété ambiante, la valeur False est définie par défaut.
La propriété RightToLeft contient des informations ambiantes issues de l'objet Userform ; celles-ci suggèrent un comportement aux contrôles inclus dans cet objet. Cette propriété prend une valeur de type Boolean indiquant le sens d'affichage du texte et contrôle l'apparence visuelle sur un système bidirectionnel. La valeur par défaut est False.


Mot clé introuvable

Le mot clé que vous avez sélectionné ne figure pas dans l'aide de Visual Basic. Vérifiez que l'orthographe du mot est correcte et que vous n'avez pas sélectionné trop de texte, ou au contraire pas assez. Vous avez peut-être demandé de l'aide sur un terme qui n'est pas un mot clé Visual Basic.

Le mot clé sur lequel vous souhaitez obtenir des informations figure éventuellement dans une bibliothèque d'objets non référencée. Assurez-vous que les références aux bibliothèques d'objets sont correctement définies pour tous les objets de votre code.

La meilleure méthode pour obtenir des informations sur un mot clé consiste à placer le point d'insertion sur ce dernier et à appuyer sur la touche F1. Il n'est pas nécessaire de sélectionner le mot clé. En outre, si vous sélectionnez une partie du mot clé ou même plusieurs mots le composant, le système d'aide risque de ne pas trouver les informations recherchées.

La rubrique consacrée à la propriété Value apparaît lorsque vous appuyez sur la touche F1 et que le point d'insertion se trouve entre le « a » et le « l » du mot clé Value, comme indiqué dans l'exemple suivant.

Worksheets(1).Range ("A2").value=3.14159

Pour utiliser la fonction de recherche intégrée de l'Aide, cliquez sur Aide de Microsoft Visual Basic dans le menu d'aide (?).


Collection (Explorateur d'objets)

Le module Collection contient des procédures permettant d'effectuerdes opérations surl'objet Collection. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Collection'.

2.	Cliquez sur le bouton [image].


ColorConstants (Explorateur d'objets)

Le module Color Constants contient des constantes de couleur prédéfinies. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'ColorConstants'.

2.	Cliquez sur le bouton [image].


Constants (Explorateur d'objets)

Le module Constants contient diverses constantes. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'Constants'.

2.	Cliquez sur le bouton [image].


Conversion (Explorateur d'objets)

Le module Conversion contient des procédures permettant d'effectuer diverses opérations de conversion. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Conversion'.

2.	Cliquez sur le bouton [image].

Note   Lorsque vous utilisez des variables de type Variant, les conversions explicites de types de données ne sont pas nécessaires.


DateTime (Explorateur d'objets)

Le module DateTime contient les procédures et les propriétés adoptées dans les opérations portant sur la date et l'heure. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure ou une propriété spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'DateTime'.

2.	Cliquez sur le bouton [image].


ErrObject (Explorateur d'objets)

Le module ErrObject contient des propriétés et des procédures permettant d'identifier et de traiter les erreurs d'exécution à l'aide de l'objet Err. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une propriété ou une procédure spécifique

1.	Sélectionnez la propriété ou la procédure dans la liste Membres de 'ErrObject'.

2.	Cliquez sur le bouton [image].


FileSystem (Explorateur d'objets)

Le module FileSystem contient les procédures permettant d'effectuer des opérations portant sur les fichiers, les répertoires ou les dossiers, ou des opérations système. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'FileSystem'.

2.	Cliquez sur le bouton [image].


Financial (Explorateur d'objets)

Le module Financial contient des procédures permettant d'effectuer des opérations financières. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Financial'.

2.	Cliquez sur le bouton [image].


Global (Explorateur d'objets)

Le module Global contient des procédures et des propriétés permettant d'effectuer des opérations sur l'objet UserForm. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une propriété ou une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Global'.

2.	Cliquez sur le bouton [image].


Information (Explorateur d'objets)

Le module Information contient les procédures permettant de renvoyer, tester ou vérifier des informations. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Information'.

2.	Cliquez sur le bouton [image].


Interaction (Explorateur d'objets)

Le module Interaction contient des procédures permettant d'interagir avec des objets, des applications et des systèmes. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Interaction'.

2.	Cliquez sur le bouton [image].


KeycodeConstants (Explorateur d'objets)

Le module KeyCodeConstants contient des constantes de codes de touches prédéfinies qui peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'KeyCodeConstants'.

2.	Cliquez sur le bouton [image].


Math (Explorateur d'objets)

Le module Math contient des procédures permettant d'effectuer des opérations mathématiques. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Math'.

2.	Cliquez sur le bouton [image].


Strings (Explorateur d'objets)

Le module Strings contient des procédures permettant d'effectuer des opérations sur des chaînes. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une procédure spécifique

1.	Sélectionnez la procédure dans la liste Membres de 'Strings'.

2.	Cliquez sur le bouton [image].


SystemColorConstants (Explorateur d'objets)

Le module System ColorConstants contient des constantes permettant d'identifier divers éléments de l'interface utilisateur graphique. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'SystemColorConstants'.

2.	Cliquez sur le bouton [image].


VbAppWinStyle (Explorateur d'objets)

L'énumération VbAppWinStyle contient des constantes utilisées par la fonction Shell pour contrôler le style d'une fenêtre d'application. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbAppWinStyle'.

2.	Cliquez sur le bouton [image].


VbCalendar (Explorateur d'objets)

L'énumération VbCalendar contient des constantes permettant de déterminer le type de calendrier adopté par Visual Basic. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbCalendar'.

2.	Cliquez sur le bouton [image].


VbCompareMethod (Explorateur d'objets)

L'énumération VbCompareMethod contient des constantes permettant de déterminer la façon dont les chaînes sont comparées dans les fonctions Instr et StrComp. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbCompareMethod'.

2.	Cliquez sur le bouton [image].


VbDayOfWeek (Explorateur d'objets)

L'énumération VbDayOfWeek contient des constantes permettant d'identifier certains jours de la semaine lors de l'utilisation des fonctions DateDiff, DatePart et Weekday. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbDayOfWeek'.

2.	Cliquez sur le bouton [image].


VbFileAttribute (Explorateur d'objets)

L'énumération VbFileAttribute contient des constantes permettant d'identifier les attributs de fichier utilisés dans les fonctions Dir, GetAttr et SetAttr. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbFileAttribute'.

2.	Cliquez sur le bouton [image].


VbFirstWeekOfYear (Explorateur d'objets)

L'énumération VbFirstWeekOfYear contient des constantes permettant d'identifier la façon dont la première semaine d'une année est déterminée lors de l'utilisation des fonctions DateDiff et DatePart. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbFirstWeekOfYear'.

2.	Cliquez sur le bouton [image].


VbIMEStatus (Explorateur d'objets)

Disponible uniquement dans les versions destinées à l'Extrême-Orient, l'énumération VbIMEStatus contient des constantes permettant d'identifier l'éditeur de méthode d'entrée (IME, Input Method Editor) lors de l'utilisation de la fonction IMEStatus. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbIMEStatus'.

2.	Cliquez sur le bouton [image].


VbMsgBoxResult (Explorateur d'objets)

L'énumération VbMsgBoxResult contient des constantes permettant d'identifier le bouton qui a été activé dans une fenêtre de message affichée à l'aide de la fonction MsgBox. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbMsgBoxResult'.

2.	Cliquez sur le bouton [image].


VbMsgBoxStyle (Explorateur d'objets)

L'énumération VbMsgBoxStyle contient des constantes permettant d'indiquer le comportement d'une fenêtre de message, ainsi que les icônes et les boutons qu'elle comprend lorsqu'elle est affichée à l'aide de la fonction MsgBox. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbMsgBoxStyle'.

2.	Cliquez sur le bouton [image].


VbQueryClose (Explorateur d'objets)

L'énumération VbQueryClose contient des constantes permettant d'identifier l'origine de l'événement QueryClose. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbQueryClose'.

2.	Cliquez sur le bouton [image].


VbStrConv (Explorateur d'objets)

L'énumération VbStrConv contient des constantes permettant d'identifier le type de conversion de chaîne qui doit être réalisé par la fonction StrConv. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbStrConv'.

2.	Cliquez sur le bouton [image].


VbVarType (Explorateur d'objets)

L'énumération VbVarType contient des constantes permettant d'identifier les différents types de données qui peuvent être inclus dans un Variant. Ces constantes correspondent aux valeurs renvoyées par la fonction VarType et peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbVarType'.

2.	Cliquez sur le bouton [image].


VbTriState (Explorateur d'objets)

L'énumération VbTriState contient des constantes permettant d'identifier un des trois différents états.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbTriState'.

2.	Cliquez sur le bouton [image].


VbDateTimeFormat (Explorateur d'objets)

L'énumération VbDateTimeFormat contient des constantes permettant d'indiquer comment la date et l'heure sont présentées.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbDateTimeFormat'.

2.	Cliquez sur le bouton [image].


VbCallType (Explorateur d'objets)

L'énumération VbCallType contient des constantes permettant d'identifier le type d'appel utilisé par la fonction CallByName.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'VbCallType'.

2.	Cliquez sur le bouton [image].


FormShowConstants (Explorateur d'objets)

Le module FormShowConstants contient des constantes UserForm prédéfinies. Ces constantes peuvent être utilisées partout dans votre code.

Pour obtenir de l'aide sur une constante spécifique

1.	Sélectionnez la constante dans la liste Membres de 'FormShowConstants'.

2.	Cliquez sur le bouton [image].


Collection, objet, exemple

Cet exemple crée un objet Collection (MyClasses) puis une boîte de dialogue permettant aux utilisateurs d'ajouter des objets à cette collection. Pour voir comment fonctionne cette procédure, sélectionnez la commande Module de classe du menu Insertion et déclarez une variable de type Public nommée InstanceName, au niveau du module de Class1 (tapez Public InstanceName), qui contiendra les noms de chaque instance. Conservez Class1 comme nom par défaut. Copiez et collez le code suivant dans la section Général d'un autre module, puis faites débuter celle-ci par l'instruction ClassNamer dans une autre procédure. (Cet exemple ne fonctionne qu'avec les applications hôtes capables de gérer les classes).

Sub ClassNamer()

Dim MyClasses As New Collection	' Crée un objet Collection.

Dim Num	' Compteur permettant d'individualiser les clés.

Dim Msg As String	' Variable devant contenir  la chaîne d'invite.

Dim TheName, MyObject, NameList	' Variants devant contenir les données.

Do

Dim Inst As New Class1	' Crée une nouvelle instance de Class1.

Num = Num + 1	' Incrémente d'une unité la valeur de Num, puis

' obtient un nom.

Msg = "Veuillez affecter un nom à cet objet." & Chr(13) _

& "Appuyez sur Annuler pour afficher les noms présents" _

& "dans la collection."

TheName = InputBox(Msg, "Nommez les éléments de Collection")

Inst.InstanceName = TheName	' Place le nom dans l'instance de

' l'objet.

' Si l'utilisateur a saisi un nom, ajoute  celui-ci à la

' collection.

If Inst.InstanceName <> "" Then

' Ajoute l'objet nommé à la collection.

MyClasses.Add item := Inst, key := CStr(Num)

End If

' Efface la référence en cours en prévision de la suivante.

Set Inst = Nothing

Loop Until TheName = ""

For Each MyObject In MyClasses	' Crée une liste des noms.

NameList = NameList & MyObject.InstanceName & Chr (13)

Next MyObject

' Affiche la liste des noms dans une zone de message.

MsgBox NameList, , "Noms des instances présentes dans la" _

 & "collection MyClasses"

For Num = 1 To MyClasses.Count	' Supprime le nom de la collection.

MyClasses.Remove 1	' Puisque les collections sont

' réindexées automatiquement,

' supprime le premier membre à

Next	' chaque itération.

End Sub


Err, objet, exemple

Cet exemple utilise les propriétés de l'objet Err pour construire une boîte de dialogue de message d'erreur. Notez que lorsque vous générez une erreur Visual Basic avec la méthode Raise, si vous utilisez la méthode Clear en premier, les valeurs par défaut de Visual Basic deviennent les propriétés de l'objet Err.

Dim Msg

' Si une erreur se produit, crée un message d'erreur.

On Error Resume Next	' Diffère la gestion d'erreur.

Err.Clear

Err.Raise 6	' Génère une erreur de type "Dépassement".

' Vérifie la présence d'erreurs, puis affiche le message.

If Err.Number <> 0 Then

Msg = "L'erreur # " & Str(Err.Number) & " a été générée par " _

 & Err.Source & Chr(13) & Err.Description

MsgBox Msg, , "Erreur", Err.Helpfile, Err.HelpContext

End If


Collection, objet

Un objet Collection est un jeu d'éléments indexés auxquels il peut être fait référence comme s'ils constituaient un ensemble unique.

Remarques

L'objet Collection constitue un moyen pratique de faire référence à un groupe d'éléments connexes, en les considérant comme un seul objet. Les éléments contenus dans l'objet sont appelés membres. Il leur suffit d'avoir pour point commun l'appartenance à l'objet collection. Ils ne doivent pas nécessairement posséder le même type de données.

Un objet Collection peut être créé comme n'importe quel autre objet. Par exemple :

Dim X As New Collection

Une fois l'objet Collection créé, il est possible de lui ajouter des membres à l'aide de la méthode Add et d'en supprimer au moyen de la méthode Remove. Des membres donnés peuvent être renvoyés à partir de l'objet Collection au moyen de la méthode Item, tandis que l'itération de l'ensemble de la collection est possible au moyen de l'instruction For Each ... Next.


Debug, objet

L'objet Debug envoie les données de sortie dans la fenêtre Exécution au moment de l'exécution.


Err, objet

Contient des informations sur les erreurs d'exécution.

Remarques

Les propriétés de l'objet Err sont définies par le générateur de l'erreur : Visual Basic, un objet ou le développeur.

La propriété par défaut de l'objet Err est Number. Dans la mesure où cette propriété par défaut peut être représentée par le nom d'objet Err, le code précédent utilisant la fonction Err ou l'instruction Err n'a pas besoin d'être modifié.

Lorsqu'une erreur d'exécution se produit, les propriétés de l'objet Err renferment d'une part des informations qui identifient distinctement l'erreur et d'autre part des informations permettant de gérer cette erreur. Pour générer une erreur d'exécution dans votre code, utilisez la méthode Raise.

Les propriétés de l'objet Err sont remises à zéro ou remplacées par des chaînes de longueur nulle ("") après une instruction Exit Sub, Exit Function, Exit Property ou Resume Next, dans le cadre d'une routine de gestion d'erreur. L'utilisation de n'importe quelle forme de l'instruction Resume, à l'extérieur du cadre d'une routine de gestion d'erreur, ne remettra pas à zéro les propriétés de l'objet Err. La méthode Clear peut être utilisée pour réinitialiser Err de façon explicite.

Utilisez la méthode Raise plutôt que l'instruction Error si vous souhaitez générer des erreurs d'exécution pour des erreurs système et des modules de classe. L'utilisation de la méthode Raise dans d'autres types de code dépend de la richesse des informations que vous souhaitez renvoyer.

L'objet Err est un objet intrinsèque dont la portée est globale ; il n'est pas nécessaire d'en créer une instance dans votre code.


^, opérateur, exemple

Cet exemple utilise l'opérateur ^ pour élever un nombre à la puissance d'un exposant.

Dim MyValue

MyValue = 2 ^ 2	' Renvoie 4.

MyValue = 3 ^ 3 ^ 3	' Renvoie 19683.

MyValue = (-5) ^ 3	' Renvoie -125.


+, opérateur, exemple

Cet exemple utilise l'opérateur + pour totaliser des nombres. L'opérateur + peut également servir à concaténer des chaînes. Toutefois, afin d'éliminer toute ambiguïté, il est préférable d'utiliser l'opérateur de concaténation & à la place. Si une expression créée avec l'opérateur + comprend aussi bien des chaînes que des valeurs numériques, le résultat arithmétique est affecté. Si les éléments sont exclusivement des chaînes, celles-ci sont concaténées.

Dim MyNumber, Var1, Var2

MyNumber = 2 + 2	' Renvoie 4.

MyNumber = 4257.04 + 98112	' Renvoie 102369,04.

Var1 = "34": Var2 = 6	' Initialise les variables.

MyNumber = Var1 + Var2	' Renvoie 40.

Var1 = "34": Var2 = "6"	' Initialise les variables contenant des chaînes.

MyNumber = Var1 + Var2	' Renvoie "346" (concaténation des chaînes).


-, opérateur, exemple

Cet exemple utilise l'opérateur - pour calculer la différence entre deux nombres.

Dim MyResult

MyResult = 4 - 2	' Renvoie 2.

MyResult = 459.35 - 334.90	' Renvoie 124,45.


*, opérateur, exemple

Cet exemple utilise l'opérateur * pour multiplier deux nombres.

Dim MyValue

MyValue = 2 * 2	' Renvoie 4.

MyValue = 459.35 * 334.90 	' Renvoie 153836,315.


/, opérateur, exemple

Cet exemple utilise l'opérateur / pour réaliser des divisions à virgule flottante.

Dim MyValue

MyValue = 10 / 4	' Renvoie 2,5.

MyValue = 10 / 3	' Renvoie 3,333333.


\, opérateur, exemple

Cet exemple utilise l'opérateur \ pour réaliser des divisions en donnant des nombres entiers.

Dim MyValue

MyValue = 11 \ 4	' Renvoie 2.

MyValue = 9 \ 3	' Renvoie 3.

MyValue = 100 \ 3	' Renvoie 33.


Mod, opérateur, exemple

Cet exemple utilise l'opérateur Mod pour diviser deux nombres et n'en renvoyer que le reste. Si l'un ou l'autre des nombres est une valeur à virgule flottante, il est d'abord arrondi à sa valeur entière.

Dim MyResult

MyResult = 10 Mod 5	' Renvoie 0.

MyResult = 10 Mod 3	' Renvoie 1.

MyResult = 12 Mod 4.3	' Renvoie 0.

MyResult = 12.6 Mod 5	' Renvoie 3.


&, opérateur, exemple

Cet exemple utilise l'opérateur & pour forcer la concaténation des chaînes.

Dim MyStr

MyStr = "Bonjour" & " à tous"	' Renvoie "Bonjour à tous".

MyStr = "Vérifiez " & 123 & " Vérifiez "	' Renvoie " Vérifiez 123 Vérifiez "


Comparaison, opérateurs, exemple

Cet exemple montre comment utiliser les divers opérateurs de comparaison permettant de comparer des expressions.

Dim MyResult, Var1, Var2

MyResult = (45 < 35)	' Renvoie False.

MyResult = (45 = 45)	' Renvoie True.

MyResult = (4 <> 3)	' Renvoie True.

MyResult = ("5" > "4")	' Renvoie True.

Var1 = "5": Var2 = 4	' Initialise les variables.

MyResult = (Var1 > Var2)	' Renvoie True.

Var1 = 5: Var2 = Empty

MyResult = (Var1 > Var2)	' Renvoie True.

Var1 = 0: Var2 = Empty

MyResult = (Var1 = Var2)	' Renvoie True.


And, opérateur, exemple

Cet exemple utilise l'opérateur And pour réaliser une conjonction logique sur deux expressions.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialise les variables.

MyCheck = A > B And B > C	' Renvoie True.

MyCheck = B > A And B > C	' Renvoie False.

MyCheck = A > B And B > D	' Renvoie Null.

MyCheck = A And B	' Renvoie 8 (comparaison au niveau du bit).


Eqv, opérateur, exemple

Cet exemple utilise l'opérateur Eqv pour réaliser une équivalence logique sur deux expressions.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialise les variables.

MyCheck = A > B Eqv B > C	' Renvoie True.

MyCheck = B > A Eqv B > C	' Renvoie False.

MyCheck = A > B Eqv B > D	' Renvoie Null.

MyCheck = A Eqv B	' Renvoie -3 (comparaison au niveau du bit).


Imp, opérateur, exemple

Cet exemple utilise l'opérateur Imp pour réaliser une implication logique sur deux expressions.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialise les variables.

MyCheck = A > B Imp B > C	' Renvoie True.

MyCheck = A > B Imp C > B	' Renvoie False.

MyCheck = B > A Imp C > B	' Renvoie True.

MyCheck = B > A Imp C > D	' Renvoie True.

MyCheck = C > D Imp B > A	' Renvoie Null.

MyCheck = B Imp A	' Renvoie -1 (comparaison au niveau du bit).


Not, opérateur, exemple

Cet exemple utilise l'opérateur Not pour réaliser une négation logique sur une expression.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialise les variables.

MyCheck = Not(A > B)	' Renvoie False.

MyCheck = Not(B > A)	' Renvoie True.

MyCheck = Not(C > D)	' Renvoie Null.

MyCheck = Not A	' Renvoie -11 (comparaison au niveau du bit).


Or, opérateur, exemple

Cet exemple utilise l'opérateur Or pour réaliser une réunion logique sur deux expressions.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialise les variables.

MyCheck = A > B Or B > C	' Renvoie True.

MyCheck = B > A Or B > C	' Renvoie True.

MyCheck = A > B Or B > D	' Renvoie True.

MyCheck = B > D Or B > A	' Renvoie Null.

MyCheck = A Or B	' Renvoie 10 (comparaison au niveau du bit).


Xor, opérateur, exemple

Cet exemple utilise l'opérateur Xor pour réaliser une exclusion logique sur deux expressions.

Dim A, B, C, D, MyCheck

A = 10: B = 8: C = 6: D = Null	' Initialise les variables.

MyCheck = A > B Xor B > C	' Renvoie False.

MyCheck = B > A Xor B > C	' Renvoie True.

MyCheck = B > A Xor C > B	' Renvoie False.

MyCheck = B > D Xor A > B	' Renvoie Null.

MyCheck = A Xor B	' Renvoie 2 (comparaison au niveau du bit).


Like, opérateur, exemple

Cet exemple utilise l'opérateur Like pour comparer une chaîne à un modèle.

Dim MyCheck

MyCheck = "aBBBa" Like "a*a"	' Renvoie True.

MyCheck = "F" Like "[A-Z]"	' Renvoie True.

MyCheck = "F" Like "[!A-Z]"	' Renvoie False.

MyCheck = "a2a" Like "a#a"	' Renvoie True.

MyCheck = "aM5b" Like "a[L-P]#[!c-e]"	' Renvoie True.

MyCheck = "BAT123khg" Like "B?T*"	' Renvoie True.

MyCheck = "CAT123khg" Like "B?T*"	' Renvoie False.


Is, opérateur, exemple

Cet exemple utilise l'opérateur Is pour comparer les références de deux objets. Les noms donnés aux variables d'objets sont des noms génériques employés ici à simple titre d'exemple.

Dim MyObject, YourObject, ThisObject, Dim OtherObject, ThatObject, MyCheck

Set YourObject = MyObject	' Affecte les références des objets.

Set ThisObject = MyObject

Set ThatObject = OtherObject

MyCheck = YourObject Is ThisObject	' Renvoie True.

MyCheck = ThatObject Is ThisObject	' Renvoie False.

' Suppose MyObject <> OtherObject

MyCheck = MyObject Is ThatObject	' Renvoie False.


Résumé des opérateurs

Opérateurs	Description
Opérateurs arithmétiques	Opérateurs permettant d'effectuer des calculs mathématiques.
Opérateurs de comparaison	Opérateurs permettant d'effectuer des comparaisons.
Opérateurs de concaténation	Opérateurs permettant de combiner des chaînes.
Opérateurs logiques	Opérateurs permettant d'effectuer des opérations logiques.


Priorité des opérateurs

Lorsque plusieurs opérations sont contenues dans une même expression, chacune d'elles est évaluée et résolue dans un ordre prédéfini, appelé priorité des opérateurs.

Dans les expressions contenant des opérateurs de diverses catégories, les opérateurs sont évalués dans l'ordre suivant : opérateurs arithmétiques, puis opérateurs de comparaison et enfin opérateurs logiques. Les opérateurs de comparaison ont la même priorité ; c'est-à-dire qu'ils sont évalués dans leur ordre d'apparition, de gauche à droite. Les opérateurs arithmétiques et logiques sont évalués dans l'ordre de priorité ci-dessous :

Arithmétique	Comparaison	Logique
Élévation à une puissance (^)	Égalité (=)	Not
Négation (–)	Inégalité (<>)	And
Multiplication et division (*, /)	Infériorité (<)	Or
Division d'entiers (\)	Supériorité (>)	Xor
Modulo arithmétique (Mod)	Infériorité ou égalité (<=)	Eqv
Addition et soustraction (+, –)	Supériorité ou égalité (>=)	Imp
Concaténation de chaînes (&)	Like Is
Lorsqu'une même expression comprend une multiplication et une division, chaque opération est évaluée dans l'ordre d'apparition, de gauche à droite. Il en est de même des expressions contenant une addition et une soustraction. L'utilisation de parenthèses permet de modifier l'ordre de priorité afin qu'un élément d'une expression soit évalué avant les autres. Les opérations situées à l'intérieur de parenthèses sont toujours traitées avant les autres. La priorité des opérateurs s'applique cependant à l'intérieur des parenthèses.

L'opérateur de concaténation de chaînes (&) n'est pas un opérateur arithmétique, mais sa priorité est inférieure à celle des opérateurs arithmétiques et supérieure à celle des opérateurs de comparaison.

L'opérateur Like, qui a la même priorité que les opérateurs de comparaison, est en réalité un opérateur de comparaison avec critères spéciaux.

L'opérateur Is est un opérateur de comparaison de références d'objets. Il ne compare pas des objets ou leur valeur, mais vérifie si deux références d'objet sont associées au même objet.


Opérateurs arithmétiques

^, opérateur

*, opérateur

/, opérateur

\, opérateur

Mod, opérateur

+, opérateur

-, opérateur


Opérateurs de concaténation

&, opérateur

+, opérateur


Opérateurs logiques

And, opérateur

Eqv, opérateur

Imp, opérateur

Not, opérateur

Or, opérateur

Xor, opérateur


^, opérateur

Permet d'élever un nombre à une puissance.

Syntaxe

result = number^exponent

La syntaxe de l'opérateur ^ comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
number	Toute expression numérique.
exponent	Toute expression numérique.
Remarques

L'argument number ne peut être négatif que si l'argument exponant est un entier. Lorsque plusieurs élévations à une puissance ont lieu dans une même expression, les opérateurs ^ sont évalués dans l'ordre d'apparition, de gauche à droite.

En général, l'argument result est une donnée de type Double ou Variant contenant une donnée de type Double. Cependant, si les arguments number ou exponent correspondent à une expression de type Null, l'argument result a la valeur Null.


+, opérateur

Permet de faire la somme de deux nombres.

Syntaxe

result = expression1+expression2

La syntaxe de l'opérateur + est composée des éléments suivants :

Élément	Description
result	Toute variable numérique.
expression1	Toute expression.
expression2	Toute expression.
Remarques

L'utilisation de l'opérateur + ne permet pas toujours de distinguer si le résultat sera une addition ou une concaténation de chaînes. Pour éliminer toute ambiguïté et écrire un code plus clair, utilisez l'opérateur & pour les concaténations.

Si une des deux expressions au moins n'est pas de type Variant, les règles ci-dessous s'appliquent :

Condition	Résultat
Les deux expressions sont des types de données numériques (Byte, Boolean, Integer, Long, Single, Double, Date, Currency ou Decimal)	Addition.
Les deux expressions sont de type String	Concaténation.
Une expression est d'un type numérique et l'autre est de type Variant, sauf Null	Addition.
Une expression est de type String et l'autre est de type Variant, sauf Null	Concaténation.
Une expression est un Variant de type Empty	Renvoi de l'expression restante, sans modification, en argument result.
Une expression est une donnée de type numérique et l'autre est de type String	L'erreur Type incompatible survient.
L'une des deux expressions a la valeur Null	L'argument result a la valeur Null.
Si les deux expressions sont de type Variant, les règles ci-dessous s'appliquent :

Condition	Résultat
Les deux expressions de type Variant sont numériques.	Addition.
Les deux expressions de type Variant sont des chaînes.	Concaténation.
Une expression de type Variant est numérique et l'autre est une chaîne.	Addition.
Dans le cas d'additions simples avec des expressions ne contenant que des types de données numériques, le type de données de l'argument result correspond généralement à celui de l'expression la plus précise. Les types de données numériques sont classés dans l'ordre de précision croissant suivant : Byte, Integer, Long, Single, Double, Currency et Decimal. Le tableau suivant détaille les exceptions à cette règle :

Condition	Type de l'argument result
Addition de types Single et Long	Type Double.
L'argument result est un variant de type Long, Single ou Date excédant la plage de valeurs acceptées.	Conversion en variant de type Double.
L'argument result est un variant de type Byte excédant la plage de valeurs acceptées.	Conversion en variant de type Integer.
L'argument resultest un variant de type Integer excédant la plage de valeurs acceptées.	Conversion en variant de type Long.
Ajout d'une valeur de type Date à tout autre type de données.	Type Date.
Si l'une des deux expressions a la valeur Null, l'argument result est Null. Si les deux expressions sont Empty, l'argument resultest de type Integer. Cependant, si une seule expression est Empty, l'autre expression est renvoyée sans modification en argument result.

Note   L'ordre de précision de l'addition et de la soustraction diffère de celui de la multiplication.


-, opérateur
–, opérateur

Permet de calculer la différence entre deux nombres ou d'indiquer qu'une expression numérique a une valeur négative.

Syntaxe 1

result = number1–number2

Syntaxe 2

–number

La syntaxe de l'opérateur – comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
number	Toute expression numérique.
number1	Toute expression numérique.
number2	Toute expression numérique.
Remarques

Dans la syntaxe 1, l'opérateur – correspond à l'opérateur de soustraction arithmétique permettant de calculer la différence entre deux nombres. Dans la syntaxe 2, l'opérateur – correspond à l'opérateur unaire de négation indiquant qu'une expression a une valeur négative.

Le type de données de l'argument result correspond généralement à celui de l'expression la plus précise. Les types de données sont classés dans l'ordre de précision croissant suivant : Byte, Integer, Long, Single, Double, Currency et Decimal. Le tableau ci-dessous détaille les exceptions à cette règle :

Condition	Type de result
Soustraction entre des données de types Single et Long.	Conversion en type Double.
L'argument result est un variant de type Long, Single ou Date excédant la plage de valeurs acceptées.	Conversion en type Variant contenant une donnée de type Double.
L'argument result est un variant de type Byte excédant la plage de valeurs acceptées.	Conversion en variant de type Integer.
L'argument result est un variant de type Integer excédant la plage de valeurs acceptées.	Conversion en variant de type Long.
Soustraction entre une donnée de type Date et tout type de données.	Type Date
Soustraction entre deux expressions de type Date.	Type Double
Si l'une ou les deux expressions ont la valeur Null, l'argument result est Null. Si une expression est Empty, elle est traitée comme si elle avait la valeur 0.

Note   L'ordre de précision de l'addition et de la soustraction diffère de celui de la multiplication.


*, opérateur

Permet de multiplier deux nombres.

Syntaxe

result = number1*number2

La syntaxe de l'opérateur * comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
number1	Toute expression numérique.
number2	Toute expression numérique.
Remarques

Le type de données de l'argument result correspond généralement à celui de l'expression la plus précise. Les types de données sont classés dans l'ordre de précision croissant suivant : Byte, Integer, Long, Single, Currency, Double et Decimal. Le tableau ci-dessous décrit les exceptions à cette règle :

Condition	Type de result
Multiplication entre des données de types Single et Long,	Conversion en donnée de type Double.
L'argument result est un variant de type Long, Single ou Date excédant la plage de valeurs acceptées.	Conversion en donnée de type Variant contenant une donnée de type Double.
L'argument result est un variant de type Byte excédant la plage de valeurs acceptées.	Conversion en variant de type Integer.
L'argument result est un variant de type Integer excédant la plage de valeurs acceptées.	Conversion en variant de type Long.
Si une ou les deux expressions ont la valeur Null, l'argument result est Null. Si une expression est Empty, elle est traitée comme si elle avait la valeur 0.

Note   L'ordre de précision de la multiplication diffère de celui de l'addition et de la soustraction.


/, opérateur

Permet de diviser deux nombres et renvoie en résultat un nombre à virgule flottante.

Syntaxe

result = number1/number2

La syntaxe de l'opérateur / comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
number1	Toute expression numérique.
number2	Toute expression numérique.
Remarques

Le type de données de l'argument result est généralement Double ou un variant de type Double. Le tableau ci-dessous détaille les exceptions à cette règle :

Condition	Type de result
Les deux expressions sont de type Byte, Integer ou Single.	Donnée de type Single sauf dépassement de la plage de valeurs acceptées, auquel cas une erreur se produit.
Les deux expressions sont des variants de type Byte, Integer ou Single.	Variant de type Single sauf dépassement de la plage de valeurs acceptées, auquel cas l'argument result est un Variant contenant une donnée de type Double.
Division entre une donnée de type Decimal et tout autre type de données.	Type de données Decimal.
Si une ou les deux expressions sont Null, l'argument result est Null. Toute expression Empty est traitée comme si elle avait la valeur 0.


\, opérateur

Permet de diviser deux nombres et renvoie comme résultat un entier.

Syntaxe

result = number1\number2

L'opérateur \ comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
number1	Toute expression numérique.
number2	Toute expression numérique.
Remarques

Avant exécution de la division, les expressions numériques sont arrondies à des expressions de type Byte, Integer ou Long.

En général, le type de données de l'argument result est Byte, un variant de type Byte, Integer, un variant de type Integer, Long ou un variant de type Long, que l'argument result soit ou non un entier. La partie décimale est tronquée. Cependant, si une expression est Null, l'argument result est Null. Toute expression Empty est traitée comme si elle avait la valeur 0.


Mod, opérateur

Permet de diviser deux nombres en ne renvoyant que le reste.

Syntaxe

result = number1 Mod number2

La syntaxe de l'opérateur Mod comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
number1	Toute expression numérique.
number2	Toute expression numérique.
Remarques

L'opérateur modulo, ou reste, divise l'argument number1 par l'argument number2 (en arrondissant les nombres à virgules flottantes à des nombres entiers) et ne retourne que le reste dans l'argument result. Par exemple, dans l'expression ci-dessous, A (argument result) est égal à 5.

A = 19 Mod 6.7

En général, le type de données de l'argument result est Byte, un variant de type Byte, Integer, un variant de type Integer, Long ou Variant contenant une donnée de type Long, que l'argument result soit ou non un nombre entier. La partie décimale est tronquée. Cependant, si une expression est Null, l'argument result est Null. Toute expression Empty est traitée comme si elle avait la valeur 0.


&, opérateur

Permet de provoquer la concaténation de chaînes de deux expressions.

Syntaxe

result = expression1 & expression2

La syntaxe de l'opérateur & comprend les éléments suivants :

Élément	Description
result	Toute variable de type String ou Variant.
expression1	Toute expression.
expression2	Toute expression.
Remarques

Si un des arguments expression n'est pas une chaîne, il est converti en variant de type String. Le type de données de l'argument result est String si les deux expressions sont des expressions de chaîne ; sinon, l'argument result est un variant de type String. Si les deux expressions ont la valeur Null, l'argument result est Null. Cependant, si seule une des expressions est Null, elle est considérée comme une chaîne de longueur nulle ("") lors de sa concaténation avec l'autre expression. De même, toute expression Empty est traitée comme une chaîne de longueur nulle.


Opérateurs de comparaison

Permettent de comparer des expressions.

Syntaxe

result = expression1 comparisonoperator expression2

result = object1 Is object2

result = string Like pattern

Les opérateurs de comparaison comportent les éléments suivants :

Élément	Description
result	Toute variable numérique.
expression	Toute expression.
comparisonoperator	Tout opérateur de comparaison.
object	Tout nom d'objet.
string	Toute expression de chaîne.
pattern	Toute expression de chaîne ou plage de caractères.
Remarques

Le tableau ci-dessous contient la liste des opérateurs de comparaison et des conditions déterminant si l'argument result est True, False ou Null :

Opérateur	True si	False si	Null si
< (inférieur à)	expression1 < expression2	expression1 >= expression2	expression1 ou expression2 = Null
<= (inférieur ou égal à)	expression1 <= expression2	expression1 > expression2	expression1 ou expression2 = Null
> (supérieur à)	expression1 > expression2	expression1 <= expression2	expression1 ou expression2 = Null
>= (supérieur ou égal à)	expression1 >= expression2	expression1 < expression2	expression1 ou expression2 = Null
= (égal à)	expression1 = expression2	expression1 <> expression2	expression1 ou expression2 = Null
<> (différent de)	expression1 <> expression2	expression1 = expression2	expression1 ou expression2 = Null
Note   Les opérateurs Is et Like ont des fonctionnalités de comparaison spécifiques qui les distinguent des opérateurs décrits dans le tableau ci-dessus.

Lorsque vous comparez deux expressions, il est parfois difficile de déterminer si elles sont comparées en tant que nombres ou en tant que chaînes de caractères. Le tableau suivant indique la manière dont les expressions sont comparées et les résultats lorsque l'une des expressions n'est pas de type Variant :

Condition	Résultat
Les deux expressions sont des types de données numériques (Byte, Boolean, Integer, Long, Single, Double, Date, Currency ou Decimal)	Effectue une comparaison numérique.
Les deux expressions sont de type String	Effectue une comparaison de chaînes.
Une expression est de type numérique et l'autre de type Variant, qui est ou peut-être un nombre	Effectue une comparaison numérique.
Une expression est de type numérique et l'autre est une chaîne de type Variant ne pouvant être convertie en nombre	L'erreur type incompatible se produit.
Une expression est de type String et l'autre de type Variant, sauf Null	Effectue une comparaison de chaînes.
Une expression est Empty et l'autre est de type numérique	Effectue une comparaison numérique en utilisant la valeur 0 pour l'expression Empty.
Une expression est Empty et l'autre est de type String	Effectue une comparaison de chaînes en utilisant une chaîne de longueur nulle ("") pour l'expression Empty.
Si les arguments expression1 et expression2 sont tous deux de type Variant, la méthode de comparaison est déterminée par leur type sous-jacent. Le tableau suivant définit la méthode de comparaison des expressions de type Variant et les résultats obtenus en fonction du type sous-jacent :

Condition	Résultat
Les deux expressions de type Variant sont numériques	Effectue une comparaison numérique.
Les deux expressions de type Variant sont des chaînes	Effectue une comparaison de chaînes.
Une des expressions de type Variant est numérique et l'autre est une chaîne	L'expression numérique est inférieure à l'expression de chaîne.
Une des expressions de type Variant a la valeur Empty et l'autre est numérique	Effectue une comparaison numérique en utilisant 0 pour l'expression Empty.
Une des expressions de type Variant est Empty et l'autre est une chaîne	Effectue une comparaison numérique en utilisant une chaîne de longueur nulle ("") pour l'expression Empty.
Les deux expressions de type Variant sont Empty	Les expressions sont égales.
Lors de la comparaison de données de types Single et Double, la donnée de type Double est arrondie au degré de précision de celle de type Single.

Si une valeur de type Currency est comparée à une valeur de type Single ou Double, cette dernière est convertie en valeur de type Currency. De même, lorsqu'une valeur de type Decimal est comparée à une valeur de type Single ou Double, cette dernière est convertie en valeur de type Decimal. Avec les valeurs de type Currency, les parties décimales inférieures à 0,0001 peuvent être perdues ; avec celles de type Decimal, les parties décimales inférieures à 1E-28 peuvent être perdues ou un dépassement de capacité peut se produire. Deux valeurs comparées peuvent alors paraître équivalentes sans toutefois l'être réellement.


And, opérateur

Permet d'établir une conjonction logique entre deux expressions.

Syntaxe

result = expression1 And expression2

La syntaxe de l'opérateur And comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
expression1	Toute expression.
expression2	Toute expression.
Remarques

Si les deux expressions ont la valeur True, l'argument result est True. Si l'une des expressions a la valeur False, l'argument result est False. Le tableau ci-dessous montre comment est déterminée la valeur de l'argument result :

Si expression1 est	et si expression2 est	result prend la valeur
True	True	True
True	False	False
True	Null	Null
False	True	False
False	False	False
False	Null	False
Null	True	Null
Null	False	False
Null	Null	Null
L'opérateur And permet également d'effectuer une comparaison au niveau du bit des bits occupant la même position dans deux expressions numériques et définit le bit correspondant dans l'argument result selon le tableau ci-dessous :

Bit dans expression1	Bit dans expression2	Argument result
0	0	0
0	1	0
1	0	0
1	1	1


Eqv, opérateur

Permet d'établir une équivalence logique entre deux expressions.

Syntaxe

result = expression1 Eqv expression2

La syntaxe de l'opérateur Eqv comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
expression1	Toute expression.
expression2	Toute expression.
Remarques

Si l'une des expressions est de valeur Null, l'argument result est également Null. Lorsqu'aucune des expressions n'est Null, l'argument result est déterminé selon le tableau suivant :

Si expression1 est	et si expression2 est	result prend la valeur
True	True	True
True	False	False
False	True	False
False	False	True
L'opérateur Eqv effectue une comparaison au niveau du bit des bits occupant la même position dans deux expressions numériques et définit le bit correspondant dans l'argument result en fonction du tableau suivant :

Bit dans expression1	Bit dans expression2	Argument result
0	0	1
0	1	0
1	0	0
1	1	1


Imp, opérateur

Permet d'établir une implication logique entre deux expressions.

Syntaxe

result = expression1 Imp expression2

La syntaxe de l'opérateur Imp comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
expression1	Toute expression.
expression2	Toute expression.
Remarques

Le tableau ci-dessous montre comment est déterminée la valeur de l'argument result :

Si expression1 est	et si expression2 est	result prend la valeur
True	True	True
True	False	False
True	Null	Null
False	True	True
False	False	True
False	Null	True
Null	True	True
Null	False	Null
Null	Null	Null
L'opérateur Imp effectue une comparaison au niveau du bit des bits occupant la même position dans deux expressions numériques et définit le bit correspondant dans l'argument result en fonction du tableau suivant :

Bit dans expression1	Bit dans expression2	Argument result
0	0	1
0	1	1
1	0	0
1	1	1


Not, opérateur

Permet d'établir la négation logique d'une expression.

Syntaxe

result = Not expression

La syntaxe de l'opérateur Not comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
expression	Toute expression.
Remarques

Le tableau ci-dessous montre comment est déterminée la valeur de l'argument result :

Argument expression	Argument result
True	False
False	True
Null	Null
En outre, l'opérateur Not réalise une inversion des valeurs de bit d'une variable et définit le bit correspondant dans l'argument result en fonction du tableau suivant :

Bit dans expression	Bit dans l'argument result
0	1
1	0


Or, opérateur

Permet d'établir une disjonction logique entre deux expressions.

Syntaxe

result = expression1 Or expression2

La syntaxe de l'opérateur Or comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
expression1	Toute expression.
expression2	Toute expression.
Remarques

Si l'une des deux ou les deux expressions ont pour valeur True, l'argument result est True. Le tableau ci-dessous montre comment est déterminée la valeur de l'argument result :

Si expression1 est	et si expression2 est	result prend la valeur
True	True	True
True	False	True
True	Null	True
False	True	True
False	False	False
False	Null	Null
Null	True	True
Null	False	Null
Null	Null	Null
L'opérateur Or effectue également une comparaison au niveau du bit des bits occupant la même position dans deux expressions numériques et définit le bit correspondant dans l'argument result en fonction du tableau suivant :

Bit dans expression1	Bit dans expression2	Argument result
0	0	0
0	1	1
1	0	1
1	1	1


Xor, opérateur

Permet d'établir une exclusion logique entre deux expressions.

Syntaxe

[result =] expression1 Xor expression2

La syntaxe de l'opérateur Xor comprend les éléments suivants :

Élément	Description
result	Facultatif. Toute variable numérique.
expression1	Toute expression.
expression2	Toute expression.
Remarques

Si une seule des expressions a pour valeur True, l'argument result est True. Toutefois, si l'une des expressions est Null, l'argument result est également Null. Lorsqu'aucune des deux expressions n'est Null, la valeur de l'argument result est déterminée en fonction du tableau suivant :

Si expression1 est	et si expression2 est	result prend la valeur
True	True	False
True	False	True
False	True	True
False	False	False
L'opérateur Xor sert à la fois d'opérateur logique et d'opérateur de comparaison au niveau du bit. Lors d'une comparaison au niveau du bit de deux expressions, le résultat est établi selon le "ou" logique exclusif, comme le montre le tableau suivant :

Bit dans expression1	Bit dans expression2	Argument result
0	0	0
0	1	1
1	0	1
1	1	0


Is, opérateur

Permet de comparer deux variables de référence d'objet.

Syntaxe

result = object1 Is object2

La syntaxe de l'opérateur Is comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
object1	Tout nom d'objet.
object2	Tout nom d'objet.
Remarques

Si les arguments object1 et object2 font référence au même objet, l'argument result a pour valeur True. Dans le cas contraire, l'argument result est False. Il existe plusieurs façons de définir deux variables faisant référence au même objet.

Dans l'exemple suivant, A fait référence au même objet que B :

Set A = B

Dans l'exemple suivant, A et B font référence au même objet que C :

Set A = C

Set B = C


Like, opérateur

Permet de comparer deux chaînes.

Syntaxe

result = string Like pattern

La syntaxe de l'opérateur Like comprend les éléments suivants :

Élément	Description
result	Toute variable numérique.
string	Toute expression de chaîne.
pattern	Toute expression de chaîne respectant les conventions décrites dans les remarques.
Remarques

Si l'argument string correspond à l'argument pattern, l'argument result a pour valeur True. Dans le cas contraire, l'argument result est False. Si les arguments string ou pattern sont Null, l'argument result est Null.

Le comportement de l'opérateur Like dépend de l'instruction Option Compare. Par défaut, la méthode de comparaison de chaînes de chaque module est Option Compare Binary.

La méthode Option Compare Binary compare des chaînes en fonction d'un ordre de tri dérivé de la représentation binaire interne des caractères. L'ordre de tri est défini par la page de code. L'exemple suivant présente un ordre de tri binaire courant :

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

La méthode Option Compare Text compare des chaînes sans prise en compte de la casse, en fonction d'un ordre de tri textuel défini par les paramètres régionaux de votre système. Avec la méthode Option Compare Text, les caractères de l'exemple précédent sont triés de la manière suivante :

(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)

La gestion intégrée des critères spéciaux permet une grande souplesse dans les comparaisons de chaînes. Vous pouvez en effet utiliser des caractères génériques, des listes de caractères ou des plages de caractères, combinés à votre gré, pour comparer des chaînes. Le tableau suivant définit les caractères autorisés dans l'argument pattern et leur correspondance :

Caractère(s) dans pattern	Correspondance dans l'argument string
?	Tout caractère unique.
*	Aucun ou plusieurs caractères.
#	Tout chiffre unique (de 0 à 9).
[charlist]	Tout caractère unique compris dans l'argument charlist.
[!charlist]	Tout caractère unique non compris dans l'argument charlist.
Un groupe d'un ou plusieurs caractères (argument charlist) délimité par des crochets ([ ]) permet de sélectionner tout caractère unique de l'argument string ; il peut comporter quasiment n'importe quel code de caractère, y compris des chiffres.

Note   Pour utiliser les caractères spéciaux tels que le crochet droit ouvrant ([), le point d'interrogation (?), le dièse (#) et l'astérisque (*), entourez-les de crochets. Le crochet droit fermant (]) ne peut être utilisé au sein d'un groupe comme critère de comparaison. En revanche, il peut être utilisé à l'extérieur d'un groupe, comme caractère isolé.

L'argument charlist peut spécifier une plage de caractères dont les limites supérieure et inférieure sont séparées par un trait d'union (–). Par exemple, la chaîne [A-Z] génère une correspondance si l'argument string contient à la même position une lettre majuscule comprise entre A et Z. Plusieurs plages peuvent figurer entre crochets sans être délimitées entre elles.

La signification d'une plage dépend de l'ordre des caractères en vigueur au moment de l'exécution ; il est déterminé par l'instruction Option Compare et les paramètres régionaux du système sur lequel le code est exécuté. Si l'on reprend l'exemple précédent avec la méthode Option Compare Binary, la plage [A–E] correspond à A, B et E. Avec Option Compare Text, la plage [A–E] correspond à A, a, À, à, B, b, E, e. La plage ne correspond ni à Ê, ni à ê, car les caractères accentués viennent après les caractères non accentués dans l'ordre de tri.

Les autres règles importantes qui régissent l'utilisation de critères spéciaux sont les suivantes :

•	Un point d'exclamation (!) placé au début de l'argument charlist signifie que la correspondance est uniquement établie si l'argument string ne contient aucun des caractères de l'argument charlist. Utilisé hors des crochets droits, le point d'exclamation correspond à lui-même.

•	Le trait d'union (–) peut apparaître soit au début (éventuellement à la suite d'un point d'exclamation), soit à la fin de l'argument charlist pour correspondre à lui-même. En tout autre emplacement, le trait d'union sert à désigner une plage de caractères.

•	Lorsqu'une plage de caractères est définie, les caractères doivent apparaître dans l'ordre ascendant (du premier au dernier). [A-Z] correspond à une plage valable, contrairement à [Z-A].

•	La séquence de caractères [] est considérée comme une chaîne de longueur nulle ("").

Dans certaines langues, l'alphabet comporte des caractères spéciaux représentant deux caractères distincts. Par exemple, plusieurs langues utilisent le caractère "æ" pour représenter les caractères "a" et "e" lorsqu'ils apparaissent ensemble. L'opérateur Like reconnaît que ce caractère spécial équivaut à deux caractères.

Quand une langue utilisant un de ces caractères spéciaux est définie dans les paramètres régionaux du système, toute occurrence du caractère spécial dans les arguments pattern ou string correspond à la séquence de deux caractères équivalente dans l'autre chaîne. De même, un caractère spécial placé entre crochets droits (seul, dans une liste ou dans une plage) dans l'argument pattern correspond à la séquence de deux caractères équivalente dans l'argument string.


Count, propriété, exemple

Cet exemple utilise la propriété Count de l'objet Collection pour indiquer le nombre d'itérations nécessaires pour supprimer tous les éléments de la collection nommée MyClasses. Lorsque les collections sont indexées numériquement, la base par défaut est 1. Puisque les collections sont automatiquement réindexées lors d'une suppression, le code suivant supprime le premier membre à chaque itération.

Dim Num, MyClasses

For Num = 1 To MyClasses.Count	' Supprime le nom de la collection.

MyClasses.Remove 1	' Les index numériques par défaut de la 	'collection

Next	' commencent par 1.


Description, propriété, exemple

Cet exemple affecte un message défini par l'utilisateur à la propriété Description de l'objet Err.

Err.Description = "Il n'a pas été possible d'accéder à un "& _

"objet nécessaire pour cette opération."


HelpContext, propriété, exemple

Cet exemple utilise la propriété HelpContext de l'objet Err pour afficher la rubrique d'aide de Visual Basic relative à l'erreur Overflow.

Dim Msg

Err.Clear

On Error Resume Next

Err.Raise 6 ' Génère une erreur de type "Dépassement".

If Err.Number <> 0 Then

Msg = "Appuyez sur F1 ou sur AIDE pour consulter la rubrique "& _

"Err.HelpFile relative au contexte d'aide Err.HelpContext

MsgBox Msg, , "Erreur: " & Err.Description, _

Err.HelpFile, Err.HelpContext

End If


HelpFile, propriété, exemple

Cet exemple utilise la propriété HelpFile de l'objet Err pour lancer le système d'aide. Par défaut, la propriété HelpFile contient le nom du fichier d'aide de Visual Basic.

Dim Msg

Err.Clear

On Error Resume Next	' Supprime les erreurs pour les besoins de la démonstration.

Err.Raise 6	' Génère une erreur de type "Dépassement".

Msg = "Appuyez sur F1 ou sur AIDE pour consulter la rubrique "& _

Err.HelpFile & " relative à cette erreur"

MsgBox Msg, , "Erreur: " & Err.Description,Err.HelpFile, Err.HelpContext


LastDLLError, propriété, exemple

Une fois collé dans un module d'un objet UserForm, le code suivant réalise une tentative d'appel de fonction DLL. L'appel échoue car l'argument passé (un pointeur nul) génère une erreur. Dans tous les cas, une instruction SQL ne peut pas être annulée si elle n'est pas en cours d'exécution. Le code qui suit l'appel teste la valeur renvoyée puis imprime la propriété LastDLLError de l'objet Err pour fournir le code d'erreur. Sur les systèmes dépourvus de DLL, la propriété LastDLLError renvoie toujours une valeur nulle.

 Private Declare Function SQLCancel Lib "ODBC32.dll" _

 (ByVal hstmt As Long) As Integer

Private Sub UserForm_Click()

Dim RetVal

' Appel avec un argument invalide.

RetVal = SQLCancel(myhandle&)

' Vérifie le code d'erreur SQL.

If RetVal = -2 Then

'Affiche le code de l'erreur.

MsgBox "Le code d'erreur est :" & Err.LastDllError

End If

End Sub


Number, propriété, exemple

Le premier exemple montre une utilisation courante de la propriété Number dans le cadre d'un programme de gestion d'erreur. Le deuxième exemple examine la propriété Number de l'objet Err pour déterminer si une erreur renvoyée par un objet Automation a été définie par l'objet ou si elle a été mise en correspondance avec une erreur définie par Visual Basic. Notez que la constante vbObjectError est une valeur négative très élevée qu'un objet ajoute à son propre code d'erreur pour indiquer que l'erreur est définie par le serveur. De ce fait, la soustraire de Err.Number la soustrait aussi du résultat. Si l'erreur est définie par l'objet, le nombre de base est conservé dans MyError, qui s'affiche dans une zone de message en même temps que la source d'origine de l'erreur. Si Err.Number correspond à une erreur Visual Basic, le numéro d'erreur Visual Basic s'affiche dans la zone de message.

' Utilisation classique de la propriété Number

Sub test()

On Error GoTo out

Dim x, y

x = 1 / y	' Crée une erreur de division par zéro

Exit Sub

out:

MsgBox Err.Number

MsgBox Err.Description

' Vérifie s'il y a erreur de division par zéro

If Err.Number = 11 Then

y = y + 1

End If

Resume

End Sub

' Utilisation de la propriété Number avec une erreur

' provenant d'un objet Automation

Dim MyError, Msg

' Premièrement, ôte la constante ajoutée par l'objet

' pour indiquer l'une de ses propres erreurs.

MyError = Err.Number - vbObjectError

' Si vous ôtez la constante vbObjectError et que le nombre est toujours

' compris entre 0 et 65 535, il s'agit du code d'une erreur définie par

' l'objet.

If MyError > 0 And MyError < 65535 Then

Msg = "L'objet auquel vous avez accédé a affecté ce nombre à " _

& l'erreur "& MyError & ". La source de l'erreur était: " _

& Err.Source & ". Appuyez sur F1 pour afficher la rubrique " _

& d'aide relative à la source de l'erreur."

' Dans le cas contraire, il s'agit du numéro d'une erreur Visual Basic.

Else

Msg = "Cette erreur (# " & Err.Number & ") est une erreur Visual " & _

" Basic. Appuyez sur le bouton Aide ou sur F1 pour " & _

" accéder à la rubrique de l'aide de Visual Basic relative " & _

" à cette erreur."

End If

MsgBox Msg, , "Erreur d'objet ", Err.HelpFile, Err.HelpContext


Source, propriété, exemple

Cet exemple affecte l'identificateur de ressource d'un objet Automation créé avec Visual Basic à la variable MyObjectID, puis affecte cet identificateur à la propriété Source de l'objet Err lorsqu'il génère une erreur avec la méthode Raise. Lorsque vous gérez des erreurs, il est préférable de ne pas utiliser la propriété Source (ni aucune autre propriété Err autre que Number) par voie de programmation. Les propriétés autres que Number ne doivent servir qu'à l'affichage des informations détaillées à l'intention des utilisateurs finals dans les situations où vous ne pouvez pas gérer les erreurs. Cet exemple suppose que les objets App et MyClass constituent des références valides.

Dim MyClass, MyObjectID, MyHelpFile, MyHelpContext

' Un objet de type MyClass génère une erreur et remplit toutes les

' propriétés de l'objet Err, notamment la propriété Source qui reçoit

' MyObjectID; Il s'agit d'une combinaison de la propriété Title de

' l'objet App et de la propriété Name de l'objet MyClass.

MyObjectID = App.Title & "." & MyClass.Name

Err.Raise	Number:=vbObjectError + 894, Source:=MyObjectID, _

Description:= "Votre tâche n'a pas pu s'accomplir", _

HelpFile:=MyHelpFile, HelpContext:=MyHelpContext


Calendar, propriété

Renvoie ou définit une valeur indiquant le type de calendrier à utiliser avec votre projet.

La propriété Calendar peut prendre l'une des deux valeurs suivantes :

Paramètre	Valeur	Description
vbCalGreg	0	Calendrier grégorien (valeur par défaut).
VbCalHijri	1	Calendrier Hijri.
Remarques

Vous ne pouvez définir la propriété Calendar que par programmation. Par exemple, pour utiliser le calendrier Hijri, utilisez :

Calendar = vbCalHijri


Count, propriété

Renvoie une valeur de type Long (entier long) contenant le nombre d'objets d'une collection. Propriété en lecture seule.


Description, propriété

Renvoie ou définit une expression de chaîne contenant la description d'un objet. Propriété en lecture-écriture.

Pour l'objet Err, renvoie ou définit une chaîne descriptive associée à l'erreur.

Remarques

La propriété Description comprend une courte description de l'erreur. Utilisez cette propriété pour prévenir l'utilisateur qu'il se trouve confronté à une erreur que vous ne pouvez pas ou ne voulez pas gérer. Lors de la génération d'une erreur définie par l'utilisateur, attribuez une courte description de votre erreur à cette propriété. Si la propriété Description n'est pas définie et si la valeur de la propriété Number correspond à une erreur d'exécution Visual Basic, la chaîne renvoyée par la fonction Error est placée dans la propriété Description lorsque l'erreur est générée.


HelpContext, propriété

Renvoie ou définit une expression de chaîne contenant l'identificateur de contexte associé à une rubrique d'un fichier d'aide. Propriété en lecture-écriture.

Remarques

La propriété HelpContext permet d'afficher automatiquement la rubrique indiquée dans la propriété HelpFile. Si les deux propriétés HelpFile et HelpContext sont vides, la valeur de la propriété Number est vérifiée. Si la valeur de la propriété Number correspond à la valeur d'une erreur d'exécution Visual Basic, l'identificateur de contexte de l'aide Visual Basic pour cette erreur est utilisé. Si la valeur de la propriété Number ne correspond pas à une erreur Visual Basic, l'écran Sommaire du fichier d'aide Visual Basic s'affiche.

Note   Nous vous invitons à écrire des routines dans votre application pour la gestion des erreurs caractéristiques. Lors de la programmation à l'aide d'un objet, vous pouvez utiliser le fichier d'aide de l'objet pour améliorer la qualité de votre gestion d'erreur, ou pour afficher un message explicite à l'attention de votre utilisateur si l'erreur n'est pas récupérable.


HelpFile, propriété

Renvoie ou définit une expression de chaîne contenant le chemin d'accès complet à un fichier d'aide. Propriété en lecture-écriture.

Remarques

Si un fichier d'aide est indiqué dans la propriété HelpFile, il est appelé automatiquement lorsque l'utilisateur appuie sur le bouton Aide (ou sur la touche F1)) dans la boîte de dialogue du message d'erreur. Si la propriété HelpContext contient un identificateur de contexte pour le fichier indiqué, cette rubrique est affichée automatiquement. Si aucune propriété HelpFile n'est indiquée, le fichier d'aide Visual Basic est affiché.

Note   Nous vous invitons à écrire des routines dans votre application pour la gestion des erreurs caractéristiques. Lors de la programmation à l'aide d'un objet, vous pouvez utiliser le fichier d'aide de l'objet pour améliorer la qualité de votre gestion d'erreur, ou pour afficher un message explicite à l'attention de votre utilisateur si l'erreur n'est pas récupérable.


LastDLLError, propriété

Renvoie un code d'erreur système produit par un appel à une bibliothèque de liaisons dynamiques (DLL). Propriété en lecture seule.

Remarques

La propriété LastDLLError s'applique uniquement aux appels aux DLL issues de code Visual Basic. Lorsque ce type d'appel est effectué, la fonction appelée renvoie généralement un code indiquant le succès ou l'échec. La propriété LastDLLError est alors définie. Consultez la documentation relative aux fonctions DLL pour déterminer quelles valeurs renvoyées indiquent un succès ou un échec. Lors d'un échec, Visual Basic doit immédiatement vérifier la propriété LastDLLError. Aucune exception n'est générée lorsque la propriété LastDLLError est définie.


Number, propriété

Renvoie ou définit une valeur numérique indiquant une erreur. La propriété Number est la propriété par défaut de l'objet Err. Propriété en lecture-écriture.

Remarques

Lors du renvoi d'une erreur définie par l'utilisateur par un objet, affectez à Err.Number la valeur obtenue en ajoutant à la constante vbObjectError le nombre que vous avez choisi comme code d'erreur. Par exemple, le code suivant renvoie le nombre 1051 comme code d'erreur :

Err.Raise Number := vbObjectError + 1051, Source:= "UneClasse"


Source, propriété

Renvoie ou définit une expression de chaîne indiquant le nom de l'objet ou de l'application qui a généré l'erreur à l'origine. Propriété en lecture-écriture.

Remarques

La propriété Source indique une expression de chaîne représentant l'objet qui a généré l'erreur ; l'expression est généralement le nom de classe de l'objet ou son identificateur de programmation. Utilisez la propriété Source pour fournir à vos utilisateurs des informations lorsque votre code s'avère incapable de gérer une erreur générée dans un objet auquel vous accédez. Par exemple, si vous accédez à Microsoft Excel et si cette application génère une erreur de Division par zéro, Microsoft Excel attribue à la propriété Err.Number le code d'erreur correspondant à cette erreur et attribue la valeur Excel.Application à la propriété Source.

Lors de la génération d'une erreur à partir du code, Source est l'identificateur de programmation de votre application. Pour les modules de classe, la propriété Source doit contenir un nom au format project.class. Lorsqu'une erreur inattendue se produit dans votre code, la propriété Source est automatiquement définie. En cas d'erreurs survenant dans un module standard, la propriété Source contient le nom du projet. En cas d'erreurs survenant dans un module de classe, la propriété Source contient un nom au format project.class.


DeleteSetting, instruction, exemple

L'exemple suivant utilise d'abord l'instruction SaveSetting pour entrer des données relatives à l'application MyApp dans la base de registres Windows (ou dans le fichier .INI sur les plates-formes Windows 16 bits) . L'instruction DeleteSetting est ensuite utilisée pour supprimer ces entrées. Puisque aucun argument key n'est spécifié, toute la section est supprimée avec le nom de la section et toutes ses clés.

' Place les paramètres dans la base de registres.

SaveSetting appname := "MyApp", section := "Startup", _

key := "Top", setting := 75

SaveSetting "MyApp","Startup", "Left", 50

' Supprime de la base de registres la section avec tous ses paramètres.

DeleteSetting "MyApp", "Startup"


GetAllSettings, fonction, exemple

L'exemple suivant utilise d'abord l'instruction SaveSetting pour entrer des données relatives à l'application appname dans la base de registres Windows  (ou dans le fichier .INI sur les plates-formes Windows 16 bits) . La fonction GetAllSettings est ensuite utilisée pour afficher les paramètres. Notez que les noms des applications comme ceux des sections ne peuvent pas être extraits par la fonction GetAllSettings. Pour terminer, l'instruction DeleteSetting supprime les entrées relatives à l'application.

' Variant devant contenir un tableau à deux dimensions renvoyé par la

' fonction GetAllSettings Nombre entier correspondant à la valeur du compteur.

Dim MySettings As Variant, intSettings As Integer

' Place des paramètres dans la base de registres.

SaveSetting appname := "MyApp", section := "Startup", _

key := "Top", setting := 75

SaveSetting "MyApp","Startup", "Left", 50

' Extrait les paramètres.

MySettings = GetAllSettings(appname := "MyApp", section := "Startup")

For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)

Debug.Print MySettings(intSettings, 0), MySettings(intSettings, 1)

Next intSettings

DeleteSetting "MyApp", "Startup"


GetSetting, fonction, exemple

L'exemple suivant utilise d'abord l'instruction SaveSetting pour entrer des données relatives à l'application appname dans la base de registres Windows  (ou dans le fichier .INI sur les plates-formes Windows 16 bits). La fonction GetSetting est ensuite utilisée pour afficher l'un des paramètres. Puisque l'argument default est spécifié, vous avez la certitude que des valeurs seront renvoyées. Notez que les noms des sections ne peuvent pas être extraits par la fonction GetSetting. Pour terminer, l'instruction DeleteSetting supprime les entrées relatives à l'application.

' Variant devant contenir un tableau à deux dimensions renvoyé par la fonction GetSettings

Dim MySettings As Variant

' Place des paramètres dans la base de registres.

SaveSetting "MyApp","Startup", "Top", 75

SaveSetting "MyApp","Startup", "Left", 50

Debug.Print GetSetting(appname := "MyApp", section := "Startup", _

                       key :="Left", default := "25")

DeleteSetting "MyApp", "Startup"


SaveSetting, instruction, exemple

L'exemple suivant utilise d'abord l'instruction SaveSetting pour entrer des données relatives à l'application MyApp dans la base de registres Windows (ou dans le fichier .INI sur les plates-formes Windows 16 bits). L'instruction DeleteSetting est ensuite utilisée pour supprimer ces entrées.

' Place des paramètres dans la base de registres.

SaveSetting appname := "MyApp", section := "Startup", _

key := "Top", setting := 75

SaveSetting "MyApp","Startup", "Left", 50

' Supprime de la base de registres la section avec tous ses paramètres.

DeleteSetting "MyApp", "Startup"


DeleteSetting, instruction

Supprime une valeur de section ou de clé d'une entrée d'application dans la base de registres de Windows.

Syntaxe

DeleteSetting appname, section[, key]

La syntaxe de l'instruction DeleteSetting comprend les arguments nommés suivants :

Élément	Description
appname	Expression de chaîne contenant le nom de l'application ou du projet auquel s'applique la valeur de section ou de clé.
section	Expression de chaîne contenant le nom de la section dans laquelle la valeur de clé est supprimée. Si seuls les arguments nomapp et section sont indiqués, la section définie est supprimée en même temps que les valeurs de clé connexes.
key	Facultatif. Expression de chaîne contenant le nom de la valeur de clé à supprimer.
Remarques

Si tous les arguments sont indiqués, la valeur spécifiée est supprimée. Une erreur d'exécution se produit si vous tentez d'utiliser l'instruction DeleteSetting sur une valeur de clé ou une section inexistante.


GetAllSettings, fonction

Renvoie une liste des clés et leurs valeurs respectives (créées à l'origine à l'aide de l'instruction SaveSetting), figurant dans une entrée d'application de la base de registres de Windows..

Syntaxe

GetAllSettings(appname, section)

La syntaxe de la fonction GetAllSettings comprend les arguments nommés suivants :

Élément	Description
appname	Expression de chaîne contenant le nom de l'application ou du projet dont vous voulez extraire les valeurs de clé.
section	Expression de chaîne contenant le nom de la section dont vous voulez extraire les valeurs de clé. La fonction GetAllSettings renvoie une valeur de type Variant contenant un tableau de chaînes à deux dimensions où sont stockées les clés de la section indiquée et leur valeur.
Remarques

La fonction GetAllSettings renvoie une valeur de type Variant non initialisée si les arguments appname ou section n'existent pas.


GetSetting, fonction

Renvoie une valeur de clé d'une entrée d'application de la base de registres de Windows.

Syntaxe

GetSetting(appname, section, key[, default])

La syntaxe de la fonction GetSetting comprend les arguments nommés suivants :

Élément	Description
appname	Expression de chaîne contenant le nom de l'application ou du projet dont vous extrayez une valeur de clé.
section	Expression de chaîne contenant le nom de la section où se trouve la valeur de clé.
key	Expression de chaîne contenant le nom de la valeur de clé à renvoyer.
default	Facultatif. Expression contenant la valeur à renvoyer si la clé ne contient pas de valeur. Si l'argument default est omis, une chaîne de longueur nulle ("") est renvoyée.
Remarques

Si l'un des éléments cités comme argument de GetSetting n'existe pas, la fonction GetSetting renvoie la valeur de l'argument default.


SaveSetting, instruction

Enregistre ou crée une entrée d'application dans la base de registres de Windows.

Syntaxe

SaveSetting appname, section, key, value

La syntaxe de l'instruction SaveSetting comprend les arguments nommés suivants :

Élément	Description
Appname	Expression de chaîne contenant le nom de application ou du projet concerné.
Section	Expression de chaîne contenant le nom de la section dans laquelle la valeur de clé doit être enregistrée.
Key	Expression de chaîne contenant le nom de la valeur de clé à enregistrer.
Value	Expression contenant la valeur attribuée à key.
Remarques

Une erreur se produit si la valeur de clé ne peut pas être enregistrée.


Chr, fonction, exemple

Cet exemple utilise la fonction Chr pour renvoyer le caractère associé au code de caractère spécifié.

Dim MyChar

MyChar = Chr(65)	' Renvoie A.

MyChar = Chr(97)	' Renvoie a.

MyChar = Chr(62)	' Renvoie >.

MyChar = Chr(37)	' Renvoie %.


Format, fonction, exemple

Cet exemple montre diverses utilisations de la fonction Format pour mettre des valeurs au format choisi sur la base de formats nommés ou de formats définis par l'utilisateur. Pour ce qui concerne le séparateur de date (/), d'heure (:) et le littéral AM/PM, la sortie formatée réellement affichée par votre système dépend des paramètres régionaux avec lesquels le code s'exécute. Lorsque les heures et les dates sont affichées dans l'environnement de développement, ce sont les formats heure et date raccourcis des paramètres régionaux qui sont utilisés. Lorsqu'ils s'affichent par exécution du code, les formats heure et date raccourcis utilisés sont ceux des paramètres système, qui peuvent différer des paramètres régionaux. Pour cet exemple, les paramètres Français-France sont utilisés.

MyTime et MyDate s'affichent dans l'environnement de développement dans les formats heure et date raccourcis définis par le paramétrage actuel du système.

Dim MyTime, MyDate, MyStr

MyTime = #17:04:23#

MyDate = #Janvier 27, 1993#

' Renvoie l'heure système courante dans le format long défini par le 'système.

MyStr = Format(Time, "Heure, complet")

' Renvoie la date système courante dans le format long défini par le 'système.

MyStr = Format(Date, "Date, abrégé")

MyStr = Format(MyTime, "h:m:s")	' Renvoie "17:4:23".

MyStr = Format(MyTime, "hh:mm:ss AMPM")	' Renvoie "05:04:23 PM".

MyStr = Format(MyDate, "jjjj j mmm yyyy")	' Renvoie "Vendredi 27 janvier

'1993"

' Si aucun format n'est spécifié, une chaîne est renvoyée.

MyStr = Format(23)	' Renvoie "23".

' Formats définis par l'utilisateur.

MyStr = Format(5459.4, "##,##0.00")	' Renvoie "5 459,40".

MyStr = Format(334.9, "###0.00")	' Renvoie "334,90".

MyStr = Format(5, "0.00%")	' Renvoie "500,00%".

MyStr = Format("BONJOUR", "<")	' Renvoie "bonjour".

MyStr = Format("Et voilà!", ">")	' Renvoie  "ET VOILÀ!".


Hex, fonction, exemple

Cet exemple utilise la fonction Hex pour renvoyer la valeur hexadécimale d'un nombre.

Dim MyHex

MyHex = Hex(5)	' Renvoie 5.

MyHex = Hex(10)	' Renvoie A.

MyHex = Hex(459)	' Renvoie 1CB.


InStr, fonction, exemple

Cet exemple utilise la fonction InStr pour renvoyer la position de la première occurrence d'une chaîne dans une autre chaîne.

Dim SearchString, SearchChar, MyPos

SearchString ="XXpXXpXXPXXP"	' Chaîne dans laquelle s'effectue la

' recherche.

SearchChar = "P"	' Recherche la chaîne "P".

' Une comparaison sans respect des majuscules et des minuscules commence ' à la position 4 et renvoie 6.

MyPos = Instr(4, SearchString, SearchChar, 1)

' Une comparaison avec respect des majuscules et des minuscules commence ' à la position 1 et renvoie 9.

MyPos = Instr(1, SearchString, SearchChar, 0)

' Par défaut (lorsque le dernier argument est omis),la recherche respecte ' les majuscules et les minuscules.

MyPos = Instr(SearchString, SearchChar)	' Renvoie 9.

MyPos = Instr(1, SearchString, "W")	' Renvoie 0.


LCase, fonction, exemple

Cet exemple utilise la fonction LCase pour renvoyer une chaîne dans une version en caractères minuscules.

Dim UpperCase, LowerCase

Uppercase = "Bonjour À Tous 1234"	' Chaîne à convertir.

Lowercase = Lcase(UpperCase)	' Renvoie "bonjour à tous 1234".


Left, fonction, exemple

Cet exemple utilise la fonction Left pour renvoyer un nombre de caractères spécifié en partant de l'extrémité gauche de la chaîne.

Dim AnyString, MyStr

AnyString = "Bonjour à tous"	' Définit la chaîne.

MyStr = Left(AnyString, 1)	' Renvoie "B".

MyStr = Left(AnyString, 7)	' Renvoie "Bonjour".

MyStr = Left(AnyString, 20)	' Renvoie "Bonjour à tous".


Len, fonction, exemple

Ce premier exemple utilise la fonction Len pour renvoyer le nombre de caractères composant une chaîne ou le nombre d'octets nécessaires pour contenir une variable. Le bloc Type...End Type définissant CustomerRecord doit être précédé du mot-clé Private s'il apparaît dans un module de classe. Dans un module standard, une instruction Type peut être de type Public.

Type CustomerRecord	' Définit le type défini  par l'utilisateur.

ID As Integer	' Place cette définition dans un

Name As String * 10	' module standard.

Address As String * 30

End Type

Dim Customer As CustomerRecord	' Déclare les variables.

Dim MyInt As Integer, MyCur As Currency

Dim MyString, MyLen

MyString = "Bonjour le Monde"	' Initialise la variable.

MyLen = Len(MyInt)	' Renvoie 2.

MyLen = Len(Customer)	' Renvoie 42.

MyLen = Len(MyString)	' Renvoie 16.

MyLen = Len(MyCur)	' Renvoie 8.

Ce second exemple utilise la fonction LenB et une fonction définie par l'utilisateur (LenMbcs) pour renvoyer le nombre d'octets (caractères) dans une chaîne, à condition qu'ANSI soit utilisé pour le codage de la chaîne.

Function LenMbcs (ByVal str as String)

LenMbcs = LenB(StrConv(str, vbFromUnicode))

End Function

Dim MyString, MyLen

MyString = "ABc"

' Où "A" and "B" sont DBCS et "c" est SBCS.

MyLen = Len(MyString)

' Renvoie 3 - 3 caractères dans la chaîne.

MyLen = LenB(MyString)

' Renvoie 6 - 6 octets utilisés pour Unicode.

MyLen = LenMbcs(MyString)

' Renvoie 5 - 5 octets utilisés pour ANSI.


LSet, instruction, exemple

Cet exemple utilise la fonction LSet pour aligner à gauche une chaîne à l'intérieur d'une variable chaîne. Bien que la fonction LSet puisse aussi servir à copier une variable d'un certain type défini par l'utilisateur en une variable d'un type défini par l'utilisateur différent, mais compatible, cette pratique n'est pas recommandée. Du fait de la diversité des structures de données mises en œuvre sur les différentes plates-formes, la portabilité d'une telle utilisation de l'instruction LSet ne peut pas être garantie.

Dim MyString

MyString = "0123456789"	' Initialise la chaîne.

Lset MyString = "<-Left"	' MyString contient "<-Left    ".


LTrim, RTrim et Trim, fonctions, exemple

Cet exemple utilise les fonctions LTrim et RTrim pour éliminer respectivement les espaces se trouvant à gauche et à droite d'une variable chaîne. La fonction Trim permet d'éliminer les deux types d'espace.

Dim MyString, TrimString

MyString = "  <-Trim->  "	' Initialise la chaîne.

TrimString = LTrim(MyString)	' TrimString = "<-Trim->  ".

TrimString = RTrim(MyString)	' TrimString = <-Trim->".

TrimString = LTrim(RTrim(MyString))	' TrimString = "<-Trim->".

' L'utilisation de la fonction Trim seule produit le même résultat.

TrimString = Trim(MyString)	' TrimString = "<-Trim->".


Mid, fonction, exemple

Ce premier exemple utilise la fonction Mid pour renvoyer un nombre de caractères déterminé parmi ceux composant une chaîne.

Dim MyString, FirstWord, LastWord, MidWords

MyString = "Démo Fonction Mid"	' Crée une chaîne texte.

FirstWord = Mid(MyString, 1, 4)	' Renvoie "Démo".

LastWord = Mid(MyString, 6, 8)	' Renvoie "Fonction".

MidWords = Mid(MyString, 6)	' Renvoie "Fonction Mid".

Ce second exemple utilise la fonction MidB et une fonction définie par l'utilisateur (MidMbcs) pour renvoyer également les caractères de la chaîne. La différence réside dans le fait que la chaîne en entrée est en format ANSI et que la longueur est en octets.

Function MidMbcs(ByVal str as String, start, length)

MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)

End Function

Dim MyString

MyString = "AbCdEfG"

' Où "A", "C", "E", et "G" sont DBCS et "b", "d"

' et "f" sont SBCS.

MyNewString = Mid(MyString, 3, 4)

' Renvoie ""CdEf"

MyNewString = MidB(MyString, 3, 4)

' Renvoie ""bC"

MyNewString = MidMbcs(MyString, 3, 4)

' Renvoie "bCd"


Mid, instruction, exemple

Cet exemple utilise l'instruction Mid pour remplacer un nombre déterminé de caractères d'une variable chaîne par des caractères issus d'une autre chaîne.

Dim MyString

MyString = "Le chien saute"	' Initialise la chaîne.

Mid(MyString, 4, 5) = "lapin"	' MyString = "Le lapin saute".

Mid(MyString, 4) = "boeuf"	' MyString = "Le boeuf saute".

Mid(MyString, 4) = "boeuf sauta par-dessus"	' MyString = "Le boeuf sauta".

Mid(MyString, 4, 5) = "canard"	' MyString = "Le canard sauta".


Oct, fonction, exemple

Cet exemple utilise la fonction Oct pour renvoyer la valeur octale d'un nombre.

Dim MyOct

MyOct = Oct(4) 	' Renvoie 4.

MyOct = Oct(8)	' Renvoie 10.

MyOct = Oct(459)	' Renvoie 713.


Right, fonction, exemple

Cet exemple utilise la fonction Right pour renvoyer un nombre de caractères déterminé d'une chaîne en partant de l'extrémité droite.

Dim AnyString, MyStr

AnyString = "Bonjour à tous"	' Définit la chaîne.

MyStr = Right(AnyString, 1)	' Renvoie "s".

MyStr = Right(AnyString, 6)	' Renvoie "à tous".

MyStr = Right(AnyString, 20)	' Renvoie "Bonjour à tous".


RSet, instruction, exemple

Cet exemple utilise l'instruction RSet pour aligner à droite une chaîne contenue dans une variable chaîne.

Dim MyString

MyString = "0123456789"	' Initialise la chaîne.

Rset MyString = "Right->"	' MyString contient "   Right->".


Space, fonction, exemple

Cet exemple utilise la fonction Space pour renvoyer une chaîne composée d'un nombre d'espaces spécifié.

Dim MyString

' Renvoie une chaîne de 10 espaces.

MyString = Space(10)

' Insère 10 espaces entre deux chaînes.

MyString = "Bonjour" & Space(10) & "à tous"


Str, fonction, exemple

Cet exemple utilise la fonction Str pour renvoyer une représentation d'un nombre sous la forme d'une chaîne. Lorsqu'un nombre est converti en chaîne, un espace est toujours réservé à droite pour son signe.

Dim MyString

MyString = Str(459)	' Renvoie " 459".

MyString = Str(-459.65)	' Renvoie "-459,65".

MyString = Str(459.001)	' Renvoie " 459,001".


StrComp, fonction, exemple

Cet exemple utilise la fonction StrComp pour renvoyer les résultats d'une comparaison de chaînes. Si le troisième argument est 1, une comparaison textuelle s'effectue. Si cet argument est 0 ou s'il est omis, c'est une comparaison binaire qui est réalisée.

Dim MyStr1, MyStr2, MyComp

MyStr1 = "ABCD": MyStr2 = "abcd"	' Définit les variables.

MyComp = StrComp(MyStr1, MyStr2, 1)	' Renvoie 0.

MyComp = StrComp(MyStr1, MyStr2, 0)	' Renvoie -1.

MyComp = StrComp(MyStr2, MyStr1)	' Renvoie 1.


String, fonction, exemple

Cet exemple utilise la fonction String pour renvoyer des chaînes de caractères répétés sur une longueur spécifiée.

Dim MyString

MyString = String(5, "*")	' Renvoie "*****".

MyString = String(5, 42)	' Renvoie "*****".

MyString = String(10, "ABC")	' Renvoie "AAAAAAAAAA".


UCase, fonction, exemple

Cet exemple utilise la fonction UCase pour renvoyer une chaîne dans une version en caractères majuscules.

Dim LowerCase, UpperCase

LowerCase = "Bonjour à tous 1234"	' Chaîne à convertir.

UpperCase = UCase(LowerCase)	' Renvoie "BONJOUR À TOUS 1234".


StrConv, fonction, exemple

Cet exemple utilise la fonction StrConv pour convertir une chaîne Unicode en une chaîne ANSI.

Dim i As Long

Dim x() As Byte

x = StrConv("ABCDEFG", vbFromUnicode)	' Convertit la chaîne.

For i = 0 To UBound(x)

Debug.Print x(i)

Next


Chr, fonction

Renvoie une valeur de type String contenant le caractère associé au code de caractère indiqué.

Syntaxe

Chr(charcode)

L'argument charcode est une donnée de type Long qui identifie un caractère.

Remarques

Les nombres compris entre 0 et 31 sont identiques aux codes standard ASCII non imprimables. Par exemple, la fonction Chr(10) renvoie un caractère de saut de ligne. La valeur de l'argument charcode est normalement comprise entre 0 et 255. Toutefois, sur des systèmes DBCS, la valeur de l'argument charcode peut être comprise entre -32768 et 65535.

Note   La fonction ChrB est utilisée pour traiter sous forme d'octets les données d'une valeur de type String. Au lieu de renvoyer un caractère codé sur un ou deux octets, la fonction ChrB renvoie toujours un seul octet. La fonction ChrW renvoie une valeur de type String contenant le caractère Unicode, sauf sur les plates-formes qui ne gèrent pas ce caractère. Dans ce cas, le comportement est le même que pour la fonction Chr.

Note   Sur Macintosh, Visual Basic ne prend pas en charge les chaînes Unicode. Par conséquent, la fonction ChrW(n) ne peut pas renvoyer les caractères Unicode correspondant aux valeurs n comprises entre 128 et 65 535, comme elle le fait sous Windows. En revanche, la fonction ChrW(n) propose une valeur de son choix pour les valeurs n Unicode supérieures à 127. Il est donc recommandé de ne pas utiliser la fonction ChrW dans l'environnement Macintosh.


Format, fonction

Renvoie une valeur de type Variant (String) contenant une expression formatée en fonction des instructions contenues dans l'expression de mise en forme.

Syntaxe

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

La syntaxe de la fonction Format comprend les éléments suivants :

Élément	Description
expression	Toute expression valide.
format	Facultatif. Expression de mise en forme valide, nommée ou définie par l'utilisateur.
firstdayofweek	Facultatif. Constante indiquant le premier jour de la semaine.
firstweekofyear	Facultatif. Constante indiquant la première semaine de l'année.
Valeurs

L'argument firstdayofweek peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utilise le paramètre NLS API.
VbSunday	1	Dimanche (valeur par défaut)
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi
L'argument firstweekofyear peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utilise le paramètre NLS API.
vbFirstJan1	1	Commence par la semaine qui comprend le 1er janvier (valeur par défaut).
vbFirstFourDays	2	Commence par la première semaine qui comprend au moins quatre jours de la nouvelle année.
vbFirstFullWeek	3	Commence par la première semaine complète de l'année.
Remarques

Pour mettre en forme des	Vous devez
Nombres	Utiliser des formats numériques nommés prédéfinis ou créer des formats numériques définis par l'utilisateur.
Dates et heures	Utiliser des formats de date et d'heure nommés prédéfinis ou créer des formats de date et d'heure définis par l'utilisateur.
Numéros de série de date et d'heure	Utiliser des formats de date ou d'heure ou des formats numériques.
Chaînes	Créer des formats de chaîne définis par l'utilisateur.
Si vous essayez de mettre en forme un nombre sans préciser l'argument format, la fonction Format offre les mêmes fonctionnalités que la fonction Str, tout en respectant les paramètres internationaux. Toutefois, dans le cas des nombres positifs mis en forme en tant que chaînes à l'aide de la fonction Format, il manque l'espace à gauche réservé à l'affichage du signe de la valeur, alors que les nombres convertis avec la fonction Str conservent cet espace.

Si vous essayez de mettre en forme des nombres, vous devez utiliser un format numérique défini par l'utilisateur pour être certain d'obtenir le résultat désiré.

Note   Si la valeur de la propriété Calendar est Grégorien et que l'argument format indique un format de date, l'expression fournie par l'utilisateur doit être du même type. Si la propriété Calendar de Visual Basic a la valeur Hijri, l'expression doit prendre la valeur Hijri.

Lorsque le calendrier est grégorien, la signification des symboles de l'expression format demeure inchangée. En revanche, s'il s'agit du calendrier Hijri, tous les symboles de mise en forme de date (comme dddd, mmmm, yyyy) gardent la même signification mais s'appliquent au calendrier Hijri. Les symboles de mise en forme restent en anglais ; les symboles qui apparaissent à l'écran (comme A.M. et P.M.) permettent d'afficher la chaîne (en anglais ou en arabe) associée à ce symbole. La plage de certains symboles change lorsque le calendrier est Hijri.

Symbole	Plage
d	1 à 30
dd	1 à 30
ww	1 à 51
mmm	Affiche le nom complet des mois (il n'existe pas de forme abrégée pour les les noms des mois Hijri).
y	1 à 355
yyyy	100 à 9666


Formats numériques nommés (fonction Format)

Le tableau suivant présente les noms des formats numériques prédéfinis :

Nom de format	Description
Nombre général	Affichage du nombre sans séparateur de milliers.
Monétaire	Affichage du nombre avec un séparateur de milliers, le cas échéant ; affichage de deux chiffres à droite du séparateur décimal. Le résultat est fonction des paramètres régionaux de votre système.
Fixe	Affichage d'au moins un chiffre à gauche et de deux chiffres à droite du séparateur décimal.
Standard	Affichage d'un nombre avec séparateur de milliers et d'au moins un chiffre à gauche et de deux chiffres à droite du séparateur décimal.
Pourcentage	Affichage d'un nombre multiplié par 100 suivi du signe pourcentage (%) ; affichage automatique de deux chiffres à droite du séparateur décimal.
Scientifique	Utilisation de la notation scientifique standard.
Oui/Non	Affichage de Non si le nombre est 0 ; sinon affichage de Oui.
Vrai/Faux	Affichage de Faux si le nombre est 0 ; sinon affichage de Vrai.
Actif/Inactif	Affichage de Inactif si le nombre est 0 ; sinon affichage de Actif.


Formats numériques définis par l'utilisateur (fonction Format)

Le tableau suivant présente les caractères que vous pouvez utiliser pour créer des formats numériques définis par l'utilisateur :

Caractère	Description
Aucun	Affichage du nombre sans mise en forme.
(0)	Espace réservé à un chiffre. Affichage d'un chiffre ou d'un zéro. Si l'expression contient un chiffre à la position occupée par le 0 dans la chaîne de mise en forme, il est affiché ; sinon un zéro est affiché à cet emplacement. Si le nombre possède moins de chiffres que de zéros (de part et d'autre du séparateur décimal) dans l'expression de mise en forme, les zéros non significatifs et les zéros à droite sont affichés. Si le nombre compte plus de chiffres à droite du séparateur décimal que de zéros à droite de ce séparateur dans l'expression de mise en forme, le nombre est arrondi à autant de chiffres après la virgule qu'il y a de zéros. Si le nombre compte plus de chiffres à gauche du séparateur décimal qu'il y a de zéros à gauche de ce séparateur dans l'expression de mise en forme, les chiffres supplémentaires sont affichés sans modification.
(#)	Espace réservé à un chiffre. Affichage d'un chiffre ou d'aucun caractère. Si l'expression mise en forme contient un chiffre à la position occupée par le signe # dans la chaîne de mise en forme, il est affiché ; sinon, rien n'est affiché à cet emplacement. Ce symbole se comporte comme l'espace réservé au chiffre 0 ; cependant, les zéros non significatifs et les zéros à droite ne sont pas affichés si le nombre compte un nombre de chiffres inférieur ou égal au nombre de caractères # situés de part et d'autre du séparateur décimal dans l'expression de mise en forme.
(.)	Espace réservé au séparateur décimal. Dans certains paramètres régionaux, le séparateur décimal est représenté par une virgule. L'espace réservé au séparateur décimal détermine le nombre de chiffres affichés de part et d'autre de ce séparateur. Si l'expression de mise en forme ne contient que des signes de nombre à gauche de ce symbole, les nombres inférieurs à 1 commencent par ce séparateur. Pour afficher les nombres fractionnaires avec un zéro non significatif, indiquez un 0 comme premier espace réservé à gauche du séparateur décimal. Le caractère réservé au séparateur décimal dans la sortie mise en forme dépend du format des nombres utilisé par votre système.
(%)	Espace réservé au signe pourcentage. L'expression est multipliée par 100. Le signe pourcentage (%) est inséré à la position où il apparaît dans la chaîne de mise en forme.
(,)	Dans certains paramètres régionaux, le séparateur de milliers est représenté par un espace. Le séparateur de milliers sépare les milliers des centaines dans un nombre qui comporte au moins quatre chiffres à gauche du séparateur décimal. Le séparateur de milliers standard est utilisé si le format contient un séparateur de milliers entouré d'espaces réservés à un chiffre (0 ou #). Deux séparateurs de milliers adjacents ou un séparateur de milliers situé immédiatement à gauche du séparateur décimal (qu'une décimale soit précisée ou non) signifie "reformuler le nombre en le divisant par 1 000 et en l'arrondissant si nécessaire". Par exemple, vous pouvez utiliser la chaîne de mise en forme "##0,, " pour représenter 100 millions sous la forme 100. Pour les nombres inférieurs à 1 million, un 0 est affiché. Deux séparateurs de milliers adjacents occupant n'importe quelle position autre que celle immédiatement à gauche du séparateur décimal sont considérés comme un seul séparateur de milliers. Le caractère effectivement utilisé comme séparateur de milliers dans la sortie mise en forme dépend du format des nombres utilisé par votre système.
(:)	Séparateur horaire. Dans certains paramètres régionaux, le séparateur horaire est représenté par d'autres caractères. Le séparateur horaire dissocie les heures, les minutes et les secondes lorsque des valeurs horaires sont mises en forme. Le caractère effectivement utilisé comme séparateur horaire dans la sortie mise en forme dépend des paramètres de votre système.
(/)	Séparateur de date. Dans certains paramètres régionaux, le séparateur de date est représenté par d'autres caractères. Le séparateur de date dissocie le jour, le mois et l'année lorsque des valeurs de date sont mises en forme. Le caractère effectivement utilisé comme séparateur de date dans la sortie mise en forme dépend des paramètres de votre système.
(E- E+ e- e+)	Format scientifique. Si l'expression de mise en forme contient au moins un espace réservé à un chiffre (0 ou #) à droite de E-, E+, e- ou de e+, le nombre est affiché au format scientifique et E ou e est inséré entre le nombre et son exposant. Le nombre d'espaces réservés à un chiffre sur la droite détermine le nombre de chiffres de l'exposant. Utilisez E- ou e- pour placer un signe moins devant des exposants négatifs. Utilisez E+ ou e+ pour placer un signe moins devant des exposants négatifs et un signe plus devant des exposants positifs.
- + $ ( )	Affichage d'un caractère littéral. Pour afficher un caractère différent de ceux répertoriés, faites-le précéder d'une barre oblique inverse (\) ou placez-le entre guillemets doubles (" ").
(\)	Affichage du caractère suivant de la chaîne de mise en forme. Pour afficher un caractère doté d'une signification spéciale sous la forme de caractère littéral, faites-le précéder d'une barre oblique inverse (\). La barre oblique inverse n'est pas affichée. Son utilisation revient à placer entre guillemets doubles le caractère suivant. Pour afficher une barre oblique inverse, utilisez deux barres obliques inverses (\\). Les caractères de mise en forme de date et heure (a, c, d, h, m, n, p, q, s, t, w, y, / et :), les caractères de mise en forme numérique (#, 0, %, E, e, séparateur décimal et séparateur des milliers) et les caractères de mise en forme de chaîne (@, &, <, > et !) sont des exemples de caractères qui ne peuvent être affichés comme caractères littéraux.
("ABC")	Affichage de la chaîne entre guillemets doubles (" "). Pour inclure une chaîne dans l'argument format à partir du code, vous devez utiliser la fonction Chr(34) pour placer le texte entre guillemets doubles (34 est le code de caractère correspondant aux guillemets doubles (")).


Formats pour différentes valeurs numériques (fonction Format)

Une expression de mise en forme de nombres définie par l'utilisateur peut être constituée de une à quatre sections séparées par un point-virgule. Si l'argument format contient l'un des formats nommés prédéfinis, une seule section est autorisée.

Sections utilisées	Résultat
Une seule section	L'expression de mise en forme concerne toutes les valeurs.
Deux sections	La première section concerne les valeurs positives et les zéros, la deuxième les valeurs négatives.
Trois sections	La première section concerne les valeurs positives, la deuxième les valeurs négatives et la troisième les zéros.
Quatre sections	La première section concerne les valeurs positives, la deuxième les valeurs négatives, la troisième les zéros et la quatrième les valeurs de type Null.
L'exemple suivant utilise deux sections : la première définit le format des valeurs positives et des zéros, la seconde définit le format des valeurs négatives.

"$#,##0;($#,##0)"

Si deux points-virgules se suivent immédiatement, la section manquante est imprimée selon le format de la valeur positive. Par exemple, le format suivant affiche des valeurs positives et négatives en utilisant le format de la première section et affiche "Zero" si la valeur est égale à zéro.

"$#,##0;;\Z\e\r\o"


Expressions de mise en forme de nombres définies par l'utilisateur, exemple

Le tableau suivant présente quelques exemples d'expressions de mise en forme de nombres. (Ces exemples supposent que la langue sélectionnée dans les paramètres régionaux de votre système soit le français). La première colonne contient les chaînes de mise en forme et les autres colonnes contiennent la sortie obtenue lorsque les données mises en forme prennent la valeur indiquée dans les en-têtes des colonnes.

Format (format)	5 positif	5 négatif	0,5 décimal	Null
Chaîne de longueur nulle ("")	5	-5	0,5
0	5	-5	1
0.00	5,00	-5,00	0,50
#,##0	5	-5	1
#,##0.00;;;Néant	5,00	-5,00	0,50	Néant
$#,##0;($#,##0)	$5	($5)	$1
$#,##0.00;($#,##0.00)	$5,00	($5,00)	$0,50
0%	500%	-500%	50%
0.00%	500,00%	-500,00%	50,00%
0.00E+00	5,00E+00	-5,00E+00	5,00E-01
0.00E-00	5,00E00	-5,00E00	5,00E-01


Formats de date/heure nommés (fonction Format)

Le tableau suivant présente les noms des formats de date et d'heure prédéfinis :

Nom de format	Description
Date, général	Affichage de la date et/ou de l'heure. Pour des nombres réels, affichage de la date et de l'heure, par exemple 4/3/93 05:34 PM. S'il n'y a pas de partie décimale, affichage de la date seulement, par exemple 4/3/93. S'il n'y a pas de partie entière, affichage de l'heure seulement, par exemple, 05:34 PM. Le format de la date est déterminé par les paramètres de votre système.
Date, complet	Affichage de la date complète selon le format défini dans votre système.
Date, réduit	Affichage de la date selon le format intermédiaire conforme à la langue de l'application hôte.
Date, abrégé	Affichage de la date abrégée selon le format défini dans votre système.
Heure, complet	Affichage de l'heure complète selon le format défini dans votre système, comprenant les heures, les minutes et les secondes.
Heure, réduit	Affichage de l'heure dans un format de 12 heures en utilisant les heures et les minutes ainsi que les indicateurs AM/PM.
Heure, abrégé	Affichage de l'heure au format de 24 heures, par exemple 17:45.


Formats de date/heure définis par l'utilisateur (fonction Format)

Le tableau suivant présente les caractères que vous pouvez utiliser pour créer des formats de date/heure définis par l'utilisateur :

Caractère	Description
(:)	Séparateur horaire. Dans certains paramètres régionaux, le séparateur horaire est représenté par un autre caractère. Le séparateur horaire dissocie les heures, les minutes et les secondes lorsque des valeurs horaires sont mises en forme. Le caractère effectivement utilisé comme séparateur horaire dans la sortie mise en forme est déterminé par les paramètres de votre système.
(/)	Séparateur de date. Dans certains paramètres régionaux, le séparateur de date est représenté par un autre caractère. Le séparateur de date dissocie le jour, le mois et l'année lorsque des valeurs de date sont mises en forme. Le caractère effectivement utilisé comme séparateur de date dans la sortie mise en forme est déterminé par les paramètres de votre système.
c	Affichage de la date sous la forme ddddd et de l'heure sous la forme ttttt, dans cet ordre. Affichage des informations relatives à la date seulement si le numéro de série de date ne comporte aucune partie décimale ; affichage des informations relatives à l'heure seulement en l'absence de partie entière.
j	Affichage du jour sous la forme d'un nombre sans zéro non significatif (1 – 31).
jj	Affichage du jour sous la forme d'un nombre avec un zéro non significatif (01 – 31).
jjj	Affichage du jour sous sa forme abrégée (dim – sam).
jjjj	Affichage du jour sous sa forme complète (dimanche – samedi).
ddddd	Affichage de la date complète (jour, mois et année), mise en forme conformément à l'option de format de date abrégé définie dans votre système. Le format de date abrégé par défaut est j/m/aa.
dddddd	Affichage d'un numéro de série de date sous la forme d'une date complète (jour, mois et année) mise en forme conformément à l'option de format de date longue définie dans votre système. Le format de date longue par défaut est jj mmmm aaaa.
aaaa	Affichage identique à jjjj, à la seule différence qu'il s'agit de la version localisée de la chaîne
e	Affichage du jour de la semaine sous la forme d'un nombre (de 1 pour dimanche à 7 pour samedi).
ee	Affichage de la semaine de l'année sous la forme d'un nombre (1 - 54).
m	Affichage du mois sous la forme d'un nombre sans zéro non significatif (1 – 12). Si m suit immédiatement h ou hh, les minutes sont affichées à la place du mois.
mm	Affichage du mois sous la forme d'un nombre avec un zéro non significatif (01 – 12). Si m suit immédiatement h ou hh, les minutes sont affichées à la place du mois.
mmm	Affichage du mois sous sa forme abrégée (jan – déc).
mmmm	Affichage du mois sous sa forme complète (janvier – décembre).
oooo	Affichage identique à mmmm, à la seule différence qu'il s'agit de la version localisée de la chaîne.
t	Affichage du trimestre de l'année sous la forme d'un nombre (1 – 4).
j	Affichage du jour de l'année sous la forme d'un nombre (1 – 366).
jj	Affichage de l'année sous la forme d'un nombre à deux chiffres (00 – 99).
jjjj	Affichage de l'année sous la forme d'un nombre à quatre chiffres (100 – 9999).
h	Affichage de l'heure sous la forme d'un nombre sans zéro non significatif (0 – 23).
Hh	Affichage de l'heure sous la forme d'un nombre avec un zéro non significatif (00 – 23).
N	Affichage des minutes sous la forme d'un nombre sans zéro non significatif (0 – 59).
Nn	Affichage des minutes sous la forme d'un nombre avec un zéro non significatif (00 – 59).
S	Affichage des secondes sous la forme d'un nombre sans zéro non significatif (0 – 59).
Ss	Affichage des secondes sous la forme d'un nombre avec un zéro non significatif (00 – 59).
t t t t t	Affichage de l'heure complète (heures, minutes et secondes), mise en forme à l'aide du séparateur horaire défini par le format horaire de votre système. Un zéro non significatif est affiché si l'option correspondante est sélectionnée et si l'heure est antérieure à 10:00 A.M. ou P.M. Le format horaire par défaut est h:mm:ss.
AM/PM	Affichage à l'aide du format 12 heures et avec l'indicateur AM en majuscules pour une heure antérieure à midi et de l'indicateur PM en majuscules pour une heure située entre midi et 11:59 P.M.
am/pm	Affichage à l'aide du format 12 heures et avec l'indicateur AM en minuscules pour une heure antérieure à midi et de l'indicateur PM en minuscules pour une heure située entre midi et 11:59 P.M.
A/P	Affichage à l'aide du format 12 heures et avec l'indicateur A en majuscule pour une heure antérieure à midi et de l'indicateur P en majuscule pour une heure située entre midi et 11:59 P.M.
a/p	Affichage à l'aide du format 12 heures et avec l'indicateur A en minuscule pour une heure antérieure à midi et de l'indicateur P en minuscule pour une heure située entre midi et 11:59 P.M.
AMPM	Affichage à l'aide du format 12 heures et avec le littéral AM sous la forme définie par votre système, pour une heure antérieure à midi et du littéral PM sous la forme définie par votre système, pour une heure située entre midi et 11:59 P.M. AMPM peut apparaître soit en minuscules, soit en majuscules, mais la casse de la chaîne affichée dépend de la chaîne définie par vos paramètres système. Le format par défaut est AM/PM.


Formats de date/heure définis par l'utilisateur, exemple

Le tableau suivant présente des exemples de formats de date et d'heure définis par l'utilisateur pour le 7 décembre 1958 :

Format	Affichage
j/m/aa	7/12/58
j-mmm	7-déc
j-mmmm-aa	7-décembre-58
j mmmm	7 décembre
mmmm aa	décembre 58
hh:mm AM/PM	08:50 PM
h:mm:ss a/p	8:50:35 p
h:mm	20:50
h:mm:ss	20:50:35
j/m/aa h:mm	7/12/58 20:50


Formats de chaîne définis par l'utilisateur (fonction Format)

Vous pouvez utiliser l'ensemble des caractères suivants pour créer une expression de mise en forme pour chaînes :

Caractère	Description
@	Espace réservé à un caractère. Affichage d'un caractère ou d'un espace. Si la chaîne contient un caractère à la position occupée par le symbole @ dans l'expression de mise en forme, ce caractère est affiché ; sinon, un espace est affiché à cet emplacement. Les espaces réservés sont remplis de droite à gauche, à moins que la chaîne de mise en forme ne contienne un point d'exclamation (!).
&	Espace réservé à un caractère. Affichage d'un caractère ou de rien d'autre. Si la chaîne contient un caractère à la position occupée par le signe & ce caractère est affiché ; sinon, rien n'est affiché. Les espaces réservés sont remplis de droite à gauche, à moins que la chaîne ne contienne un point d'exclamation (!).
<	Mise en minuscules. Tous les caractères sont affichés en minuscules.
>	Mise en majuscules. Tous les caractères sont affichés en majuscules.
!	Remplissage des espaces réservés de gauche à droite. Par défaut, le remplissage s'effectue de droite à gauche.


Formats pour différentes valeurs de chaîne (fonction Format)

Une expression de mise en forme pour les chaînes peut contenir une ou deux sections séparées par un point-virgule (;).

Nombre de sections	Résultat
Une seule section	Le format s'applique à toutes les données de la chaîne.
Deux sections	La première section s'applique aux données de la chaîne et la seconde aux valeurs de type Null et aux chaînes de longueur nulle ("").


Hex, fonction

Renvoie une valeur de type String représentant un nombre sous forme hexadécimale.

Syntaxe

Hex(number)

L'argument number peut être toute expression numérique ou expression de chaîne valide.

Remarques

Si l'argument number n'est pas un nombre entier, il est arrondi au nombre entier le plus proche avant d'être évalué.

Si number est de type	La fonction Hex renvoie
Null	Null
Empty	Zéro (0)
Tout autre nombre	Jusqu'à huit caractères hexadécimaux
Les nombres hexadécimaux peuvent être définis directement en faisant précéder de &H leur valeur dans la plage appropriée. Par exemple, &H10 représente le nombre décimal 16 en notation hexadécimale.


InStr, fonction

Renvoie une valeur de type Variant (Long) indiquant la position de la première occurrence d'une chaîne à l'intérieur d'une autre chaîne.

Syntaxe

InStr([start, ]string1, string2[, compare])

La syntaxe de la fonction InStr comprend les arguments suivants :

Élément	Description
start	Facultatif. Expression numérique qui définit la position de départ de chaque recherche. Si cet argument est omis, la recherche commence au premier caractère. Si l'argument start contient une valeur de type Null, une erreur se produit. L'argument start est obligatoire si l'argument compare est indiqué.
string1	Expression de chaîne dans laquelle la recherche est effectuée.
string2	Expression de chaîne recherchée.
compare	Facultatif. Indique le type de comparaison de chaînes. Si l'argument compare est de type Null, une erreur se produit. Si l'argument compare est omis, la valeur de l'instruction Option Compare détermine le type de comparaison. Indiquez un LCID (LocaleID) correct pour respecter les règles locales spécifiques à la comparaison.
Valeurs

L'argument compare peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseCompareOption	-1	Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare	0	Effectue une comparaison binaire.
vbTextCompare	1	Effectue une comparaison textuelle.
vbDatabaseCompare	2	Réservée à Microsoft Access. Effectue une comparaison basée sur les informations de votre base de données.
Valeurs renvoyées

Si	La fonction InStr renvoie
string1 est de longueur nulle	0
string1 est de type Null	Null
string2 est de longueur nulle	start
string2 est de type Null	Null
string2 est introuvable	0
string2 est trouvée à l'intérieur de string1	Position à laquelle la chaîne est trouvée
start > string2	0
Remarques

La fonction InStrB est utilisée pour traiter sous forme d'octets les données d'une chaîne. Au lieu de renvoyer la position de caractère de la première occurrence d'une chaîne dans une autre, la fonction InStrB renvoie la position de l'octet.


LCase, fonction

Renvoie une valeur de type String convertie en minuscules.

Syntaxe

LCase(string)

L'argument string peut être toute expression de chaîne valide. Si l'argument string contient une valeur de type Null, Null est renvoyé.

Remarques

Seules les lettres majuscules sont converties en minuscules. Toutes les lettres minuscules et les caractères qui ne sont pas des lettres demeurent inchangés.


Left, fonction

Renvoie une valeur de type Variant (String) contenant le nombre indiqué de caractères d'une chaîne en partant de la gauche.

Syntaxe

Left(string, length)

La syntaxe de la fonction Left comprend les arguments nommés suivants :

Élément	Description
string	Expression de chaîne dont les caractères situés les plus à gauche sont renvoyés. Si l'argument string contient une valeur de type Null, Null est renvoyé.
length	Donnée de type Variant (Long). Expression numérique indiquant le nombre de caractères à renvoyer. Si vous indiquez la valeur 0, une chaîne de longueur nulle ("") est renvoyée. Si vous indiquez une valeur supérieure ou égale au nombre de caractères contenus dans l'argument string, la totalité de la chaîne est renvoyée.
Remarques

Pour déterminer le nombre de caractères contenus dans l'argument string, utilisez la fonction Len.

Note   Utilisez la fonction LeftB pour traiter sous forme d'octets les données d'une chaîne. Au lieu d'indiquer le nombre de caractères à renvoyer, l'argument length indique le nombre d'octets.


Len, fonction

Renvoie une valeur de type Long contenant le nombre de caractères d'une chaîne ou le nombre d'octets requis pour stocker une variable.

Syntaxe

Len(string | varname)

La syntaxe de la fonction Len comprend les éléments suivants :

Élément	Description
string	Toute expression de chaîne valide. Si l'argument string contient une valeur de type Null, Null est renvoyé.
varname	Tout nom de variable valide. Si l'argument varname contient une valeur de type Null, Null est renvoyé. Si l'argument varname est une donnée de type Variant, la fonction Len la traite de la même façon qu'une donnée de type String et renvoie toujours le nombre de caractères qu'elle contient.
Remarques

Un (et un seul) des deux arguments doit être indiqué. Avec des données de type défini par l'utilisateur, la fonction Len renvoie la taille que la données occuperait si elle était enregistrée dans un fichier.

Note   Utilisez la fonction LenB pour traiter sous forme d'octets les données d'une chaîne, comme dans les langages à jeux de caractères sous forme d'octets doubles (DBCS). Au lieu de renvoyer le nombre de caractères d'une chaîne, la fonction LenB renvoie le nombre d'octets utilisés pour représenter cette chaîne. Avec des données de type défini par l'utilisateur, la fonction LenB renvoie la quantité de mémoire requise, en tenant compte d'un éventuel remplissage entre les éléments. Pour illustrer le code utilisant la fonction LenB, reportez-vous au second exemple de la rubrique d'exemple.

Note   La fonction Len peut ne pas être capable de déterminer le nombre d'octets de mémoire requis si elle est utilisée avec des chaînes de longueur variable contenues dans des types de données définis par l'utilisateur.


LSet, instruction

Aligne à gauche une chaîne située à l'intérieur d'une variable chaîne ou copie une variable d'un type défini par l'utilisateur vers une autre variable d'un autre type défini par l'utilisateur.

Syntaxe

LSet stringvar = string

LSet varname1 = varname2

La syntaxe de l'instruction LSet comprend les éléments suivants :

Élément	Description
stringvar	Nom d'une variable chaîne.
string	Expression de chaîne à aligner à gauche dans l'argument stringvar.
varname1	Nom de la variable de type défini par l'utilisateur vers laquelle la copie est effectuée.
varname2	Nom de la variable de type défini par l'utilisateur à partir de laquelle la copie est effectuée.
Remarques

L'instruction LSet remplace les caractères restants de l'argument stringvar par des espaces.

Si l'argument string est plus long que l'argument stringvar, l'instruction LSet ne place dans stringvar que les caractères les plus à gauche, à concurrence de la longueur de stringvar.

Avertissement   Il est déconseillé d'utiliser l'instruction LSet pour copier une variable d'un type défini par l'utilisateur dans une variable d'un autre type défini par l'utilisateur. La copie de données d'un type de données dans l'espace réservé à un autre type de données peut engendrer des résultats imprévus.

Lorsque vous copiez une variable d'un type défini par l'utilisateur dans une variable d'un autre type, les données binaires de la variable sont simplement copiées dans l'espace mémoire de l'autre type, sans tenir compte des types de données indiqués pour les différents éléments.


LTrim, RTrim et Trim, fonctions

Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).

Syntaxe

LTrim(string)

RTrim(string)

Trim(string)

L'argument string peut être toute expression de chaîne valide. Si l'argument string contient une valeur de type Null, Null est renvoyé.


Mid, fonction

Renvoie une valeur de type Variant (String) contenant un nombre indiqué de caractères extraits d'une chaîne de caractères.

Syntaxe

Mid(string, start[, length])

La syntaxe de la fonction Mid comprend les arguments nommés suivants :

Élément	Description
string	Expression de chaîne dont sont extraits les caractères à renvoyer. Si l'argument string contient une valeur de type Null, Null est renvoyé.
start	Donnée de type Long. Position du caractère dans l'argument string qui marque le début de la partie à extraire. Si la valeur de l'argument start est supérieure au nombre de caractères contenus dans l'argument string, la fonction Mid renvoie une chaîne de longueur nulle ("").
length	Facultatif. Donnée de type Variant (Long). Nombre de caractères à renvoyer. Si l'argument length est omis ou si le nombre de caractères du texte (y compris le caractère qui occupe la position start), est inférieur à la valeur de cet argument, tous les caractères à compter de la position start et jusqu'à la fin de la chaîne sont renvoyés.
Remarques

Pour déterminer le nombre de caractères contenus dans l'argument string, utilisez la fonction Len.

Note   Utilisez la fonction MidB pour traiter sous forme d'octets les données relatives aux octets contenues dans une chaîne, comme dans les langages à jeux de caractères à octets doubles. Au lieu d'indiquer le nombre de caractères, les arguments indiquent le nombre d'octets. A des fins d'illustration du code utilisant la fonction MidB, reportez-vous au second exemple de la rubrique correspondante.


Mid, instruction

Remplace un nombre indiqué de caractères dans une variable de type Variant (String) par des caractères extraits d'une autre chaîne.

Syntaxe

Mid(stringvar, start[, length]) = string

La syntaxe de l'instruction Mid comprend les éléments suivants :

Élément	Description
stringvar	Nom de la variable chaîne à modifier.
start	Donnée de type Variant (Long). Position du caractère dans l'argument stringvar où commence le remplacement de texte.
length	Facultatif. Donnée de type Variant (Long). Nombre de caractères à remplacer. Si ce paramètre est omis, la totalité de l'argument string est utilisée.
string	Expression de chaîne qui remplace une partie de l'argument stringvar.
Remarques

Le nombre de caractères remplacés est toujours inférieur ou égal au nombre de caractères contenus dans l'argument stringvar.

Note   Utilisez l'instruction MidB pour traiter sous forme d'octets les données d'une chaîne. Dans l'instruction MidB, l'argument start indique la position de l'octet dans l'argument stringvar où doit débuter le remplacement et l'argument length indique le nombre d'octets à remplacer.


Oct, fonction

Renvoie une valeur de type Variant (String) représentant la valeur octale d'un nombre.

Syntaxe

Oct(number)

L'argument number peut être toute expression numérique ou expression de chaîne valide.

Remarques

Si l'argument number n'est pas un nombre entier, il est arrondi au nombre entier le plus proche avant d'être évalué.

Si number est de type	La fonction Oct renvoie
Null	Null
Empty	Zéro (0)
Tout autre nombre	Jusqu'à 11 caractères octaux
Les nombres octaux peuvent être définis directement en faisant précéder de &O leur valeur dans la plage appropriée. Par exemple, &O10 représente le nombre décimal 8 en notation octale.


Right, fonction

Renvoie une valeur de type Variant (String) contenant le nombre indiqué de caractères d'une chaîne en partant de la droite.

Syntaxe

Right(string, length)

La syntaxe de la fonction Right comprend les arguments nommés suivants :

Élément	Description
string	Expression de chaîne dont les caractères les plus à droite sont renvoyés. Si l'argument string contient une valeur de type Null, Null est renvoyé.
length	Donnée de type Variant (Long). Expression numérique indiquant le nombre de caractères à renvoyer. Si la valeur est 0, une chaîne de longueur nulle est renvoyée. Si cette valeur est supérieure ou égale au nombre de caractères contenus dans l'argument string, la totalité de la chaîne est renvoyée.
Remarques

Pour déterminer le nombre de caractères contenus dans l'argument string, utilisez la fonction Len.

Note   Utilisez la fonction RightB pour traiter sous forme d'octets les données d'une chaîne. Au lieu d'indiquer le nombre de caractères à renvoyer, l'argument length indique le nombre d'octets.


RSet, instruction

Aligne à droite une chaîne à l'intérieur d'une variable chaîne.

Syntaxe

RSet stringvar = string

La syntaxe de l'instruction RSet comprend les éléments suivants :

Élément	Description
stringvar	Nom d'une variable chaîne.
string	Expression de chaîne à aligner à droite à l'intérieur de l'argument stringvar.
Remarques

Si la longueur de l'argument stringvar est supérieure à celle de l'argument string, l'instruction RSet remplace le reste des caractères de l'argument stringvar par des espaces jusqu'au début.

Note   L'instruction RSet ne peut pas être utilisée avec des types définis par l'utilisateur.


Space, fonction

Renvoie une valeur de type Variant (String) comprenant le nombre d'espaces indiqué.

Syntaxe

Space(number)

L'argument number indique le nombre d'espaces à insérer dans la chaîne.

Remarques

La fonction Space est utile pour mettre en forme des sorties et effacer des données dans des chaînes de longueur fixe.


Str, fonction

Renvoie une valeur de type Variant (String) représentant un nombre.

Syntaxe

Str(number)

L'argument number peut être toute valeur de type Long contenant une expression numérique valide.

Remarques

Lorsque des nombres sont convertis en chaînes, un espace à gauche est toujours réservé au signe de l'argument number. Si l'argument number est positif, la chaîne renvoyée contient un espace à gauche et le signe plus est implicite.

Utilisez la fonction Format pour convertir des valeurs numériques à formater en dates, heures ou valeurs monétaires, ou dans d'autres formats définis par l'utilisateur. Contrairement à la fonction Str, la fonction Format ne prévoit pas d'espace à gauche pour le signe de l'argument number.

Note   La fonction Str ne reconnaît que le point (.) comme séparateur décimal valide. Lorsqu'il est nécessaire d'utiliser un autre séparateur décimal (par exemple, pour des applications internationales), utilisez la fonction CStr pour convertir un nombre en chaîne.


StrComp, fonction

Renvoie une valeur de type Variant (Integer) indiquant le résultat d'une comparaison de chaînes.

Syntaxe

StrComp(string1, string2[, compare])

La syntaxe de la fonction StrComp comprend les arguments nommés suivants :

Élément	Description
string1	Toute expression de chaîne valide.
string2	Toute expression de chaîne valide.
compare	Facultatif. Indique le type de comparaison de chaînes. Si l'argument compare est de type Null, une erreur se produit. Si l'argument compare est omis, la valeur de l'instruction Option Compare détermine le type de comparaison.
Valeurs

L'argument compare peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseCompareOption	-1	Effectue une comparaison à l'aide de l'instruction Option Compare.
vbBinaryCompare	0	Effectue une comparaison binaire.
vbTextCompare	1	Effectue une comparaison de texte.
vbDatabaseCompare	2	Réservée à Microsoft Access. Effectue une comparaison basée sur les informations contenues dans votre base de données.
Valeurs renvoyées

La fonction StrComp renvoie les valeurs suivantes :

Si	La fonction StrComp renvoie
string1 est inférieur à string2	-1
string1 est égal à string2	0
string1 est supérieur à string2	1
string1 ou string2 est de type Null	Null


StrConv, fonction

Renvoie une valeur de type Variant (String) convertie au format indiqué.

Syntaxe

StrConv(string, conversion, LCID)

La syntaxe de la fonction StrConv comprend les arguments nommés suivants :

Élément	Description
string	Expression de chaîne à convertir.
conversion	Donnée de type Integer. La somme des valeurs indiquant le type de conversion à effectuer.
LCID	Facultatif. L'identificateur régional LocaleID est différent du LocaleID système (valeur par défaut).
Valeurs

L'argument conversion peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUpperCase	1	Convertit la chaîne en majuscules.
vbLowerCase	2	Convertit la chaîne en minuscules.
vbProperCase	3	Convertit la première lettre de chaque mot de la chaîne en majuscule.
vbWide*	4*	Convertit les caractères étroits (codés sur un octet) d'une chaîne en caractères larges (codés sur deux octets).
vbNarrow*	8*	Convertit les caractères larges (codés sur deux octets) d'une chaîne en caractères étroits (codés sur un octet).
vbKatakana**	16**	Convertit les caractères Hiragana d'une chaîne en caractères Katakana.
vbHiragana**	32**	Convertit les caractères Katakana d'une chaîne en caractères Hiragana.
vbUnicode	64	Convertit la chaîne en Unicode à l'aide de la page de code par défaut du système. (Non disponible sur Macintosh.)
vbFromUnicode	128	Convertit la chaîne Unicode dans la page de code par défaut du système. (Non disponible sur Macintosh.)
*	Concerne les paramètres régionaux des pays d'Extrême-Orient.

**	Concerne uniquement le Japon.

Note   Ces constantes sont définies par Visual Basic pour Applications. Vous pouvez par conséquent les utiliser partout dans votre code à la place des valeurs qu'elles représentent. La plupart d'entre elles peuvent être combinées (par exemple vbUpperCase + vbWide), à moins qu'elles ne s'excluent mutuellement (par exemple, vbUnicode + vbFromUnicode). Les constantes vbWide, vbNarrow, vbKatakana et vbHiragana entraînent des erreurs d'exécution si elles sont utilisées avec des paramètres régionaux auxquels elles ne s'appliquent pas.

Vous pouvez utiliser les séparateurs de mots suivants : donnée de type Null (Chr$(0)), tabulation horizontale (Chr$(9)), saut de ligne (Chr$(10)), tabulation verticale (Chr$(11)), saut de page (Chr$(12)), retour chariot (Chr$(13)), espace (SBCS) (Chr$(32)). La valeur réelle de l'espace en DBCS varie en fonction du pays.

Remarques

Lorsque vous convertissez un tableau d'octets ANSI en chaîne, utilisez plutôt la fonction StrConv. Lorsque vous convertissez un tel type de tableau en format Unicode, utilisez une instruction d'affectation.


String, fonction

Renvoie une valeur de type Variant (String) contenant une chaîne constituée d'un caractère répété sur la longueur indiquée.

Syntaxe

String(number, character)

La syntaxe de la fonction String comprend les arguments nommés suivants :

Élément	Description
number	Donnée de type Long. Longueur de la chaîne renvoyée. Si l'argument number contient une valeur de type Null, Null est renvoyé.
character	Donnée de type Variant. Code de caractère indiquant le caractère ou l'expression de chaîne dont le premier caractère est utilisé pour construire la chaîne renvoyée. Si l'argument character contient une valeur de type Null, Null est renvoyé.
Remarques

Si vous indiquez pour l'argument character une valeur supérieure à 255, la fonction String convertit cette valeur en un code de caractère valide, à l'aide de la formule suivante :

character Mod 256


UCase, fonction

Renvoie une valeur de type Variant (String) contenant la chaîne indiquée, convertie en majuscules.

Syntaxe

UCase(string)

L'argument string peut être toute expression de chaîne valide. Si l'argument string contient une valeur de type Null, Null est renvoyé.

Remarques

Seules les lettres minuscules peuvent être converties en majuscules. Toutes les lettres majuscules et les caractères qui ne sont pas des lettres demeurent inchangés.


Mots clés par domaines

Catégories	Description
Tableaux	Création, définition et utilisation de tableaux.
Consignes de compilation	Contrôle du comportement du compilateur.
Flux du contrôle	Définition de boucles et orientation du flux de procédure.
Conversion	Conversion des nombres et des types de données.
Types de données	Types de données et sous-types des données de type Variant.
Dates et heures	Conversion et utilisation d'expressions de date et d'heure.
Répertoires et fichiers	Contrôle du système de fichiers et traitement des fichiers.
Erreurs	Interception et renvoi de codes d'erreur.
Financier	Exécution de calculs financiers.
Entrée et sortie	Réception des entrées et affichage ou impression des sorties.
Maths	Exécution de calculs mathématiques (trigonométrie, etc).
Divers	Lancement d'autres applications et traitement des événements.
Opérateurs	Comparaison d'expressions et autres opérations.
Manipulation de chaînes	Manipulation de chaînes et de données de type chaîne.
Variables et constantes	Déclaration et définition de variables et de constantes.


Résumé des mots clés de tableau

Action	Mots clés
Test d'un tableau.	IsArray
Création d'un tableau.	Array
Modification de la limite inférieure par défaut.	Option Base
Déclaration et initialisation d'un tableau.	Dim, Private, Public, ReDim, Static
Renvoi des limites d'un tableau.	Lbound, Ubound
Réinitialisation d'un tableau.	Erase, ReDim


Résumé des mots clés d'objet Collection

Action	Mots clés
Création d'un objet Collection.	Collection
Ajout d'un objet à une collection.	Add
Suppression d'un objet d'une collection.	Remove
Référence à un objet d'une collection.	Item


Résumé des mots clés de consigne de compilation

Action	Mots clés
Définition d'une constante de compilation.	#Const
Compilation sélective de certains blocs de code.	#If...Then...#Else


Résumé des mots clés de flux de contrôle

Action	Mots clés
Branchement.	GoSub...Return, GoTo, On Error, On...GoSub, On...GoTo
Sortie ou pause du programme.	DoEvents, End, Exit, Stop
Boucle.	Do...Loop, For...Next, For Each...Next, While...Wend, With
Prise de décisions.	Choose, If...Then...Else, Select Case, Switch
Utilisation de procédures.	Call, Function, Property Get, Property Let, Property Set, Sub


Résumé des mots clés de conversion

Action	Mots clés
Code ANSI en chaîne.	Chr
Chaîne en minuscules ou en majuscules.	Format, Lcase, Ucase
Date en numéro de série.	DateSerial, DateValue
Nombre décimal en une autre base.	Hex, Oct
Nombre en chaîne.	Format, Str
Type de données en autre type.	Cbool, Cbyte, Ccur, Cdate, Cdbl, Cdec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Date en jours, mois, jours de semaine ou années.	Day, Month, Weekday, Year
Heure en heures, minutes ou secondes.	Hour, Minute, Second
Chaîne en code ASCII.	Asc
Chaîne en nombre.	Val
Heure en numéro de série.	TimeSerial, TimeValue


Résumé des mots clés de type de données

Action	Mots clés
Conversion entre les types de données.	CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
Définition des types de données intrinsèques.	Boolean, Byte, Currency, Date, Double, Integer, Long, Object, Single, String, Variant (type par défaut)
Test des types de données.	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject


Résumé des mots clés de date et d'heure

Action	Mots clés
Renvoi de la date ou de l'heure en cours.	Date, Now, Time
Calculs de date.	DateAdd, DateDiff, DatePart
Renvoi d'une date.	DateSerial, DateValue
Renvoi d'une heure.	TimeSerial, TimeValue
Définition de la date ou de l'heure.	Date, Time
Chronométrage d'un traitement.	Timer


Résumé des mots clés de répertoire et de fichier

Action	Mots clés
Changement de répertoire ou de dossier.	ChDir
Changement de lecteur.	ChDrive
Copie d'un fichier.	FileCopy
Création d'un répertoire ou d'un dossier.	MkDir
Suppression d'un répertoire ou dossier.	RmDir
Attribution d'un nouveau nom à un fichier, répertoire ou dossier.	Name
Renvoi du chemin en cours.	CurDir
Renvoi de l'horodatage d'un fichier.	FileDateTime
Renvoi d'attributs de fichier, de répertoire et de nom de volume.	GetAttr
Renvoi de la longueur d'un fichier.	FileLen
Renvoi d'un nom de fichier ou de volume.	Dir
Définition des attributs d'un fichier.	SetAttr


Résumé des mots clés d'erreur

Action	Mots clés
Génération d'erreurs d'exécution.	Clear, Error, Raise
Récupération des messages d'erreur.	Error
Informations sur les erreurs.	Err
Renvoi de la variable Error.	CVErr
Interception des erreurs durant l'exécution.	On Error, Resume
Vérification de type.	IsError


Résumé des mots clés financiers

Action	Mots clés
Calcul d'amortissement.	DDB, SLN, SYD
Calcul de valeur future.	FV
Calcul de taux d'intérêt.	Rate
Calcul de taux de rendement interne.	IRR, MIRR
Calcul de nombre d'échéances.	Nper
Calcul de montant de versements.	IPmt, Pmt, PPmt
Calcul de valeur actuelle.	NPV, PV


Résumé des mots clés d'entrée et de sortie

Action	Mots clés
Accès ou création d'un fichier.	Open
Fermeture de fichiers.	Close, Reset
Mise en forme de la sortie.	Format, Print, Print #, Spc, Tab, Width #
Copie d'un fichier.	FileCopy
Récupération d'informations sur un fichier.	EOF, FileAttr, FileDateTime, FileLen, FreeFile, GetAttr, Loc, LOF, Seek
Gestion de fichiers.	Dir, Kill, Lock, Unlock, Name
Lecture d'un fichier.	Get, Input, Input #, Line Input #
Renvoi de la longueur d'un fichier.	FileLen
Définition ou lecture des attributs de fichier.	FileAttr, GetAttr, SetAttr
Définition de positions de lecture/écriture dans un fichier.	Seek
Écriture dans un fichier.	Print #, Put, Write #


Résumé des mots clés mathématiques

Action	Mots clés
Fonctions trigonométriques.	Atn, Cos, Sin, Tan
Calculs usuels.	Exp, Log, Sqr
Génération de nombres aléatoires.	Randomize, Rnd
Renvoi de la valeur absolue.	Abs
Renvoi du signe d'une expression.	Sgn
Conversions numériques.	Fix, Int


Mots clés divers

Action	Mots clés
Traitement des événements en attente.	DoEvents
Exécution d'autres programmes.	AppActivate, Shell
Envoi de touches à une application.	SendKeys
Émission d'un bip par l'ordinateur.	Beep
Système.	Environ
Fourniture d'une chaîne de ligne de commande	Command
Automation.	CreateObject, GetObject
Couleur.	QBColor, RGB


Résumé des mots clés d'opérateur

Action	Mots clés
Arithmétiques	^, – , *, /, \, Mod, +, &, =
Comparaison.	=, <>, <, >, <=, >=, Like, Is
Opérations logiques.	Not, And, Or, Xor, Eqv, Imp


Résumé des mots clés de la base de registres

Action	Mots clés
Suppression des paramètres d'un programme.	DeleteSetting
Lecture des paramètres d'un programme.	GetSetting, GetAllSettings
Enregistrement des paramètres d'un programme.	SaveSetting


Résumé des mots clés de manipulation de chaînes

Action	Mots clés
Comparaison de deux chaînes.	StrComp
Conversion de chaînes.	StrConv
Conversion en minuscules ou en majuscules.	Format, Lcase, UCase
Création de chaînes répétant un même caractère.	Space, String
Calcul de la longueur d'une chaîne.	Len
Mise en forme d'une chaîne.	Format
Alignement d'une chaîne.	Lset, RSet
Manipulation de chaînes.	InStr, Left, Ltrim, Mid, Right, RTrim, Trim
Définition des règles de comparaison de chaînes.	Option Compare
Utilisation des codes ASCII et ANSI.	Asc, Chr


Résumé des mots clés de variable et de constante

Action	Mots clés
Attribution d'une valeur.	Let
Déclaration de variables ou de constantes.	Const, Dim, Private, Public, New, Static
Déclaration d'un module privé.	Option Private Module
Obtention d'informations sur une variable.	IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject, TypeName, VarType
Référence à l'objet en cours.	Me
Activation de la déclaration explicite des variables.	Option Explicit
Définition du type de données par défaut.	Deftype


Erreurs récupérables

Des erreurs récupérables peuvent survenir lors de l'exécution d'une application. Certaines d'entre elles peuvent également se produire lors du développement ou de la compilation. Vous pouvez tester et répondre à des erreurs récupérables à l'aide de l'instruction On Error et de l'objet Err. Les numéros d'erreur non définis qui sont compris entre 1 et 1000 sont réservés pour une utilisation ultérieure dans Visual Basic.

Code	Message
3	Return sans GoSub
5	Appel de procédure incorrect
6	Dépassement de capacité
7	Mémoire insuffisante
9	Indice en dehors de la plage
10	Ce tableau est fixe ou temporairement verrouillé
11	Division par zéro
13	Type incompatible
14	Espace de chaîne insuffisant
16	Expression trop complexe
17	Impossible d'exécuter l'opération requise
18	Interruption par l'utilisateur
20	Reprise sans erreur
28	Espace pile insuffisant
35	Sub, Function ou Property non définie
47	Trop de clients d'application pour la DLL
48	Erreur de chargement de la DLL
49	Convention d'appel de DLL incorrecte
51	Erreur interne
52	Nom ou numéro de fichier incorrect
53	Fichier introuvable
54	Mode d'accès au fichier incorrect
55	Fichier déjà ouvert
57	Erreur d'entrée/sortie de périphérique
58	Ce fichier existe déjà
59	Longueur d'enregistrement incorrecte
61	Disque plein
62	L'entrée dépasse la fin de fichier
63	Numéro d'enregistrement incorrect
67	Trop de fichiers
68	Périphérique non disponible
70	Permission refusée
71	Disque non prêt
74	Impossible de renommer avec un lecteur différent
75	Erreur dans le chemin d'accès
76	Chemin d'accès introuvable
91	Variable objet ou variable bloc With non définie
92	Boucle For non initialisée
93	Format de chaîne incorrect
94	Utilisation incorrecte de Null
97	Impossible d'appeler une procédure Friend sur un objet qui n'est pas une instance de classe de définition
98	Un appel de propriété ou de méthode ne peut pas faire référence à un objet privé ni en tant qu'argument ni en tant que valeur renvoyée
298	Impossible de charger la DLL système
320	Impossible d'utiliser des noms de périphériques de caractères dans les noms de fichiers spécifiés
321	Format de fichier incorrect
322	Impossible de créer le fichier temporaire nécessaire
325	Format incorrect dans le fichier ressource
327	La valeur de l'objet de données nommé est introuvable
328	Paramètre incorrect. Impossible d'écrire des tableaux
335	Impossible d'accéder au registre système
336	Le composant n'est pas correctement enregistré
337	Composant introuvable
338	Exécution incorrecte du composant
360	Objet déjà chargé
361	Impossible de charger ou de décharger cet objet
363	Le contrôle spécifié est introuvable
364	L'objet était déchargé
365	Impossible de décharger dans ce contexte
368	Le fichier spécifié est périmé. Ce programme requiert une version plus récente
371	L'objet spécifié ne peut être utilisé come propriétaire de la feuille pour la méthode Show
380	Valeur de propriété incorrecte
381	Index du tableau de propriétés incorrect
382	Property Set ne peut pas être exécutée en mode exécution
383	Property Set ne peut être utilisée avec une propriété en lecture seule
385	Index de table de propriété requis
387	Property Set non autorisée
393	Property Get ne peut pas être exécutée en mode exécution
394	Property Get ne peut pas être exécutée sur une propriété en écriture seule
400	Feuille déjà affichée; affichage modal impossible
402	Le code doit d'abord fermer la feuille modale de premier plan
419	Autorisation d'utiliser l'objet refusée
422	Propriété introuvable
423	Propriété ou méthode introuvable
424	Objet requis
425	Utilisation d'objet incorrecte
429	Un composant ne peut pas créer l'objet ou fournir une référence à cet objet
430	Cette classe ne gère pas Automation
432	Nom de fichier ou de classe non trouvé pendant une opération Automation
438	Cet objet ne gère pas cette propriété ou méthode
440	Erreur Automation
442	La connexion à la bibliothèque de types ou d'objets pour un processus distant a été perdue
443	L'objet Automation n'a pas de valeur par défaut
445	L'objet ne gère pas cette action
446	L'objet ne gère pas les arguments nommés
447	L'objet ne gère pas les paramètres régionaux en cours
448	Argument nommé introuvable
449	Argument non facultatif ou affectation de propriété incorrecte
450	Nombre d'arguments incorrect ou affectation de propriété non valide
451	Cet objet n'est pas une collection
452	Numéro incorrect
453	spécifiée introuvable
454	Ressource de code introuvable
455	Erreur de verrouillage de ressource de code
457	Cette clé est déjà associée à un élément de cette collection
458	Cette variable utilise un type non géré par Visual Basic
459	Ce composant ne gère pas le jeu d'événements
460	Format de Presse-papiers incorrect
461	Méthode ou membre de données introuvable
462	Le serveur distant n'existe pas ou n'est pas disponible
463	La classe n'est pas enregistrée sur la machine locale
480	Impossible de créer une image en mode AutoRedraw
481	Image incorrecte
482	Erreur d'imprimante
483	Le gestionnaire d'imprimante ne gère pas la propriété spécifiée
484	Problème pour obtenir des informations du gestionnaire d'imprimante du système. Assurez-vous que le gestionnaire d'imprimante est installé correctement
485	Type d'image incorrect
486	Impossible d'imprimer l'image de feuille sur ce type d'imprimante
520	Impossible de vider le Presse-papiers
521	Impossible d'ouvrir le Presse-papiers
735	Impossible d'enregistrer le fichier dans un répertoire TEMP
744	Le texte recherché est introuvable
746	Remplacements trop longs
31001	Mémoire insuffisante
31004	Pas d'objet
31018	Classe non définie
31027	Impossible d'activer l'objet
31032	Impossible de créer un objet incorporé
31036	Erreur à l'enregistrement dans le fichier
31037	Erreur de chargement à partir du fichier


AddressOf, opérateur

Opérateur unaire provoquant la transmission de l'adresse de la procédure qu'il précède à une procédure API attendant un pointeur de fonction à cette position dans la liste d'arguments.

Syntaxe

AddressOf procedurename

L'argument procedurename indique la procédure dont l'adresse va être passée. Il doit désigner une procédure figurant dans un module standard du projet dans lequel l'appel est effectué.

Remarques

En général, lorsqu'un nom de procédure apparaît dans une liste d'arguments, la procédure est évaluée et l'adresse de la valeur renvoyée par la procédure est transmise. L'opérateur AddressOf permet de passer l'adresse de la procédure à une fonction API de Windows dans une bibliothèque de liaisons dynamiques (DLL), et non la valeur renvoyée par la procédure. La fonction API peut alors utiliser l'adresse pour appeler la procédure Basic. Ce processus est connu sous le nom de « rappel ». L'opérateur AddressOf apparaît uniquement dans l'appel à la procédure API.

S'il est vrai que vous pouvez utiliser l'opérateur AddressOf pour passer des pointeurs de procédure aux procédures Basic, vous ne pouvez appeler une fonction avec un pointeur de ce type en Basic. Cela signifie, par exemple, qu'une classe écrite en Basic ne peut faire de rappel à son contrôleur à l'aide d'un pointeur de ce type. Lorsque l'opérateur AddressOf est utilisé pour passer un pointeur de procédure aux procédures Basic, le paramètre de la procédure appelée doit être de type As Long.

Avertissement   L'utilisation de l'opérateur AddressOf peut provoquer des résultats imprévisibles si vous ne maîtrisez pas totalement le concept de rappels de fonctions. Il est indispensable que vous compreniez le mode de fonctionnement de la partie Basic du rappel, de même que le code de la DLL dans laquelle vous passez l'adresse de la fonction. Le débogage de ces interactions est difficile car le programme s'exécute dans le même processus que celui de l'environnement de développement. Dans certains cas, le débogage systématique peut même s'avérer impossible.

Note   Vous pouvez créer vos propres prototypes de fonctions de rappel dans les DLL compilées à l'aide de Microsoft Visual C++ (ou d'outils similaires). Pour travailler avec l'opérateur AddressOf, votre prototype doit utiliser la convention d'appel __stdcall. La convention d'appel par défaut (__cdecl) ne fonctionne pas avec l'opérateur AddressOf.

Étant donné que l'appelant d'un rappel ne se trouve pas dans votre programme, il est important qu'une erreur rencontrée dans la procédure de rappel ne se propage pas dans l'appelant. Pour ce faire, insérez l'instruction On Error Resume Next au début de la procédure de rappel.


Assert, méthode

Suspend l'exécution de manière conditionnelle, à la ligne où apparaît la méthode.

Syntaxe

object.Assert booleanexpression

La syntaxe de la méthode Assert comprend le qualificateur d'objet et l'argument suivants :

Élément	Description
object	Il s'agit toujours de l'objet Debug.
booleanexpression	Expression prenant la valeur True ou False.
Remarques

Les appels de la méthode Assert fonctionnent exclusivement dans l'environnement de développement. Lorsque le module est compilé dans un exécutable, les appels de la méthode sur l'objet Debug sont omis.

L'élément booleanexpression est toujours évalué intégralement. Ainsi, même si la première partie d'une expression And prend la valeur False, l'expression entière est évaluée.


Friend

Modifie la définition d'une procédure dans un module de feuille ou un module de classe de manière à ce qu'elle puisse être appelée depuis des modules situés en dehors de la classe, mais faisant partie du projet dans lequel la classe est définie. Les procédures Friend ne peuvent être utilisées dans les modules standard.

Syntaxe

[Private | Friend | Public] [Static] [Sub | Function | Property] procedurename

L'élément procedurename désigne le nom de la procédure qui sera visible tout au long du projet, mais invisible aux contrôleurs de la classe.

Remarques

Les procédures Public d'une classe peuvent être appelées de n'importe quel endroit, y compris par les contrôleurs des instances de la classe. La déclaration d'une procédure en tant que Private empêche les contrôleurs de l'objet d'appeler cette procédure, mais empêche également cette dernière d'être appelée à l'intérieur du projet dans lequel la classe est elle-même définie. La procédure Friend rend la procédure visible tout au long du projet, mais la masque au contrôleur d'une instance de l'objet. Elle n'apparaît que dans les modules de feuille et les modules de classe, et modifie uniquement les noms de procédure, pas les variables ni les types. Les procédures d'une classe peuvent accéder aux procédures Friend de toutes les autres classes d'un projet. Les procédures Friend n'apparaissent pas dans la bibliothèque de types de leur classe. Elles ne peuvent non plus faire l'objet d'une liaison tardive.


RaiseEvent, instruction

Supprime un événement déclaré au niveau du module dans une classe, une feuille ou un document.

Syntaxe

RaiseEvent eventname [(argumentlist)]

L'élément eventname correspond au nom d'un événement déclaré dans le module et suit les conventions d'affectation de nom des variables Basic.

La syntaxe de l'instruction RaiseEvent comprend les éléments suivants :

Élément	Description
eventname	Nom de l'événement à supprimer.
argumentlist	Facultatif. Liste délimitée par des virgules énumérant des variables, des tableaux ou des expressions. L'élément argumentlist doit être entouré de parenthèses. En cas d'absence d'argument, les parenthèses doivent être retirées.
Remarques

Si l'événement n'a pas été déclaré dans le module dans lequel il a été déclenché, une erreur se produit. L'extrait de code suivant illustre une déclaration d'événement et une procédure dans laquelle l'événement est déclenché.

' Déclare un événement au niveau d'un module de classe

Event LogonCompleted (UserName as String)

Sub

' Déclenche l'événement.

RaiseEvent LogonCompleted ("AntoineJan")

End Sub

Si l'événement ne comporte pas d'arguments, y compris de parenthèses vides, dans l'instruction RaiseEvent, son invocation provoque une erreur. Vous ne pouvez pas utiliser RaiseEvent pour supprimer des événements qui ne sont pas déclarés de façon explicite dans le module. Si, par exemple, une feuille possède un événement Click, vous ne pouvez pas supprimer cet événement à l'aide de RaiseEvent. Si vous déclarez un événement Click dans le module de feuille, celui-ci masque l'événement Click appartenant à la feuille. Vous pouvez toujours appeler l'événement Click de la feuille à l'aide de la syntaxe classique d'appel d'un événement, mais vous ne pouvez pas utiliser l'instruction RaiseEvent.

La suppression des événements est effectuée dans l'ordre d'établissement des connexions. Étant donné que les événements peuvent comporter des paramètres ByRef, un processus qui se connecte ultérieurement peut recevoir des paramètres ayant été modifiés par un gestionnaire d'événements précédent.


AddressOf, opérateur, exemple

L'exemple suivant crée une feuille qui comprend une zone de liste comportant une liste des polices installées sur votre système, triée alphabétiquement.

Pour exécuter cet exemple, créez une zone de liste dans une nouvelle feuille. Le code de cette feuille est le suivant :

Option Explicit

Private Sub Form_Load()

    Module1.FillListWithFonts List1

End Sub

Placez le code suivant dans un module. Le troisième argument de la définition de la fonction EnumFontFamilies est un argument de type Long représentant une procédure. Cet argument doit contenir l'adresse de la procédure, plutôt que la valeur renvoyée par la procédure. Dans l'appel à la fonction EnumFontFamilies, le troisième argument demande à l'opérateur AddressOf de renvoyer l'adresse de la procédure EnumFontFamProc, qui correspond au nom de la procédure de rappel que vous fournissez lors de l'appel de la fonction API de Windows, EnumFontFamilies. Lorsque vous passez l'argument EnumFontFamProc à EnumFontFamilies à l'aide de l'opérateur AddressOf, Windows appelle la procédure EnumFontFamProc une fois pour chacune des familles de polices installées sur le système. Le dernier argument passé à EnumFontFamilies indique la zone de liste dans laquelle l'information est affichée.

' Types d'énumération des polices

Public Const LF_FACESIZE = 32

Public Const LF_FULLFACESIZE = 64

Type LOGFONT

        lfHeight As Long

        lfWidth As Long

        lfEscapement As Long

        lfOrientation As Long

        lfWeight As Long

        lfItalic As Byte

        lfUnderline As Byte

        lfStrikeOut As Byte

        lfCharSet As Byte

        lfOutPrecision As Byte

        lfClipPrecision As Byte

        lfQuality As Byte

        lfPitchAndFamily As Byte

        lfFaceName(LF_FACESIZE) As Byte

End Type

Type NEWTEXTMETRIC

        tmHeight As Long

        tmAscent As Long

        tmDescent As Long

        tmInternalLeading As Long

        tmExternalLeading As Long

        tmAveCharWidth As Long

        tmMaxCharWidth As Long

        tmWeight As Long

        tmOverhang As Long

        tmDigitizedAspectX As Long

        tmDigitizedAspectY As Long

        tmFirstChar As Byte

        tmLastChar As Byte

        tmDefaultChar As Byte

        tmBreakChar As Byte

        tmItalic As Byte

        tmUnderlined As Byte

        tmStruckOut As Byte

        tmPitchAndFamily As Byte

        tmCharSet As Byte

        ntmFlags As Long

        ntmSizeEM As Long

        ntmCellHeight As Long

        ntmAveWidth As Long

End Type

' Indicateurs de champ ntmFlags

Public Const NTM_REGULAR = &H40&

Public Const NTM_BOLD = &H20&

Public Const NTM_ITALIC = &H1&

' Indicateurs tmPitchAndFamily

Public Const TMPF_FIXED_PITCH = &H1

Public Const TMPF_VECTOR = &H2

Public Const TMPF_DEVICE = &H8

Public Const TMPF_TRUETYPE = &H4

Public Const ELF_VERSION = 0

Public Const ELF_CULTURE_LATIN = 0

' Masques EnumFonts

Public Const RASTER_FONTTYPE = &H1

Public Const DEVICE_FONTTYPE = &H2

Public Const TRUETYPE_FONTTYPE = &H4

Declare Function EnumFontFamilies Lib "gdi32" Alias _
 "EnumFontFamiliesA" _
 (ByVal hDC As Long, ByVal lpszFamily As String, _
 ByVal lpEnumFontFamProc As Long, LParam As Any) As Long

Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long

Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, _
 ByVal hDC As Long) As Long

Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, _
 ByVal FontType As Long, LParam As ListBox) As Long

Dim FaceName As String

Dim FullName As String

    FaceName = StrConv(lpNLF.lfFaceName, vbUnicode)

    LParam.AddItem Left$(FaceName, InStr(FaceName, vbNullChar) - 1)

    EnumFontFamProc = 1

End Function

Sub FillListWithFonts(LB As ListBox)

Dim hDC As Long

    LB.Clear

    hDC = GetDC(LB.hWnd)

    EnumFontFamilies hDC, vbNullString, AddressOf EnumFontFamProc, LB

    ReleaseDC LB.hWnd, hDC

End Sub


Assert, méthode, exemple

L'exemple suivant illustre le mode d'utilisation de la méthode Assert. Il nécessite une feuille comportant deux contrôles Button. Les noms des boutons par défaut sont Command1 et Command2.

Lorsque cet exemple s'exécute, un clic sur le bouton Command1 alterne le texte du bouton entre 0 et 1. Un clic sur le bouton Command2 n'a aucun effet ou provoque une assertion, en fonction de la valeur affichée sur le bouton Command1. Cette assertion arrête l'exécution sur la dernière instruction exécutée, la ligne Debug.Assert est mise en surbrillance.

Option Explicit

Private blnAssert As Boolean

Private intNumber As Integer

Private Sub Command1_Click()

    blnAssert = Not blnAssert

    intNumber = IIf(intNumber <> 0, 0, 1)

    Command1.Caption = intNumber

End Sub

Private Sub Command2_Click()

    Debug.Assert blnAssert

End Sub

Private Sub Form_Load()

    Command1.Caption = intNumber

    Command2.Caption = "Tester la méthode Assert"

End Sub


Friend, exemple

Lorsqu'il est placé dans un module de classe, le code suivant met la variable membre dblBalance à la disposition de tous les utilisateurs de la classe du projet. Tout utilisateur de la classe peut récupérer cette valeur ; seul le code situé à l'intérieur du projet peut affecter une valeur à cette variable.

Private dblBalance As Double

Public Property Get Balance() As Double

    Balance = dblBalance

End Property

Friend Property Let Balance(dblNewBalance As Double)

    dblBalance = dblNewBalance

End Property


RaiseEvent, instruction, exemple

L'exemple suivant utilise des événements permettant de comptabiliser en secondes les performances les plus rapides lors d'une course à pied de 100 mètres. Le code illustre toutes les méthodes, propriétés et instructions associées aux événements, y compris l'instruction RaiseEvent.

La classe qui déclenche un événement est la source de l'événement, les classes qui mettent en œuvre l'événement étant les suppressions. Une source d'événement peut comporter des suppressions multiples pour les événements qu'elle génère. Lorsque la classe déclenche l'événement, celui-ci se produit pour chaque classe qui récupère des événements pour cette instance de l'objet.

Cet exemple utilise aussi une feuille (Form1) comportant un bouton (Command1), une étiquette (Label1) et deux zones de texte (Text1 et Text2). Lorsque vous cliquez sur le bouton, la première zone de texte affiche « Top chrono » et la seconde commence à compter les secondes. Lorsque le durée totale (9,84 secondes) s'est écoulée, la première zone de texte affiche « Temps écoulé » et la seconde « 9,84 ».

Le code correspondant à Form1 indique les états de début et de fin de la feuille. Elle contient aussi le code exécuté lors du déclenchement des événements.

Option Explicit

Private WithEvents mText As TimerState

Private Sub Command1_Click()

    Text1.Text = "Top chrono"

    Text1.Refresh

    Text2.Text = "0"

    Text2.Refresh

    Call mText.TimerTask(9.84)

End Sub

Private Sub Form_Load()

    Command1.Caption = "Cliquez pour déclencher le chronomètre"

    Text1.Text = ""

    Text2.Text = ""

    Label1.Caption = "Le 100 mètres le plus rapide a été couru en :"

    Set mText = New TimerState

    End Sub

Private Sub mText_ChangeText()

    Text1.Text = "Temps écoulé"

    Text2.Text = "9,84"

End Sub

Private Sub mText_UpdateTime(ByVal dblJump As Double)

    Text2.Text = Str(Format(dblJump, "0"))

    DoEvents

End Sub

Le code restant se trouve dans un module de classe appelé TimerState. Dans les commandes de ce module figurent aussi les instructions Raise Event.

Option Explicit

Public Event UpdateTime(ByVal dblJump As Double)

Public Event ChangeText()

Public Sub TimerTask(ByVal Duration As Double)

    Dim dblStart As Double

    Dim dblSecond As Double

    Dim dblSoFar As Double

    dblStart = Timer

    dblSoFar = dblStart

    Do While Timer < dblStart + Duration

        If Timer - dblSoFar >= 1 Then

            dblSoFar = dblSoFar + 1

            RaiseEvent UpdateTime(Timer - dblStart)

        End If

    Loop

    RaiseEvent ChangeText

End Sub


Jeu de caractères (128 à 255)

128	•	160	[space]	192	À	224	à
129	•	161	¡	193	Á	225	á
130	•	162	¢	194	Â	226	â
131	•	163	£	195	Ã	227	ã
132	•	164	¤	196	Ä	228	ä
133	•	165	¥	197	Å	229	å
134	•	166	¦	198	Æ	230	æ
135	•	167	§	199	Ç	231	ç
136	•	168	¨	200	È	232	è
137	•	169	©	201	É	233	é
138	•	170	ª	202	Ê	234	ê
139	•	171	«	203	Ë	235	ë
140	•	172	¬	204	Ì	236	ì
141	•	173	­	205	Í	237	í
142	•	174	®	206	Î	238	î
143	•	175	¯	207	Ï	239	ï
144	•	176	°	208	Ð	240	ð
145	‘	177	±	209	Ñ	241	ñ
146	’	178	²	210	Ò	242	ò
147	•	179	³	211	Ó	243	ó
148	•	180	´	212	Ô	244	ô
149	•	181	µ	213	Õ	245	õ
150	•	182	¶	214	Ö	246	ö
151	•	183	·	215	×	247	÷
152	•	184	¸	216	Ø	248	ø
153	•	185	¹	217	Ù	249	ù
154	•	186	º	218	Ú	250	ú
155	•	187	»	219	Û	251	û
156	•	188	¼	220	Ü	252	ü
157	•	189	½	221	Ý	253	ý
158	•	190	¾	222	Þ	254	þ
159	•	191	¿	223	ß	255	ÿ
•	Ces caractères ne sont pas gérés par Microsoft Windows.

Les valeurs de la table sont des valeurs Windows par défaut. Toutefois, les valeurs du jeu de caractères ANSI supérieures à 127 sont déterminées par la page de code spécifique à votre système d'exploitation.


Format de date, constantes

Ces constantes sont disponibles uniquement lorsque votre projet contient une référence explicite à la bibliothèque de types contenant leurs définitions.

Constante	Valeur	Description
vbGeneralDate	0	Affiche une date et/ou une heure. Pour les nombres réels, affiche une date et une heure. En l'absence de partie décimale, affiche seulement une date. S'il n'y a pas de partie entière, affiche seulement l'heure. Le mode d'affichage de la date et de l'heure est fonction des paramètres de votre système.
vbLongDate	1	Affiche une date en utilisant le format de date complet spécifié dans les paramètres régionaux de votre ordinateur.
vbShortDate	2	Affiche une date en utilisant le format de date abrégé spécifié dans les paramètres régionaux de l'ordinateur.
vbLongTime	3	Affiche une heure en utilisant le format d'heure complet spécifié dans les paramètres régionaux de votre ordinateur.
vbShortTime	4	Affiche une heure en utilisant le format d'heure abrégé spécifié dans les paramètres régionaux de votre ordinateur.


DriveType, constantes

Ces constantes sont disponibles uniquement lorsque votre projet contient une référence explicite à la bibliothèque de types contenant leurs définitions.

Constante	Valeur	Description
Unknown	0	Le type du lecteur ne peut pas être déterminé.
Removable	1	Le lecteur contient un support amovible. Ceci comprend tous les lecteurs de disquette et de nombreux autres périphériques de stockage.
Fixed	2	Le lecteur contient un support permanent (non amovible). Ceci comprend tous les lecteurs de disques durs, y compris ceux qui sont amovibles.
Remote	3	Lecteurs de réseau. Ceci comprend tous les lecteurs partagés, n'importe où sur le réseau.
CDROM	4	Le lecteur est un CD-ROM. Aucune distinction n'est effectuée entre les lecteurs de CD-ROM en lecture seule et ceux en lecture/écriture.
RAMDisk	5	Le lecteur est en fait un bloc de mémoire RAM de l'ordinateur local qui se comporte comme un lecteur de disque.


Attribut de fichier, constantes

Ces constantes sont disponibles uniquement lorsque votre projet contient une référence explicite à la bibliothèque de types contenant leurs définitions.

Constante	Valeur	Description
Normal	0	Fichier normal. Aucun attribut n'est défini.
ReadOnly	1	Fichier en lecture seule. Attribut en lecture/écriture.
Hidden	2	Fichier caché. Attribut en lecture/écriture.
System	4	Fichier système. Attribut en lecture/écriture.
Volume	8	Etiquette de volume de lecteur de disque. Attribut en lecture seule.
Directory	16	Dossier ou répertoire. Attribut en lecture seule.
Archive	32	Le fichier a été modifié depuis la dernière sauvegarde. Attribut en lecture/écriture.
Alias	64	Lien ou raccourci. Attribut en lecture seule.
Compressed	128	Fichier compressé. Attribut en lecture seule.


Entrée/Sortie de fichier, constantes

Ces constantes sont disponibles uniquement lorsque votre projet contient une référence explicite à la bibliothèque de types contenant leurs définitions.

Constante	Valeur	Description
ForReading	1	Ouvrir un fichier en lecture seule. Vous ne pouvez pas écrire dans ce fichier.
ForWriting	2	Ouvrir un fichier en écriture. Si un fichier existe sous le même nom, son contenu est écrasé.
ForAppending	8	Ouvrir un fichier et écrire à la fin du fichier.


SpecialFolder, constantes

Ces constantes sont disponibles uniquement lorsque votre projet contient une référence explicite à la bibliothèque de types contenant leurs définitions.

Constante	Valeur	Description
WindowsFolder	0	Le dossier Windows contient des fichiers installés par le système d'exploitation Windows.
SystemFolder	1	Le dossier System contient les bibliothèques, les polices et les pilotes de périphérique.
TemporaryFolder	2	Le dossier Temp permet de stocker les fichiers temporaires. Son chemin figure dans la variable d'environnement TMP.


Tristate (3-états), constantes

Ces constantes sont disponibles uniquement lorsque votre projet contient une référence explicite à la bibliothèque de types contenant leurs définitions.

Constante	Valeur	Description
vbTrue	–1	True
vbFalse	0	False
vbUseDefault	–2	Utiliser la valeur par défaut


Filter, fonction

Description

Renvoie un tableau de base zéro contenant un sous-ensemble d'un tableau de chaîne basé sur des critères de filtre spécifiés.

Syntaxe

Filter(sourcesrray, match[, include[, compare]])

La syntaxe de la fonction Filter comprend les arguments nommés suivants :

Élément	Description
sourcearray	Tableau de chaînes à une dimension dans lequel la recherche doit être effectuée.
match	Chaîne à rechercher.
include	Facultatif. Valeur de type Boolean indiquant s'il faut renvoyer des sous-chaînes incluant ou excluant l'argument match. Si l'argument include a la valeur True, la fonction Filter renvoie le sous-ensemble du tableau contenant l'argument match comme sous-chaîne. Si l'argument include a la valeur False, la fonction Filter renvoie le sous-ensemble du tableau ne contenant pas l'argument match comme sous-chaîne.
compare	Facultatif. Valeur numérique indiquant le type de comparaison de chaîne à utiliser. Reportez-vous à la section Valeurs.
Valeurs

L'argument compare prend les valeurs suivantes :

Constante	Valeur	Description
vbUseCompareOption	–1	Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare	0	Effectue une comparaison binaire.
vbTextCompare	1	Effectue une comparaison de texte.
vbDatabaseCompare	2	Microsoft Access seulement. Effectue une comparaison basée sur des informations contenues dans votre base de données.
Remarques

Si aucune correspondance pour l'argument match n'est trouvée dans l'argument sourcearray, la fonction Filter renvoie un tableau vide. Une erreur se produit si l'argument sourcearray est Null ou s'il ne s'agit pas d'un tableau à une dimension.

Le tableau renvoyé par la fonction Filter contient uniquement le nombre d'éléments suffisants pour contenir le nombre d'éléments correspondants.


FormatCurrency, fonction

Description

Renvoie une expression formatée sous forme de valeur de type Currency utilisant le symbole monétaire défini dans le Panneau de configuration du système.

Syntaxe

FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

La syntaxe de la fonction FormatCurrency comprend les éléments suivants :

Élément	Description
Expression	Expression à formater.
NumDigitsAfterDecimal	Facultatif. Valeur numérique indiquant combien de positions à droite de la virgule sont affichées. La valeur par défaut (-1) indique que les paramètres régionaux de l'ordinateur sont employés.
IncludeLeadingDigit	Facultatif. Constante Tristate (3-états) indiquant si un zéro non significatif s'affiche pour les valeurs décimales. Reportez-vous à la section Valeurs.
UseParensForNegativeNumbers	Facultatif. Constante Tristate (3-états) indiquant s'il faut mettre les valeurs négatives entre parenthèses. Reportez-vous à la section Valeurs.
GroupDigits	Facultatif. Constante Tristate (3-états) indiquant s'il faut ou non grouper les nombres en utilisant le séparateur de groupement spécifié dans les paramètres régionaux de l'ordinateur. Reportez-vous à la section Valeurs.
Valeurs

Les arguments IncludeLeadingDigit, UseParensForNegativeNumbers et GroupDigits prennent les valeurs suivantes :

Constante	Valeur	Description
vbTrue	–1	True
vbFalse	0	False
vbUseDefault	–2	Utiliser les paramètres régionaux de l'ordinateur.
Remarques

Lorsque un ou plusieurs arguments sont omis, les valeurs de ces arguments sont fournies par les paramètres régionaux de l'ordinateur.

La position du symbole monétaire relatif à la valeur monétaire est déterminée par les paramètres régionaux du système.

Note   Toutes les informations de paramètres sont définies dans l'onglet Symbole monétaire des Paramètres régionaux, à l'exception du zéro non significatif issu de l'onglet Nombre.


FormatDateTime, fonction

Description

Renvoie une expression formatée sous forme de date ou d'heure.

Syntaxe

FormatDateTime(Date[,NamedFormat])

La syntaxe de la fonction FormatDateTime comprend les éléments suivants :

Élément	Description
Date	Expression de date à formater.
NamedFormat	Facultatif. Valeur numérique indiquant le format de date/heure utilisé. Si cette valeur est omise, vbGeneralDate est employé.
Valeurs

L'argument NamedFormat prend les valeurs suivantes :

Constante	Valeur	Description
vbGeneralDate	0	Affiche une date et/ou une heure. En présence d'une partie de date, elle l'affiche sous forme de date abrégée. En présence d'une partie d'heure, elle l'affiche sous forme d'heure complète. Si les deux parties sont présentes, elles sont toutes deux affichées.
vbLongDate	1	Affiche une date en utilisant le format de date complet spécifié dans les paramètres régionaux de votre ordinateur.
vbShortDate	2	Affiche une date en utilisant le format de date abrégé spécifié dans les paramètres régionaux de l'ordinateur.
vbLongTime	3	Affiche une heure en utilisant le format d'heure spécifié dans les paramètres régionaux de l'ordinateur.
vbShortTime	4	Affiche une heure au format 24 heures (hh:mm).


FormatNumber, fonction

Description

Renvoie une expression formatée sous forme de nombre.

Syntaxe

FormatNumber(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

La syntaxe de la fonction FormatNumber comprend les éléments suivants :

Élément	Description
Expression	Expression à formater.
NumDigitsAfterDecimal	Facultatif. Valeur numérique indiquant combien de positions à droite de la virgule sont affichées. La valeur par défaut (-1) indique que les paramètres régionaux de l'ordinateur sont employés.
IncludeLeadingDigit	Facultatif. Constante Tristate (3-états) indiquant si un zéro non significatif est affiché pour les valeurs décimales. Reportez-vous à la section Valeurs.
UseParensForNegativeNumbers	Facultatif. Constante Tristate (3-états) indiquant s'il faut placer ou non les valeurs négatives entre parenthèses. Reportez-vous à la section Valeurs.
GroupDigits	Facultatif. Constante Tristate (3-états) indiquant si les nombres doivent être regroupés ou non à l'aide du symbole de groupement spécifié dans le Panneau de configuration. Reportez-vous à la section Valeurs.
Valeurs

Les arguments IncludeLeadingDigit, UseParensForNegativeNumbers et GroupDigits prennent les valeurs suivantes :

Constante	Valeur	Description
vbTrue	–1	True
vbFalse	0	False
vbUseDefault	–2	Utiliser la valeur des paramètres régionaux de l'ordinateur.
Remarques

Lorsqu'un ou plusieurs des arguments facultatifs sont omis, les valeurs de ces arguments sont fournies par les paramètres régionaux de l'ordinateur.

Note   Tous les paramètres sont issus de l'onglet Nombre des Paramètres régionaux.


FormatPercent, fonction

Description

Renvoie une expression formatée sous forme de pourcentage (multiplié par 100) avec un caractère % de fin.

Syntaxe

FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

La syntaxe de la fonction FormatPercent comprend les éléments suivants :

Élément	Description
Expression	Expression à formater.
NumDigitsAfterDecimal	Facultatif. Valeur numérique indiquant combien de positions à droite de la virgule sont affichées. La valeur par défaut (-1) indique que les paramètres régionaux de l'ordinateur sont employés.
IncludeLeadingDigit	Facultatif. Constante Tristate (3-états) indiquant si un zéro non significatif s'affiche pour les valeurs décimales. Reportez-vous à la section Valeurs.
UseParensForNegativeNumbers	Facultatif. Constante Tristate (3-états) indiquant s'il faut mettre les valeurs négatives entre parenthèses. Reportez-vous à la section Valeurs.
GroupDigits	Facultatif. Constante Tristate (3-états) indiquant s'il faut ou non grouper les nombres en utilisant le séparateur de groupement spécifié dans les paramètres régionaux de l'ordinateur. Reportez-vous à la section Valeurs.
Valeurs

Les arguments IncludeLeadingDigit, UseParensForNegativeNumbers et GroupDigits prennent les valeurs suivantes :

Constante	Valeur	Description
vbTrue	–1	True
VbFalse	0	False
vbUseDefault	–2	Utilise la valeur issue des paramètres régionaux de l'ordinateur.
Remarques

Lorsqu'un ou plusieurs des arguments facultatifs sont omis, les valeurs de ces arguments sont fournies par les paramètres régionaux de l'ordinateur.

Note   Tous les paramètres sont issus de l'onglet Nombre des Paramètres régionaux.


InStrRev, fonction

Description

Renvoie la position d'une occurrence d'une chaîne dans une autre, à partir de la fin de la chaîne.

Syntaxe

InstrRev(stringcheck, stringmatch[, start[, compare]])

La syntaxe de la fonction InstrRev comprend les arguments nommés suivants :

Élément	Description
stringcheck	Expression de chaîne dans laquelle la recherche est effectuée.
stringmatch	Expression recherchée.
start	Facultatif. Expression numérique définissant la position de départ de chaque recherche. Si elle est omise, -1 est employé, ce qui signifie que la recherche commence à la dernière position de caractère. Si l'argument start contient la valeur  Null, une erreur se produit.
compare	Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Si elle est omise, une comparaison binaire est effectuée. Reportez-vous à la section Valeurs.
Valeurs

L'argument compare prend les valeurs suivantes :

Constante	Valeur	Description
vbUseCompareOption	–1	Effectue une comparaison à l'aide de l'instruction Option Compare.
vbBinaryCompare	0	Effectue une comparaison binaire.
vbTextCompare	1	Effectue une comparaison de texte.
vbDatabaseCompare	2	Microsoft Access seulement. Effectue une comparaison basée sur des informations contenues dans votre base de données.
Valeurs renvoyées

La fonction InStrRev renvoie les valeurs suivantes :

Si	la fonction InStrRev renvoie
stringcheck a une longueur nulle	0
stringcheck est Null	Null
stringmatch a une longueur nulle	start
stringmatch est Null	Null
stringmatch est introuvable	0
stringmatch est trouvée dans la chaîne stringcheck	la position à laquelle une correspondance est trouvée
start > Len(stringmatch)	0
Remarques

Notez que la syntaxe de la fonction InstrRev est différente de celle de la fonction Instr.


Join, fonction

Description

Renvoie une chaîne créée par la jonction de plusieurs sous-chaînes contenues dans un tableau.

Syntaxe

Join(sourcearray[, delimiter])

La syntaxe de la fonction Join comprend les arguments nommés suivants :

Élément	Description
sourcearray	Tableau à une dimension contenant les sous-chaînes à joindre.
delimiter	Facultatif. Caractère de chaîne utilisé pour séparer les sous-chaînes dans la chaîne renvoyée. S'il est omis, le caractère espace (" ") est employé. Si l'argument delimiter est une chaîne de longueur nulle (""), tous les éléments de la liste sont concaténés sans séparateur.


MonthName, fonction

Description

Renvoie une chaîne indiquant le mois spécifié.

Syntaxe

MonthName(month[, abbreviate])

La syntaxe de la fonction MonthName comprend les éléments suivants :

Élément	Description
month	Désignation numérique du mois. Par exemple, 1 pour janvier, 2 pour février, et ainsi de suite.
abbreviate	Facultatif. Valeur de type Boolean indiquant si le nom du mois est abrégé. Si cette valeur est omise, la valeur par défaut est False, ce qui signifie que le nom du mois n'est pas abrégé.


Replace, fonction

Description

Renvoie une chaîne dans laquelle une sous-chaîne spécifiée a été remplacée plusieurs fois par une autre sous-chaîne.

Syntaxe

Replace(expression, find, replace[, start[, count[, compare]]])

La syntaxe de la fonction Replace comprend les arguments nommés suivants :

Élément	Description
expression	Expression de chaîne contenant une sous-chaîne à remplacer.
find	Sous-chaîne recherchée.
replace	Sous-chaîne de remplacement.
start	Facultatif. Position dans l'argument expression où la recherche de sous-chaîne doit commencer. Si elle est omise, la position 1 est prise par défaut.
count	Facultatif. Nombre de remplacements de sous-chaîne à effectuer. Si cette valeur est omise, la valeur par défaut -1, qui signifie tous les remplacements possibles, est employée.
compare	Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Reportez-vous à la section Valeurs.
Valeurs

L'argument compare prend les valeurs suivantes :

Constante	Valeur	Description
vbUseCompareOption	–1	Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare	0	Effectue une comparaison binaire.
vbTextCompare	1	Effectue une comparaison de texte.
vbDatabaseCompare	2	Microsoft Access seulement. Effectue une comparaison basée sur des informations contenues dans votre base de données.
Valeurs renvoyées

La fonction Replace prend les valeurs suivantes :

Si	La fonction Replace renvoie
expression a une longueur nulle	Une chaîne de longueur nulle ("").
expression a la valeur Null	Une erreur.
find a une longueur nulle	Une copie de l'expression.
replace a une longueur nulle	Une copie de l'expression, toutes les occurrences de find étant retirées.
start > Len(expression)	Une chaîne de longueur nulle.
count a une valeur de 0	Une copie de l'expression.
Remarques

La valeur renvoyée par la fonction Replace est une chaîne, une fois les substitutions effectuées, qui commence à la position spécifiée par l'argument start et se termine à la fin de la chaîne expression. Il ne s'agit pas d'une copie de la chaîne d'origine du début à la fin.


Round, fonction

Description

Renvoie un nombre arrondi à un nombre spécifié de positions décimales.

Syntaxe

Round(expression [,numdecimalplaces])

La syntaxe de la fonction Round comprend les éléments suivants :

Élément	Description
expression	Expression numérique arrondie.
numdecimalplaces	Facultatif. Nombre indiquant combien de positions à droite de la virgule sont incluses dans le nombre arrondi. Si cette valeur est omise, les entiers sont arrondis par la fonction Round.


Split, fonction

Description

Renvoie un tableau de base zéro à une dimension contenant le nombre spécifié de sous-chaînes.

Syntaxe

Split(expression[, delimiter[, limit[, compare]]])

La syntaxe de la fonction Split comprend les arguments nommés suivants :

Élément	Description
expression	Expression de chaîne contenant des sous-chaînes et des séparateurs. Si l'argument expression est une chaîne de longueur nulle (""), la fonction Split renvoie un tableau vide, c'est-à-dire un tableau ne comportant ni éléments, ni données.
delimiter	Facultatif. Caractère de chaîne utilisé pour identifier les limites de sous-chaîne. S'il est omis, le caractère espace (" ") est utilisé comme séparateur par défaut. Si l'argument delimiter est une chaîne de longueur nulle, un tableau à un élément contenant toute la chaîne expression est renvoyé.
limit	Facultatif. Nombre de sous-chaînes à renvoyer; -1 indique que toutes les sous-chaînes sont renvoyées.
compare	Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Reportez-vous à la section Valeurs.
Valeurs

L'argument compare prend les valeurs suivantes :

Constante	Valeur	Description
vbUseCompareOption	–1	Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare	0	Effectue une comparaison binaire.
vbTextCompare	1	Effectue une comparaison de texte.
vbDatabaseCompare	2	Microsoft Access seulement. Effectue une comparaison basée sur des informations contenues dans votre base de données.


StrReverse, fonction

Description

Renvoie une chaîne contenant des caractères dont l'ordre a été inversé par rapport à une chaîne donnée.

Syntaxe

StrReverse(expression)

L'argument expression est la chaîne dont l'ordre des caractères est à inverser. Si l'argument expression est une chaîne de longueur nulle (""), alors la fonction renvoie une chaîne de longueur nulle. Si l'argument expression est Null, une erreur se produit.


WeekdayName, fonction

Description

Renvoie une chaîne indiquant le jour de la semaine spécifié.

Syntaxe

WeekdayName(weekday, abbreviate, firstdayofweek)

La syntaxe de la fonction WeekdayName comprend les éléments suivants :

Élément	Description
weekday	Désignation numérique du jour de la semaine. La valeur numérique du jour de la semaine dépend de la valeur de l'argument firstdayofweek.
abbreviate	Facultatif. Valeur booléenne indiquant si le nom du jour de semaine doit être abrégé. Si cette valeur est omise, la valeur par défaut est False, ce qui signifie que le nom du jour n'est pas abrégé.
firstdayofweek	Facultatif. Valeur numérique indiquant le premier jour de la semaine.
Valeurs

L'argument firstdayofweek prend les valeurs suivantes :

Constante	Valeur	Description
vbUseSystem	0	Utiliser la valeur API NLS de la langue nationale.
vbSunday	1	Dimanche (défaut)
vbMonday	2	Lundi
vbTuesday	3	Mardi
vbWednesday	4	Mercredi
vbThursday	5	Jeudi
vbFriday	6	Vendredi
vbSaturday	7	Samedi


Add, méthode (Dictionary)

Description

Ajoute une paire clé/élément à un objet Dictionary.

Syntaxe

object.Add key, item

La syntaxe de la méthode Add comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet Dictionary.
key	Argument key associé à l'argument item ajouté.
item	Argument item associé à l'argument key ajouté.
Remarques

Une erreur se produit si l'argument key existe déjà.


Add, méthode (Folders)

Description

Ajoute un nouveau Folder à une collection Folders.

Syntaxe

object.Add folderName

La syntaxe de la méthode Add comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'une collection Folders.
folderName	Le nom du nouveau Folder ajouté.
Remarques

Une erreur se produit si l'argument folderName existe déjà.


BuildPath, méthode

Description

Ajoute un nom à un chemin existant.

Syntaxe

object.BuildPath(path, name)

La syntaxe de la méthode BuildPath comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
path	Chemin existant auquel l'argument name est ajouté. Le chemin peut être absolu ou relatif et n'a pas besoin de correspondre à un chemin existant.
name	Nom ajouté à l'argument path.
Remarques

La méthode BuildPath insère si nécessaire un séparateur de chemin entre le chemin existant et le nouveau nom.


Close, méthode

Description

Ferme un fichier texte TextStream.

Syntaxe

object.Close

L'argument object correspond toujours au nom d'un objet TextStream.


Copy, méthode

Description

Copie un fichier ou un dossier spécifié d'un emplacement vers un autre.

Syntaxe

object.Copy destination[, overwrite]

La syntaxe de la méthode Copy comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet File ou Folder.
destination	Destination de la copie du fichier ou du dossier. Les caractères génériques ne sont pas autorisés.
overwrite	Facultatif. Valeur booléenne True (par défaut) si les fichiers ou dossiers existants sont remplacés ; False s'ils ne le sont pas.
Remarques

Le résultat de la méthode Copy sur un objet File ou Folder est identique à celui de FileSystemObject.CopyFile ou FileSystemObject.CopyFolder où le fichier ou le dossier référencé par object est passé en argument. Notez cependant que ces méthodes alternatives sont capables de copier plusieurs fichiers ou dossiers.


CopyFile, méthode

Description

Copie un ou plusieurs fichiers d'un emplacement vers un autre.

Syntaxe

object.CopyFile source, destination[, overwrite]

La syntaxe de la méthode CopyFile comprend les éléments suivants :

Élément	Description
object	L'argument object représente toujours un objet FileSystemObject.
source	Chaîne de spécification de fichier pouvant contenir des caractères génériques afin de copier un ou plusieurs fichiers.
destination	Chaîne de spécification de la destination de la copie du ou des fichiers issus de source. Les caractères génériques ne sont pas autorisés.
overwrite	Facultatif. Valeur de type Boolean indiquant si les fichiers existants sont remplacés. Si l'argument vaut True, les fichiers sont remplacés ; s'il vaut False, ils ne le sont pas. La valeur par défaut est True. Notez que CopyFile échoue si destination est en lecture seule, quelle que soit la valeur de l'argument overwrite.
Remarques

Les caractères génériques sont autorisés uniquement pour le dernier composant de l'argument source. Par exemple, vous pouvez utiliser :

FileSystemObject.CopyFile "c:\Mes Documents\lettres\*.doc", "c:\dossiertemp\"

Mais vous ne pouvez pas utiliser :

FileSystemObject.CopyFile "c:\Mes Documents\*\R1???97.xls", "c:\dossiertemp"

Si l'argument source contient des caractères génériques ou si destination se termine par un séparateur de chemin (\), destination est considéré comme un dossier existant vers lequel s'effectue la copie des fichiers désignés. Sinon, destination est considéré comme le nom du fichier à créer. Dans les deux cas, la copie d'un fichier individuel présente trois possibilités.

•	Si destination n'existe pas, source est copié. C'est le cas le plus courant.

•	Si destination est un fichier existant, une erreur se produit si overwrite est False. Sinon, la copie de source tente de remplacer le fichier existant.

•	Si destination est un répertoire, une erreur se produit.

Une erreur se produit aussi si une source contenant des caractères génériques ne correspond à aucun fichier. La méthode CopyFile s'arrête sur la première erreur rencontrée. Aucune tentative n'est effectuée pour restaurer l'état précédent ou annuler les modifications précédant l'erreur.


CopyFolder, méthode

Description

Copie récursivement un dossier d'un emplacement vers un autre.

Syntaxe

object.CopyFolder source, destination[, overwrite]

La syntaxe de la méthode CopyFolder comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
source	Chaîne de spécification de dossier pouvant contenir des caractères génériques afin de copier un ou plusieurs dossiers.
destination	Chaîne de spécification de la destination de la copie du ou des dossiers et sous-dossiers issus de source. Les caractères génériques ne sont pas autorisés.
overwrite	Facultatif. Valeur de type Boolean indiquant si les dossiers existants sont remplacés. Si l'argument vaut True, les fichiers sont remplacés ; s'il vaut False, ils ne le sont pas. La valeur par défaut est True.
Remarques

Les caractères génériques sont autorisés uniquement pour le dernier composant de l'argument source. Par exemple, vous pouvez utiliser :

FileSystemObject.CopyFolder "c:\Mes documents\lettres\*", "c:\dossiertemp\"

Mais vous ne pouvez pas utiliser :

FileSystemObject.CopyFolder c:\Mes documents\*\*", "c:\dossiertemp\"

Si l'argument source contient des caractères génériques ou si destination se termine par un séparateur de chemin (\), destination est considéré comme un dossier existant vers lequel s'effectue la copie des dossiers et sous-dossiers désignés. Sinon, destination est considéré comme le nom du dossier à créer. Dans les deux cas, la copie d'un dossier individuel présente quatre possibilités.

•	Si destination n'existe pas, le dossier source et son contenu sont copiés. C'est le cas le plus courant.

•	Si destination est un fichier existant, une erreur se produit.

•	Si destination est un répertoire, l'opération tente de copier le dossier et son contenu. Si un fichier contenu dans source existe déjà dans destination, une erreur se produit si overwrite est False. Sinon, la copie tente de remplacer le fichier existant.

•	Si destination est un répertoire en lecture seule, une erreur se produit si l'opération tente de copier un fichier existant en lecture seule dans ce répertoire alors que overwrite vaut False.

Une erreur se produit aussi si un argument source contenant des caractères génériques ne correspond à aucun dossier.

La méthode CopyFolder s'arrête sur la première erreur rencontrée. Aucune tentative n'est effectuée pour annuler les modifications précédant l'erreur.


CreateFolder, méthode

Description

Crée un dossier.

Syntaxe

object.CreateFolder(foldername)

La syntaxe de la méthode CreateFolder comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
foldername	Expression de chaîne identifiant le dossier à créer.
Remarques

Une erreur se produit si le dossier spécifié existe déjà.


CreateTextFile, méthode

Description

Crée un nom de fichier spécifié et renvoie un objet TextStream pouvant être utilisé pour lire ou écrire dans le fichier.

Syntaxe

object.CreateTextFile(filename[, overwrite[, unicode]])

La syntaxe de la méthode CreateTextFile comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject ou Folder.
filename	Expression de chaîne identifiant le fichier à créer.
overwrite	Facultatif. Valeur de type Boolean indiquant si un fichier existant peut être remplacé. La valeur est True si le fichier peut être écrasé, False dans le cas contraire. Si cette valeur est omise, les fichiers existants ne peuvent pas être écrasés.
unicode	Facultatif. Valeur de type Boolean indiquant si le fichier est créé sous forme de fichier Unicode ou ASCII. La valeur est True si le fichier est créé sous forme de fichier Unicode, False s'il est créé sous forme de fichier ASCII. Si cette valeur est omise, un fichier ASCII est créé par défaut.
Remarques

Le code suivant illustre l'emploi de la méthode CreateTextFile pour créer et ouvrir un fichier texte :

Sub CreateAfile

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set a = fs.CreateTextFile("c:\fichiertest.txt", True)

    a.WriteLine("Ceci est un test.")

    a.Close

End Sub

Si l'argument overwrite vaut False, ou est absent, pour un filename déjà existant, une erreur se produit.


Delete, méthode

Description

Supprime un fichier ou un dossier spécifié.

Syntaxe

object.Delete force

La syntaxe de la méthode Delete comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet File ou Folder.
force	Facultatif. Valeur booléenne True si les fichiers ou dossiers en lecture seule sont supprimés, False (par défaut) dans le cas contraire.
Remarques

Une erreur se produit si le fichier ou répertoire spécifié n'existe pas.

Le résultat de la méthode Delete sur un objet File ou Folder est identique à celui de FileSystemObject.DeleteFile ou FileSystemObject.DeleteFolder.

La méthode Delete ne fait pas de distinction entre les dossiers vides et les autres. Le dossier spécifié est supprimé qu'il ait un contenu ou non.


DeleteFile, méthode

Description

Supprime un fichier spécifié.

Syntaxe

object.DeleteFile filespec[, force]

La syntaxe de la méthode DeleteFile comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
filespec	Correspond toujours au nom du fichier à supprimer. L'argument filespec peut contenir des caractères génériques dans le dernier composant du chemin.
force	Facultatif. Valeur booléenne True si les fichiers en lecture seule sont supprimés, False (par défaut) dans le cas contraire.
Remarques

Une erreur se produit si aucun fichier correspondant n'est trouvé. La méthode DeleteFile s'arrête sur la première erreur rencontrée. Aucune tentative n'est effectuée pour restaurer l'état précédent ou annuler les modifications précédant l'erreur.


DeleteFolder, méthode

Description

Supprime un dossier spécifié et son contenu.

Syntaxe

object.DeleteFolder folderspec[, force]

La syntaxe de la méthode DeleteFolder comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
folderspec	Correspond toujours au nom du dossier à supprimer. L'argument folderspec peut contenir des caractères génériques dans le dernier composant du chemin.
force	Facultatif. Valeur booléenne True si les fichiers ou dossiers en lecture seule sont supprimés, False (par défaut) dans le cas contraire.
Remarques

La méthode DeleteFolder ne fait pas de distinction entre les dossiers vides et les autres. Le dossier spécifié est supprimé qu'il ait un contenu ou non.

Une erreur se produit si aucun dossier correspondant n'est trouvé. La méthode DeleteFolder s'arrête sur la première erreur rencontrée. Aucune tentative n'est effectuée pour restaurer l'état précédent ou annuler les modifications précédant l'erreur.


DriveExists, méthode

Description

Renvoie la valeur True si le lecteur spécifié existe, False dans le cas contraire.

Syntaxe

object.DriveExists(drivespec)

La syntaxe de la méthode DriveExists comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
drivespec	Une lettre désignant un lecteur ou une spécification de chemin complète.
Remarques

Pour les lecteurs de supports amovibles, la méthode DriveExists renvoie True même si le lecteur ne contient pas de support. Utilisez la propriété IsReady de l'objet Drive pour déterminer si un lecteur est prêt.


Exists, méthode

Description

Renvoie la valeur True si une clé spécifiée existe dans l'objet Dictionary, False dans le cas contraire.

Syntaxe

object.Exists(key)

La syntaxe de la méthode Exists comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet Dictionary.
key	L'argument recherché dans l'objet Dictionary.


FileExists, méthode

Description

Renvoie la valeur True si un fichier spécifié existe, False dans le cas contraire.

Syntaxe

object.FileExists(filespec)

La syntaxe de la méthode FileExists comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
filespec	Le nom du fichier dont l'existence est à déterminer. Une spécification de chemin complet (absolue ou relative) est nécessaire si le fichier ne se trouve pas dans le dossier courant.


FolderExists, méthode

Description

Renvoie la valeur True si un dossier spécifié existe, False dans le cas contraire.

Syntaxe

object.FolderExists(folderspec)

La syntaxe de la méthode FolderExists comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
folderspec	Le nom du dossier dont l'existence doit être déterminée. Une spécification de chemin complet (absolue ou relative) est nécessaire si le dossier ne se trouve pas dans le dossier courant.


GetAbsolutePathName, méthode

Description

Renvoie un chemin complet et non ambigu à partir d'une spécification de chemin fournie.

Syntaxe

object.GetAbsolutePathName(pathspec)

La syntaxe de la méthode GetAbsolutePathName comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
pathspec	Spécification de chemin à changer en chemin complet et non ambigu.
Remarques

Un chemin est complet et non ambigu s'il fournit une référence complète à partir de la racine du lecteur spécifié. Un chemin complet peut se terminer par un caractère séparateur (\) uniquement s'il spécifie le dossier racine d'un lecteur mappé.

En supposant que le répertoire courant soit c:\mes documents\rapports, le tableau suivant illustre le fonctionnement de la méthode GetAbsolutePathName.

pathspec	Chemin renvoyé
"c:"	"c:\mes documents\rapports"
"c:.."	"c:\mes documents"
"c:\\\"	"c:\"
"c:*.*\mai97"	"c:\mes documents\rapports\*.*\mai97"
"région1"	"c:\mes documents\rapports\région1"
"c:\..\..\mes documents"	"c:\mes documents"


GetBaseName, méthode

Description

Renvoie une chaîne contenant le nom de base, c'est-à-dire sans extension, du dernier composant d'un chemin.

Syntaxe

object.GetBaseName(path)

La syntaxe de la méthode GetBaseName comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
path	La spécification de chemin pour le composant dont le nom de base doit être renvoyé.
Remarques

La méthode GetBaseName renvoie une chaîne de longueur nulle ("") si aucun composant ne correspond à l'argument path.

Note   La méthode GetBaseName travaille uniquement sur la chaîne path fournie. Elle ne tente pas de résoudre le chemin ni de vérifier son existence.


GetDrive, méthode

Description

Renvoie un objet Drive correspondant au lecteur dans un chemin spécifié.

Syntaxe

object.GetDrive drivespec

La syntaxe de la méthode GetDrive comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
drivespec	L'argument drivespec peut être une lettre de lecteur (c), une lettre de lecteur avec deux points (c:), une lettre de lecteur avec deux points et un séparateur de chemin (c:\) ou toute spécification de partage réseau (\\ordinateur2\partage1).
Remarques

L'existence des partages réseau est contrôlée.

Une erreur se produit si l'argument drivespec n'est pas conforme à l'un des formats acceptés ou n'existe pas.

Pour appeler la méthode GetDrive sur une chaîne de chemin normale, utilisez la séquence suivante pour obtenir une chaîne utilisable comme argument drivespec :

DriveSpec = GetDriveName(GetAbsolutePathName(Path))


GetDriveName, méthode

Description

Renvoie une chaîne contenant le nom du lecteur pour un chemin spécifié.

Syntaxe

object.GetDriveName(path)

La syntaxe de la méthode GetDriveName comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
path	La spécification de chemin pour le composant dont le nom de lecteur doit être renvoyé.
Remarques

La méthode GetDriveName renvoie une chaîne de longueur nulle ("") si le lecteur ne peut pas être déterminé.

Note   La méthode GetDriveName travaille uniquement sur la chaîne path fournie. Elle ne tente pas de résoudre le chemin ni de vérifier son existence.


GetExtensionName, méthode

Description

Renvoie une chaîne contenant le nom de l'extension du dernier composant d'un chemin.

Syntaxe

object.GetExtensionName(path)

La syntaxe de la méthode GetExtensionName comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
path	La spécification de chemin pour le composant dont le nom d'extension doit être renvoyé.
Remarques

Pour les lecteurs réseau, le répertoire racine (\) est considéré comme un composant.

La méthode GetExtensionName renvoie une chaîne de longueur nulle ("") si aucun composant ne correspond à l'argument path.


GetFile, méthode

Description

Renvoie un objet File correspondant au fichier dans un chemin spécifié.

Syntaxe

object.GetFile(filespec)

La syntaxe de la méthode GetFile comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
filespec	L'argument filespec est le chemin (absolu ou relatif) d'un fichier spécifique.
Remarques

Une erreur se produit si le fichier spécifié n'existe pas.


GetFileName, méthode

Description

Renvoie le dernier composant d'une chaîne spécifiée qui ne fait pas partie de la spécification de lecteur.

Syntaxe

object.GetFileName(pathspec)

La syntaxe de la méthode GetFileName comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
pathspec	Le chemin (absolu ou relatif) vers un fichier spécifique.
Remarques

La méthode GetFileName renvoie une chaîne de longueur nulle ("") si pathspec ne se termine pas par le composant nommé.

Note   La méthode GetFileName travaille uniquement sur la chaîne path fournie. Elle ne tente pas de résoudre le chemin ni de vérifier son existence.


GetFolder, méthode

Description

Renvoie un objet Folder correspondant au dossier dans un chemin spécifié.

Syntaxe

object.GetFolder(folderspec)

La syntaxe de la méthode GetFolder comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
folderspec	L'argument folderspec est le chemin (absolu ou relatif) vers un dossier spécifique.
Remarques

Une erreur se produit si le dossier spécifié n'existe pas.


GetParentFolderName, méthode

Description

Renvoie une chaîne contenant le nom du dossier parent du dernier composant dans un chemin spécifié.

Syntaxe

object.GetParentFolderName(path)

La syntaxe de la méthode GetParentFolderName comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
path	La spécification de chemin pour le composant dont le nom de dossier parent doit être renvoyé.
Remarques

La méthode GetParentFolderName renvoie une chaîne de longueur nulle ("") s'il n'y a pas de dossier parent pour le composant spécifié dans l'argument path.

Note   La méthode GetParentFolderName travaille uniquement sur la chaîne path fournie. Elle ne tente pas de résoudre le chemin ni de vérifier son existence.


GetSpecialFolder, méthode

Description

Renvoie le dossier spécial indiqué.

Syntaxe

object.GetSpecialFolder(folderspec)

La syntaxe de la méthode GetSpecialFolder comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
folderspec	Le nom du dossier spécial à renvoyer. Ce nom peut être toute constante de la section Valeurs.
Valeurs

L'argument folderspec peut prendre les valeurs suivantes :

Constante	Valeur	Description
WindowsFolder	0	Le dossier Windows contient des fichiers installés par le système d'exploitation Windows.
SystemFolder	1	Le dossier Système contient les bibliothèques, les polices et les pilotes de périphérique.
TemporaryFolder	2	Le dossier Temp stocke les fichiers temporaires. Son chemin figure dans la variable d'environnement TMP.


GetTempName, méthode

Description

Renvoie un nom de fichier ou de dossier temporaire généré aléatoirement utile pour les opérations qui nécessitent un fichier ou un dossier temporaire.

Syntaxe

object.GetTempName

L'argument object facultatif correspond toujours au nom d'un objet FileSystemObject.

Remarques

La méthode GetTempName ne crée pas de fichier. Elle fournit un nom de fichier temporaire que vous pouvez utiliser avec la méthode CreateTextFile pour créer un fichier.


Items, méthode

Description

Renvoie un tableau contenant tous les éléments d'un objet Dictionary.

Syntaxe

object.Items

L'argument object correspond toujours au nom d'un objet Dictionary.

Remarques

Le code suivant illustre l'emploi de la méthode Items :

Dim a, d, i       'Crée des variables

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athènes"     'Ajoute des clés et des éléments.

d.Add "b", "Belgrade"

d.Add "c", "Le Caire"

a = d.Items       'Obtient les éléments

For i = 0 To d.Count -1 'Effectue une itération sur le tableau

    Print a(i)    'Imprime un élément

Next

...


Keys, méthode

Description

Renvoie un tableau contenant toutes les clés existantes d'un objet Dictionary.

Syntaxe

object.Keys

L'argument object correspond toujours au nom d'un objet Dictionary.

Remarques

Le code suivant illustre l'emploi de la méthode Keys :

Dim a, d, i       'Crée des variables

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athènes"     'Ajoute des clés et des éléments.

d.Add "b", "Belgrade"

d.Add "c", "Le Caire"

a = d.keys        'Obtient les éléments

For i = 0 To d.Count -1 'Effectue une itération sur le tableau

    Print a(i)    'Imprime un élément

Next

...


Move, méthode

Description

Déplace un fichier ou un dossier spécifié d'un emplacement vers un autre.

Syntaxe

object.Move destination

La syntaxe de la méthode Move comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet File ou Folder.
destination	Destination du déplacement du fichier ou du dossier. Les caractères génériques ne sont pas autorisés.
Remarques

Le résultat de la méthode Move sur un objet File ou Folder est identique à celui de FileSystemObject.MoveFile ou FileSystemObject.MoveFolder. Notez cependant que ces méthodes alternatives sont capables de déplacer plusieurs fichiers ou dossiers.


MoveFile, méthode

Description

Déplace un ou plusieurs fichiers d'un emplacement vers un autre.

Syntaxe

object.MoveFile source, destination

La syntaxe de la méthode MoveFile comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
source	Chemin du ou des fichiers à déplacer. La chaîne de l'argument source peut contenir des caractères génériques dans le dernier composant du chemin uniquement.
destination	Chemin de destination du ou des fichiers à déplacer. L'argument destination ne peut pas contenir de caractères génériques.
Remarques

Si l'argument source contient des caractères génériques ou si destination se termine par un séparateur de chemin (\), destination est considéré comme un dossier existant vers lequel s'effectue le déplacement des fichiers désignés. Sinon, destination est considéré comme le nom d'un fichier de destination à créer. Dans les deux cas, le déplacement d'un fichier individuel présente trois possibilités :

•	Si destination n'existe pas, le fichier est déplacé. C'est le cas le plus courant.

•	Si destination est un fichier existant, une erreur se produit.

•	Si destination est un dossier, une erreur se produit.

Une erreur se produit aussi si une source contenant des caractères génériques ne correspond à aucun fichier. La méthode MoveFile s'arrête sur la première erreur rencontrée. Aucune tentative n'est effectuée pour annuler les modifications précédant l'erreur.

Important   Cette méthode permet le déplacement de fichiers entre des volumes distincts uniquement si le système d'exploitation gère cette opération.


MoveFolder, méthode

Description

Déplace un ou plusieurs dossiers d'un emplacement vers un autre.

Syntaxe

object.MoveFolder source, destination

La syntaxe de la méthode MoveFolder comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
source	Chemin du ou des dossiers à déplacer. La chaîne de l'argument source peut contenir des caractères génériques dans le dernier composant du chemin uniquement.
destination	Chemin de destination du ou des dossiers à déplacer. L'argument destination ne peut pas contenir de caractères génériques.
Remarques

Si l'argument source contient des caractères génériques ou si destination se termine par un séparateur de chemin (\), destination est considéré comme un dossier existant vers lequel s'effectue le déplacement des fichiers désignés. Sinon, destination est considéré comme le nom d'un dossier de destination à créer. Dans les deux cas, le déplacement d'un dossier individuel présente trois possibilités :

•	Si destination n'existe pas, le dossier est déplacé. C'est le cas le plus courant.

•	Si destination est un fichier existant, une erreur se produit.

•	Si destination est un répertoire, une erreur se produit.

Une erreur se produit aussi si une source contenant des caractères génériques ne correspond à aucun dossier. La méthode MoveFolder s'arrête sur la première erreur rencontrée. Aucune tentative n'est effectuée pour annuler les modifications précédant l'erreur.

Important   Cette méthode permet le déplacement de dossiers entre des volumes distincts uniquement si le système d'exploitation gère cette opération.


OpenAsTextStream, méthode

Description

Ouvre un fichier spécifié et renvoie un objet TextStream pouvant être utilisé pour lire, écrire ou ajouter au fichier.

Syntaxe

object.OpenAsTextStream([iomode, [format]])

La syntaxe de la méthode OpenAsTextStream comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet File.
iomode	Facultatif. Indique le mode entrée/sortie. Cet argument peut être une des trois constantes : ForReading, ForWriting ou ForAppending.
format	Facultatif. L'une des trois valeurs Tristate (3-états) permettant d'indiquer le format du fichier ouvert. Si cette valeur est omise, le fichier est ouvert en mode ASCII.
Valeurs

L'argument iomode peut prendre les valeurs suivantes :

Constante	Valeur	Description
ForReading	1	Ouvre un fichier en lecture seule. Vous ne pouvez pas écrire dans ce fichier.
ForWriting	2	Ouvre un fichier en écriture. Si un fichier existe sous le même nom, son contenu est écrasé.
ForAppending	8	Ouvre un fichier et écrit à la fin du fichier.
L'argument format peut prendre les valeurs suivantes :

Constante	Valeur	Description
TristateUseDefault	–2	Ouvre le fichier avec la valeur par défaut du système.
TristateTrue	–1	Ouvre le fichier en mode Unicode.
TristateFalse	0	Ouvre le fichier en mode ASCII.
Remarques

La méthode OpenAsTextStream offre la même fonctionnalité que la méthode OpenTextFile du FileSystemObject. En outre, la méthode OpenAsTextStream permet d'écrire dans un fichier.

Le code suivant illustre l'emploi de la méthode OpenAsTextStream :

Sub TextStreamTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Const TristateUseDefault = -2, TristateTrue = -1,

TristateFalse = 0

    Dim fs, f, ts, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    fs.CreateTextFile "test1.txt"      'Crée un fichier

    Set f = fs.GetFile("test1.txt")

    Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)

    ts.Write "Bonjour"

    ts.Close

    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)

    s = ts.ReadLine

    MsgBox s

    ts.Close

End Sub


OpenTextFile, méthode

Description

Ouvre un fichier spécifié et renvoie un objet TextStream pouvant être utilisé pour lire un fichier ou y effectuer un ajout.

Syntaxe

object.OpenTextFile(filename[, iomode[, create[, format]]])

La syntaxe de la méthode OpenTextFile comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet FileSystemObject.
filename	Expression de chaîne identifiant le fichier à ouvrir.
iomode	Facultatif. Indique le mode entrée/sortie. Cet argument peut être une des deux constantes : ForReading ou ForAppending.
create	Facultatif. Valeur de type Boolean indiquant si un nouveau fichier peut être créé au cas où le nom filename spécifié n'existe pas. La valeur est True si un nouveau fichier est créé, False dans le cas contraire. La valeur par défaut est False.
format	Facultatif. L'une des trois valeurs Tristate (3-états) permettant d'indiquer le format du fichier ouvert. Si cette valeur est omise, le fichier est ouvert en mode ASCII.
Valeurs

L'argument iomode peut prendre les valeurs suivantes :

Constante	Valeur	Description
ForReading	1	Ouvre un fichier en lecture seule. Vous ne pouvez pas écrire dans ce fichier.
ForAppending	8	Ouvre un fichier et écrit à la fin du fichier.
L'argument format peut prendre les valeurs suivantes :

Constante	Valeur	Description
TristateUseDefault	–2	Ouvre le fichier avec la valeur par défaut du système.
TristateTrue	–1	Ouvre le fichier en mode Unicode.
TristateFalse	0	Ouvre le fichier en mode ASCII.
Remarques

Le code suivant illustre l'emploi de la méthode OpenTextFile pour ouvrir un fichier et y ajouter du texte :

Sub OpenTextFileTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Dim fs, f

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.OpenTextFile("c:\testfile.txt", ForAppending,TristateFalse)

    f.Write "Bonjour!"

    f.Close

End Sub


Read, méthode

Description

Lit un nombre spécifié de caractères dans un fichier TextStream et renvoie la chaîne résultante.

Syntaxe

object.Read(characters)

La syntaxe de la méthode Read comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet TextStream.
characters	Nombre de caractères à lire dans le fichier.


ReadAll, méthode

Description

Lit la totalité d'un fichier TextStream et renvoie la chaîne résultante.

Syntaxe

object.ReadAll

L'argument object est toujours le nom d'un objet TextStream.

Remarques

Pour les fichiers volumineux, la méthode ReadAll n'utilise pas de façon rationnelle les ressources mémoire. D'autres techniques d'entrée doivent être employées, telles que la lecture d'un fichier ligne par ligne.


ReadLine, méthode

Description

Lit toute une ligne (caractère de nouvelle ligne exclus) d'un fichier TextStream et renvoie la chaîne résultante.

Syntaxe

object.ReadLine

L'argument object correspond toujours au nom d'un objet TextStream.


Remove, méthode

Description

Retire une paire clé/élément d'un objet Dictionary.

Syntaxe

object.Remove(key)

La syntaxe de la méthode Remove comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet Dictionary.
key	Argument associé à la paire clé/élément à retirer de l'objet Dictionary.
Remarques

Une erreur se produit si la paire clé/élément spécifiée n'existe pas.

Le code suivant illustre l'emploi de la méthode Remove :

Dim a, d, i       'Crée des variables

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athènes"     'Ajoute des clés et des éléments

d.Add "b", "Belgrade"

d.Add "c", "Le Caire"

...

a = d.Remove()    'Supprime la seconde paire


RemoveAll, méthode

Description

La méthode RemoveAll retire toutes les paires clé/élément d'un objet Dictionary.

Syntaxe

object.RemoveAll

L'argument object représente toujours un objet Dictionary.

Remarques

Le code suivant illustre l'emploi de la méthode RemoveAll :

Dim a, d, i       'Crée des variables

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athènes"     'Ajoute des clés et des éléments

d.Add "b", "Belgrade"

d.Add "c", "Le Caire"

...

a = d.RemoveAll   'Purge le dictionnaire


Skip, méthode

Description

Omet un nombre spécifié de caractères lors de la lecture d'un fichier TextStream.

Syntaxe

object.Skip(characters)

La syntaxe de la méthode Skip comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet TextStream.
characters	Nombre de caractères à omettre lors de la lecture d'un fichier.
Remarques

Les caractères omis sont ignorés.


SkipLine, méthode

Description

Omet la ligne suivante lors de la lecture d'un fichier TextStream.

Syntaxe

object.SkipLine

L'argument object représente toujours un objet TextStream.

Remarques

L'omission d'une ligne implique la lecture et la suppression de tous les caractères d'une ligne, y compris du caractère de nouvelle ligne.

Une erreur se produit si le fichier n'est pas ouvert en lecture.


Write, méthode

Description

Écrit une chaîne spécifiée dans un fichier TextStream.

Syntaxe

object.Write(string)

La syntaxe de la méthode Write comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet TextStream.
string	Le texte à écrire dans le fichier.
Remarques

Les chaînes spécifiées sont écrites dans le fichier sans espaces ni caractères entre chaque chaîne. Utilisez la méthode WriteLine pour écrire un caractère de nouvelle ligne ou une chaîne se terminant par un caractère de nouvelle ligne.


WriteBlankLines, méthode

Description

Écrit un nombre spécifié de caractères de nouvelle ligne dans un fichier TextStream.

Syntaxe

object.WriteBlankLines(lines)

La syntaxe de la méthode WriteBlankLines comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet TextStream.
lines	Nombre de caractères de nouvelle ligne à écrire dans le fichier.


WriteLine, méthode

Description

Écrit une chaîne spécifiée et un caractère de nouvelle ligne dans un fichier TextStream.

Syntaxe

object.WriteLine([string])

La syntaxe de la méthode WriteLine comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet TextStream.
string	Facultatif. Le texte à écrire dans le fichier. S'il est omis, un caractère de nouvelle ligne est écrit dans le fichier.


Dictionary, objet

Description

Objet qui stocke des paires clé/élément de données.

Syntaxe

Scripting.Dictionary

Remarques

Un objet Dictionary est l'équivalent d'un tableau associatif PERL. Les éléments, pouvant correspondre à n'importe quelle forme de données, sont stockés dans le tableau. Chaque élément est associé à une clé qui lui est propre. La clé est utilisée pour extraire un élément individuel et correspond généralement à un nombre entier ou à une chaîne, mais peut être n'importe quelle information à l'exception d'un tableau.

Le code suivant illustre la création d'un objet Dictionary :

Dim d       'Crée une variable

Set d = CreateObject(Scripting.Dictionary)

d.Add "a", "Athènes"     'Ajoute des clés et des éléments

d.Add "b", "Belgrade"

d.Add "c", "Le Caire"

...


Drive, objet

Description

Donne accès aux propriétés d'un lecteur de disque ou d'un partage réseau spécifié.

Remarques

Le code suivant illustre l'emploi de l'objet Drive pour accéder aux propriétés de lecteur :

Sub AfficherEspaceDisponible (drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Lecteur " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Espace disponible : " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " KOctets"

    MsgBox s

End Sub


Drives, collection

Description

Collection en lecture seule de tous les lecteurs disponibles.

Remarques

Les lecteurs de supports amovibles apparaissent dans la collection Drives même lorsqu'ils sont vides.

Le code suivant illustre l'obtention de la collection Drives et son itération à l'aide de l'instruction For Each...Next :

Sub AfficherListeLecteurs

    Dim fs, d, dc, s, n

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set dc = fs.Drives

    For Each d in dc

        s = s & d.DriveLetter & " - "

        If d.DriveType = Remote Then

      n = d.ShareName

        Else

      n = d.VolumeName

        End If

        s = s & n & vbCrLf

    Next

    MsgBox s

End Sub


File, objet

Description

Donne accès aux propriétés d'un fichier.

Remarques

Le code suivant illustre l'obtention d'un objet File et l'affichage d'une de ses propriétés.

Sub AfficherInfoFichier(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = f.DateCreated

    MsgBox s

End Sub


Files, collection

Description

Collection de tous les objets File d'un dossier.

Remarques

Le code suivant illustre l'obtention d'une collection Files et son itération à l'aide de l'instruction For Each...Next :

Sub AfficherListeDossiers (specdossier)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(specdossier)

    Set fc = f.Files

    For Each f1 in fc

        s = s & f1.name

        s = s & vbCrLf

    Next

    MsgBox s

End Sub


FileSystemObject, objet

Description

Donne accès au système de fichier d'un ordinateur.

Syntaxe

Scripting.FileSystemObject

Remarques

Le code suivant illustre comment l'objet FileSystemObject est employé pour renvoyer un objet TextStream pouvant être lu, ou dans lequel il est possible d'écrire des informations :

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\fichiertest.txt", True)

a.WriteLine("Ceci est un test.")

a.Close

Dans le code ci-dessus, la fonction CreateObject renvoie l'objet FileSystemObject (fs). La méthode CreateTextFile crée ensuite le fichier sous forme d'objet TextStream (a) et la méthode WriteLine écrit une ligne de texte dans le fichier texte créé. La méthode Close vide le tampon et ferme le fichier.


Folder, objet

Description

Donne accès à toutes les propriétés d'un dossier.

Remarques

Le code suivant illustre l'obtention d'un objet Folder et comment renvoyer une de ses propriétés :

Sub AfficherInfoDossier (specdossier)

    Dim fs, f, s,

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(specdossier)

    s = f.DateCreated

    MsgBox s

End Sub


Folders, collection

Description

Collection de tous les objets Folder contenus dans un objet Folder.

Remarques

Le code suivant illustre l'obtention d'une collection Folders et son itération à l'aide de l'instruction For Each...Next :

Sub AfficherListeDossiers (specdossier)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(specdossier)

    Set fc = f.SubFolders

    For Each f1 in fc

        s = s & f1.name

        s = s &  vbCrLf

    Next

    MsgBox s

End Sub


TextStream, objet

Description

Facilite l'accès séquentiel à un fichier.

Syntaxe

TextStream.{property | method}

Les arguments property et method peuvent correspondre à n'importe quelles propriétés et méthodes associées à l'objet TextStream. Notez qu'en utilisation réelle, l'objet TextStream est remplacé par un espace réservé de variable représentant l'objet TextStream renvoyé par l'objet FileSystemObject.

Remarques

Dans le code suivant, a correspond à l'objet TextStream renvoyé par la méthode CreateTextFile sur l'objet FileSystemObject :

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\fichiertest.txt", True)

a.WriteLine("Ceci est un test.")

a.Close

WriteLine et Close sont deux méthodes de l'objet TextStream.


=, opérateur

Description

Utilisé pour affecter une valeur à une variable ou à une propriété.

Syntaxe

variable = value

La syntaxe de l'opérateur = comprend les éléments suivants :

Élément	Description
variable	Toute variable ou toute propriété en écriture.
value	Tout littéral chaîne ou numérique, constante ou expression.
Remarques

Le nom situé à gauche du signe égal peut être une simple variable scalaire ou l'élément d'un tableau. Les propriétés situées à gauche du signe égal ne peuvent être que des propriétés en écriture lors de l'exécution.


AtEndOfLine, propriété

Description

Propriété en lecture seule qui renvoie la valeur True si le pointeur de fichier est positionné immédiatement avant le marqueur de fin de ligne d'un fichier TextStream, et la valeur False dans le cas contraire.

Syntaxe

object.AtEndOfLine

L'argument object représente toujours un objet TextStream.

Remarques

La propriété AtEndOfLine s'applique uniquement aux fichiers TextStream qui sont ouverts en lecture, sinon, une erreur se produit.

Le code suivant illustre l'emploi de la propriété AtEndOfLine :

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\testfile.txt", ForReading, False)

Do While a.AtEndOfLine <> True

    retstring = a.Read(1)

    ...

Loop

a.Close


AtEndOfStream, propriété

Description

Propriété en lecture seule qui renvoie la valeur True si le pointeur de fichier se trouve à la fin d'un fichier TextStream, et la valeur False dans le cas contraire.

Syntaxe

object.AtEndOfStream

L'argument object représente toujours un objet TextStream.

Remarques

La propriété AtEndOfStream s'applique uniquement aux fichiers TextStream qui sont ouverts en lecture, sinon une erreur se produit.

Le code suivant illustre l'emploi de la propriété AtEndOfStream :

Dim fs, a, retstring

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.OpenTextFile("c:\fichiertest.txt", ForReading, False)

Do While a.AtEndOfStream <> True

    retstring = a.ReadLine

    ...

Loop

a.Close


Attributes, propriété

Description

Définit ou renvoie les attributs de fichier ou de dossier. Lecture/écriture ou lecture seule, en fonction de l'attribut.

Syntaxe

object.Attributes [= newattributes]

La propriété Attributes comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet File ou Folder.
newattributes	Facultatif. Si elle est fournie, la valeur newattributes est la nouvelle valeur des attributs de l'object spécifié.
Valeurs

L'argument newattributes peut prendre les valeurs suivantes ou toute combinaison logique de ces valeurs :

Constante	Valeur	Description
Normal	0	Fichier normal. Aucun attribut n'est défini.
ReadOnly	1	Fichier en lecture seule. L'attribut est en lecture/écriture.
Hidden	2	Fichier caché. L'attribut est en lecture/écriture.
System	4	Fichier système. L'attribut est en lecture/écriture.
Volume	8	Étiquette de volume de lecteur de disque. L'attribut est en lecture seule.
Directory	16	Dossier ou répertoire. L'attribut est en lecture seule.
Archive	32	Le fichier a été modifié depuis la dernière sauvegarde. L'attribut est en lecture/écriture.
Alias	64	Lien ou raccourci. L'attribut est en lecture seule.
Compressed	128	Fichier compressé. L'attribut est en lecture seule.
Remarques

Le code suivant illustre l'emploi de la propriété Attributes avec un fichier :

Sub EffacerBitArchive(specfichier)

    Dim fs, f, r

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(fs.GetFileName(specfichier))

    If f.attributes and 32 Then

        r = MsgBox("Le bit d'archive est défini, voulez-vous l'effacer ?", vbYesNo, "Définir/Effacer bit d'archive")

        If r = vbYes Then

            f.attributes = f.attributes - 32

            MsgBox "Bit d'archive effacé."

        Else

            MsgBox "Bit d'archive toujours défini."

        End If

    Else

        r = MsgBox("Le bit d'archive n'est pas défini, voulez-vous le définir ?", vbYesNo, "Définir/Effacer bit d'archive")

        If r = vbYes Then

            f.attributes = f.attributes + 32

            MsgBox "Bit d'archive défini."

        Else

            MsgBox "Bit d'archive toujours effacé."

        End If

    End If

End Sub


AvailableSpace, propriété

Description

Renvoie la quantité d'espace libre disponible pour un utilisateur sur le lecteur ou le partage réseau.

Syntaxe

object.AvailableSpace

L'argument object représente toujours un objet Drive.

Remarques

La valeur renvoyée par la propriété AvailableSpace est en général la même que celle renvoyée par la propriété FreeSpace. Ces deux valeurs peuvent présenter des différences dans le cas des systèmes d'ordinateur qui gèrent les quotas.

Le code suivant illustre l'emploi de la propriété AvailableSpace :

Sub IndiqueEspaceDisponible(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Lecteur " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Espace disponible : " & FormatNumber(d.AvailableSpace/1024, 0)

    s = s & " KOctets"

    MsgBox s

End Sub


Column, propriété

Description

Propriété en lecture seule qui renvoie le numéro de colonne de la position de caractère courante dans un fichier TextStream.

Syntaxe

object.Column

L'argument object représente toujours un objet TextStream.

Remarques

Après l'écriture d'un caractère de nouvelle ligne, mais avant l'écriture de tout autre caractère, la propriété Column a la valeur 1.


CompareMode, propriété

Description

Définit et renvoie le mode de comparaison pour comparer les clés de chaîne dans un objet Dictionary.

Syntaxe

object.CompareMode[ = compare]

La propriété CompareMode comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet Dictionary.
compare	Facultatif. Si elle est fournie, la valeur de compare représente le mode de comparaison employé par diverses fonctions telles que StrComp.
Valeurs

L'argument compare peut prendre les valeurs suivantes :

Constante	Valeur	Description
vbUseCompareOption	–1	Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare	0	Effectue une comparaison binaire.
vbTextCompare	1	Effectue une comparaison de texte.
vbDatabaseCompare	2	Microsoft Access seulement. Effectue une comparaison fondée sur les informations de votre base de données.
Remarques

Une erreur se produit si vous tentez de changer le mode de comparaison d'un objet Dictionary.

La propriété CompareMode utilise les mêmes valeurs que l'argument compare de la fonction StrComp. Les valeurs supérieures à 2 peuvent être utilisées pour faire référence à des comparaisons utilisant des ID de paramètres locaux (LCID).


Count, propriété

Description

Renvoie le nombre d'éléments d'une collection ou d'un objet Dictionary. Lecture seule.

Syntaxe

object.Count

L'argument object représente toujours le nom d'un élément de la liste Application.

Remarques

Le code suivant illustre l'emploi de la propriété Count :

Dim a, d, i             'Créer des variables

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"     'Ajouter des clés et des éléments.

d.Add "b", "Belgrade"

d.Add "c", "Le Caire"

a = d.Keys              'Lire les clés

For i = 0 To d.Count -1 'Parcourir le tableau

    Print a(i)          'Imprimer une clé

Next

...


DateCreated, propriété

Description

Renvoie la date et l'heure de création du fichier ou du dossier spécifié. Lecture seule.

Syntaxe

object.DateCreated

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété DateCreated avec un fichier :

Sub ShowFileInfo(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = "Créé le : " & f.DateCreated

    MsgBox s

End Sub


DateLastAccessed, propriété

Description

Renvoie la date et l'heure de dernier accès au fichier ou au dossier spécifié. Lecture seule.

Syntaxe

object.DateLastAccessed

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété DateLastAccessed avec un fichier :

Sub ShowFileAccessInfo(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = UCase(specfichier) & vbCrLf

    s = s & "Créé le : " & f.DateCreated & vbCrLf

    s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf

    s = s & "Dernière modification le : " & f.DateLastModified

    MsgBox s, 0, "Infos d'accès au fichier"

End Sub

Important   Le fonctionnement de cette méthode dépend du système d'exploitation sous-jacent. Les informations de date ne sont pas renvoyées si le système d'exploitation ne le gère pas.


DateLastModified, propriété

Description

Renvoie la date et l'heure de dernière modification du fichier ou du dossier spécifié. Lecture seule.

Syntaxe

object.DateLastModified

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété DateLastModified avec un fichier :

Sub AfficheInfoAccesFichier(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = UCase(specfichier) & vbCrLf

    s = s & "Créé le : " & f.DateCreated & vbCrLf

    s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf

    s = s & "Dernière modification le : " & f.DateLastModified

    MsgBox s, 0, "Infos d'accès au fichier"

End Sub


Drive, propriété

Description

Renvoie la lettre du lecteur sur lequel réside le fichier ou le dossier spécifié.

Syntaxe

object.Drive

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété Drive :

Sub AfficheInfoAccesFichier(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = f.Name & " on Drive " & UCase(f.Drive) & vbCrLf

    s = s & "Créée le : " & f.DateCreated & vbCrLf

    s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf

    s = s & "Dernière modification le : " & f.DateLastModified

    MsgBox s, 0, "Infos d'accès au fichier"

End Sub


DriveLetter, propriété

Description

Renvoie la lettre d'un lecteur local physique ou d'un partage réseau. Lecture seule.

Syntaxe

object.DriveLetter

L'argument object représente toujours un objet Drive.

Remarques

La propriété DriveLetter renvoie une chaîne de longueur nulle ("") si le lecteur spécifié n'est pas associé à une lettre de lecteur comme, par exemple, un partage réseau qui n'est pas mappé sur une lettre de lecteur.

Le code suivant illustre l'emploi de la propriété DriveLetter :

Sub AfficheLettreLecteur(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Lecteur " & d.DriveLetter & ": - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Espace disponible : " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Koctets"

    MsgBox s

End Sub


Drives, propriété

Description

Renvoie une collection constituée de tous les objets Drive disponibles sur la machine locale.

Syntaxe

object.Drives

L'argument object représente toujours un objet FileSystemObject.

Remarques

Les lecteurs de supports amovibles apparaissent dans la collection Drives même lorsqu'ils sont vides.

Vous pouvez parcourir les membres de la collection Drives en utilisant une structure For Each...Next comme illustré dans le code suivant :

Sub AfficheListeLecteur

    Dim fs, d, dc, s, n

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set dc = fs.Drives

    For Each d in dc

        s = s & d.DriveLetter & " - "

        If d.DriveType = 3 Then

            n = d.ShareName

        Else

            n = d.VolumeName

        End If

        s = s & n & vbCrLf

    Next

    MsgBox s

End Sub


DriveType, propriété

Description

Renvoie une valeur indiquant le type d'un lecteur spécifié.

Syntaxe

object.DriveType

L'argument object représente toujours un objet Drive.

Remarques

Le code suivant illustre l'emploi de la propriété DriveType :

Sub AfficheTypeLecteur(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(drvpath)

    Select Case d.DriveType

        Case 0: t = "Inconnu"

        Case 1: t = "Amovible"

        Case 2: t = "Fixe"

        Case 3: t = "Réseau"

        Case 4: t = "CD-ROM"

        Case 5: t = "Disque RAM"

    End Select

    s = "Lecteur " & d.DriveLetter & ": - " & t

    MsgBox s

End Sub


Files, propriété

Description

Renvoie une collection Files constituée de tous les objets File contenus dans le dossier spécifié, y compris les fichiers système ou ceux qui sont cachés.

Syntaxe

object.Files

L'argument object représente toujours un objet Folder.

Remarques

Le code suivant illustre l'emploi de la propriété Files :

Sub AfficheListeFichier(specdossier)

    Dim fs, f, f1, fc, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(specdossier)

    Set fc = f.Files

    For Each f1 in fc

        s = s & f1.name

        s = s &  vbCrLf

    Next

    MsgBox s

End Sub


FileSystem, propriété

Description

Renvoie le type de système de fichiers du lecteur spécifié.

Syntaxe

object.FileSystem

L'argument object représente toujours un objet Drive.

Remarques

Les types de retour disponibles sont FAT, NTFS, and CDFS.

Le code suivant illustre l'emploi de la propriété FileSystem :

Sub AfficheTypeSystemeFichier

    Dim fs,d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive("e:")

    s = d.FileSystem

    MsgBox s

End Sub


FreeSpace, propriété

Description

Renvoie la quantité d'espace disponible pour un utilisateur sur le lecteur ou le partage réseau spécifié. Lecture seule.

Syntaxe

object.FreeSpace

L'argument object représente toujours un objet Drive.

Remarques

La valeur renvoyée par la propriété FreeSpace est en général la même que celle renvoyée par la propriété AvailableSpace. Elles peuvent présenter des différences dans le cas des systèmes d'ordinateur qui gèrent les quotas.

Le code suivant illustre l'emploi de la propriété FreeSpace :

Sub AfficheEspaceDisponible(drvPath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(drvPath))

    s = "Lecteur " & UCase(drvPath) & " - "

    s = s & d.VolumeName  & vbCrLf

    s = s & "Espace disponible: " & FormatNumber(d.FreeSpace/1024, 0)

    s = s & " Koctets"

    MsgBox s

End Sub


IsReady, propriété

Description

Renvoie la valeur True si le lecteur spécifié est prêt, False dans le cas contraire.

Syntaxe

object.IsReady

L'argument object représente toujours un objet Drive.

Remarques

Pour les lecteurs de support amovible et les lecteurs de CD-ROM, IsReady renvoie True uniquement lorsque le support approprié est inséré et prêt pour les accès.

Le code suivant illustre l'emploi de la propriété IsReady :

Sub AfficheInfoLecteur(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(drvpath)

    Select Case d.DriveType

        Case 0: t = "Inconnu"

        Case 1: t = "Amovible"

        Case 2: t = "Fixe"

        Case 3: t = "Réseau"

        Case 4: t = "CD-ROM"

        Case 5: t = "Disque RAM"

    End Select

    s = "Lecteur " & d.DriveLetter & ": - " & t

    If d.IsReady Then

        s = s & vbCrLf & "Lecteur prêt."

    Else

        s = s & vbCrLf & "Lecteur non prêt."

    End If

    MsgBox s

End Sub


IsRootFolder, propriété

Description

Renvoie la valeur True si le dossier spécifié est le dossier racine, False dans le cas contraire.

Syntaxe

object.IsRootFolder

L'argument object représente toujours un objet Folder.

Remarques

Le code suivant illustre l'emploi de la propriété IsRootFolder :

Dim fs

Set fs = CreateObject("Scripting.FileSystemObject")

Sub AfficheProfondeurNiveau(pathspec)

    Dim f, n

    Set f = fs.GetFolder(pathspec)

    If f.IsRootFolder Then

        MsgBox "Le dossier spécifié est le dossier racine."

    Else

        Do Until f.IsRootFolder

            Set f = f.ParentFolder

            n = n + 1

        Loop

        MsgBox "Le dossier spécifié se trouve " & n & " niveaux sous la racine."

    End If

End Sub


Item, propriété

Description

Définit ou renvoie un élément pour un argument key spécifié dans un objet Dictionary. Pour les collections, cette propriété renvoie un item basé sur la key spécifiée. Lecture/écriture.

Syntaxe

object.Item(key) [= newitem]

La propriété Item comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'une collection ou d'un objet Dictionary.
key	Argument key associé à l'élément item lu ou ajouté.
newitem	Facultatif. Utilisé pour l'objet Dictionary uniquement, sans application pour les collections. S'il est fourni, l'élément newitem est la nouvelle valeur associée à l'argument key spécifié.
Remarques

Si l'argument key est introuvable lors de la modification d'un item, une nouvelle key est créée avec le newitem spécifié. Si key est introuvable lors de la tentative de renvoi d'un élément existant, une nouvelle key est créée et l'élément correspondant reste vide.


Key, propriété

Description

Définit un argument key dans un objet Dictionary.

Syntaxe

object.Key(key) = newkey

La propriété Key comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet Dictionary.
key	Valeur de l'argument key modifiée.
newkey	Nouvelle valeur remplaçant la valeur de l'argument key spécifiée.
Remarques

Si l'argument key est introuvable lors de la modification d'une clé, une erreur d'exécution se produit.


Line, propriété

Description

Propriété en lecture seule qui renvoie le numéro de ligne courant dans un fichier TextStream.

Syntaxe

object.Line

L'argument object représente toujours un objet TextStream.

Remarques

A l'ouverture d'un fichier et avant toute écriture, Line a la valeur 1.


Name, propriété

Description

Définit ou renvoie le nom d'un fichier ou d'un dossier spécifié. Lecture/écriture.

Syntaxe

object.Name [= newname]

La propriété Name comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet File ou Folder.
newname	Facultatif. S'il est fourni, l'argument newname est le nouveau nom de l'object spécifié.
Remarques

Le code suivant illustre l'emploi de la propriété Name :

Sub AfficheInfoAccesFichier(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = f.Name & " on Drive " & UCase(f.Drive) & vbCrLf

    s = s & "Créé le : " & f.DateCreated & vbCrLf

    s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf

    s = s & "Dernière modification le : " & f.DateLastModified

    MsgBox s, 0, "Infos d'accès au fichier"

End Sub


ParentFolder, propriété

Description

Renvoie l'objet dossier pour le parent du fichier ou dossier spécifié. Lecture seule.

Syntaxe

object.ParentFolder

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété ParentFolder avec un fichier :

Sub AfficheInfoAccesFichier(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = UCase(f.Name) & " in " & UCase(f.ParentFolder) & vbCrLf

    s = s & "Créé le : " & f.DateCreated & vbCrLf

    s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf

    s = s & "Dernière modification le : " & f.DateLastModified

    MsgBox s, 0, "Infos d'accès au fichier"

End Sub


Path, propriété

Description

Renvoie le chemin d'un fichier, dossier ou lecteur spécifié.

Syntaxe

object.Path

L'argument object représente toujours un objet File, Folder ou Drive.

Remarques

Pour les lettres de lecteur, la racine ne figure pas. Par exemple, le chemin du lecteur C est C:, et non pas C:\.

Le code suivant illustre l'emploi de la propriété Path avec un objet File :

Sub AfficheInfoAccesFichier(specfichier)

    Dim fs, d, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = UCase(f.Path) & vbCrLf

    s = s & "Créé le : " & f.DateCreated & vbCrLf

    s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf

    s = s & "Dernière modification le : " & f.DateLastModified

    MsgBox s, 0, "Infos d'accès au fichier"

End Sub


RootFolder, propriété

Description

Renvoie un objet Folder correspondant au dossier racine d'un lecteur spécifié. Lecture seule.

Syntaxe

object.RootFolder

L'argument object représente toujours un objet Drive.

Remarques

Tous les fichiers et dossiers du lecteur sont accessibles à l'aide de l'objet Folder renvoyé.


SerialNumber, propriété

Description

Renvoie le numéro de série décimal utilisé pour identifier de manière unique un volume de disque.

Syntaxe

object.SerialNumber

L'argument object représente toujours un objet Drive.

Remarques

Vous pouvez utiliser la propriété SerialNumber pour vous assurer que le disque approprié est présent dans un lecteur à support.

Le code suivant illustre l'emploi de la propriété SerialNumber :

Sub AfficheInfoLecteur(drvpath)

    Dim fs, d, s, t

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    Select Case d.DriveType

        Case 0: t = "Inconnu"

        Case 1: t = "Amovible"

        Case 2: t = "Fixe"

        Case 3: t = "Réseau"

        Case 4: t = "CD-ROM"

        Case 5: t = "Disque RAM"

    End Select

    s = "Lecteur " & d.DriveLetter & ": - " & t

    s = s & vbCrLf & "SN: " & d.SerialNumber

    MsgBox s

End Sub


ShareName, propriété

Description

Renvoie le nom du partage réseau pour un lecteur spécifié.

Syntaxe

object.ShareName

L'argument object représente toujours un objet Drive.

Remarques

Si l'argument object ne représente pas un lecteur réseau, la propriété ShareName renvoie une chaîne de longueur nulle ("").

Le code suivant illustre l'emploi de la propriété ShareName :

Sub AfficheInfoLecteur(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "Lecteur " & d.DriveLetter & ": - " & d.ShareName

    MsgBox s

End Sub


ShortName, propriété

Description

Renvoie le nom abrégé utilisé par les programmes qui emploient la convention de dénomination antérieure 8.3.

Syntaxe

object.ShortName

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété ShortName avec un objet File :

Sub AfficheNomCourt(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = "Le nom abrégé de " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "est : " & "" & f.ShortName & ""

    MsgBox s, 0, "Infos de nom abrégé"

End Sub


ShortPath, propriété

Description

Renvoie le chemin abrégé utilisé par les programmes qui emploient la convention de dénomination antérieure 8.3.

Syntaxe

object.ShortPath

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété ShortName avec un objet File :

Sub AfficheCheminCourt(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFile(specfichier)

    s = "Le schéma abrégé de " & "" & UCase(f.Name)

    s = s & "" & vbCrLf

    s = s & "est : " & "" & f.ShortPath & ""

    MsgBox s, 0, "Infos de nom abrégé"

End Sub


Size, propriété

Description

Pour les fichiers, cette propriété renvoie la taille en octets du fichier spécifié. Pour les dossiers, cette propriété renvoie la taille en octets de tous les fichiers et sous-dossiers du dossier.

Syntaxe

object.Size

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété Size avec un objet Folder :

Sub AfficheTailleDossier(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(specfichier)

    s = UCase(f.Name) & " uses " & f.size & " bytes."

    MsgBox s, 0, "Infos de taille du dossier"

End Sub


SubFolders, propriété

Description

Renvoie une collection Folders de tous les dossiers contenus dans le dossier spécifié, y compris ceux qui sont cachés ou système.

Syntaxe

object.SubFolders

L'argument object représente toujours un objet Folder.

Remarques

Le code suivant illustre l'emploi de la propriété SubFolders :

Sub AfficheListeDossier(specdossier)

    Dim fs, f, f1, s, sf

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(specdossier)

    Set sf = f.SubFolders

    For Each f1 in sf

        s = s & f1.name

        s = s &  vbCrLf

    Next

    MsgBox s

End Sub


TotalSize, propriété

Description

Renvoie l'espace total, en octets, d'un lecteur ou d'un partage réseau.

Syntaxe

object.TotalSize

L'argument object représente toujours un objet Drive.

Remarques

Le code suivant illustre l'emploi de la propriété TotalSize :

Sub AfficheEspace(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "Lecteur " & d.DriveLetter & ":"

    s = s & vbCrLf

    s = s & "Taille totale : " & FormatNumber(d.TotalSize/1024, 0) & " Kilo-octets"

    s = s & vbCrLf

    s = s & "Disponible : " & FormatNumber(d.AvailableSpace/1024, 0) & " Kilo-octets"

    MsgBox s

End Sub


Type, propriété

Description

Renvoie des informations sur le type d'un fichier ou dossier. Par exemple, pour les fichiers terminés par .TXT, la propriété renvoie "Document texte".

Syntaxe

object.Type

L'argument object représente toujours un objet File ou Folder.

Remarques

Le code suivant illustre l'emploi de la propriété Type pour renvoyer un type de dossier. Dans cet exemple, essayez de fournir à la procédure le chemin de la Corbeille ou d'un autre dossier unique.

Sub AfficheTailleFichier(specfichier)

    Dim fs, f, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.GetFolder(specfichier)

    s = UCase(f.Name) & " is a " & f.Type

    MsgBox s, 0, "Infos de taille du fichier"

End Sub


VolumeName, propriété

Description

Définit ou renvoie le nom de volume du lecteur spécifié. Lecture/écriture.

Syntaxe

object.VolumeName [= newname]

La propriété VolumeName comprend les éléments suivants :

Élément	Description
object	Correspond toujours au nom d'un objet Drive.
newname	Facultatif. S'il est fourni, l'argument newname est le nouveau nom de l'object spécifié.
Remarques

Le code suivant illustre l'emploi de la propriété VolumeName :

Sub AfficheInfoVolume(drvpath)

    Dim fs, d, s

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))

    s = "Lecteur " & d.DriveLetter & ": - " & d.VolumeName

    MsgBox s

End Sub


Sélection ambigüe

Cette situation se produit lorsque vous n'avez pas sélectionné de mot clé ou que vous avez demandé l'aide sur un composant de l'environnement de développement intégré (IDE). Dans le premier cas, essayez de sélectionner à nouveau un mot clé simple. Dans le second, cliquez sur l'une des rubriques suivantes :

Fenêtre Code ou Module

Fenêtre ou volet Exécution

Fenêtre ou volet Variables locales

Explorateur d'objets

Fenêtre ou volet Espions