FAQ VBA

FAQ VBAConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 133, dernière mise à jour : 15 juin 2021
Sommaire→Excel→Application→Divers- Comment programme-t-on la correction d'orthographe ?
- Peut-on basculer le type de référence par le code ?
- A quoi sert la propriété WorksheetFunction ?
- A quoi correspond la notation [A1] ?
- Quelles différences entre FindFile et GetOpenFilename ?
- Comment gérer les événements de l'application ?
- Peut-on appeler une macro d'un autre classeur ?
- Comment exporter un graphe en un gif ?
- Comment trouver la traduction anglaise d'une fonction de feuille de calcul ?
Cela dépend de ce que l'on veut obtenir. Pour démarrer la correction sur une feuille par exemple il suffit de faire :
Application.CheckSpelling CustomDictionary:="PERSO.DIC", IgnoreUppercase:=False, AlwaysSuggest:=TrueCeci a pour effet d'ouvrir la fenêtre du correcteur. Il est possible de contrôler un seul mot, avec une réponse booléenne.
Private Function MotExiste(ByVal strMot As String) As Boolean
MotExiste = Application.CheckSpelling(strMot, "PERSO.DIC", False)
End FunctionOui. Il faut faire
Application.ReferenceStyle = xlR1C1ou xlA1 dans l'autre sens. Néanmoins, il vaut mieux l'éviter en cours d'exécution. Généralement, Excel convertit correctement ses références. Cependant certains codes attendent un type de référence homogène entre le code et la fonction appelée.
Elle renvoie la collection des fonctions intégrées d'Excel. Ceci est très pratique dans de nombreux cas. Par exemple, dans Excel 97, la fonction VBA Replace n'existe pas. Mais Excel fournit sa fonction de feuille SUBSTITUTE qui est équivalente. On peut l'utiliser par le biais de WorksheetFunction.
Dim MaChaine As String
MaChaine = "où est l'apostrophe"
MaChaine = Application.WorksheetFunction.Substitute(MaChaine, "'", "''")C'est un appel implicite à la méthode Evaluate. Il s'agit en fait d'un interpréteur (le même que celui qui interprète les formules Excel). On peut faire des utilisations très complexes de cette méthode. Par exemple
MaValeur = Application.Evaluate("LOG(A1*3+2)")Cela peut s'écrire aussi
MaValeur = [LOG(A1*3+2)]Notez qu'il n'y a pas de guillements lorsqu'on utilise la notation crochets. L'interprétation des plages, dans notre cas A1, demande que le système de référence soit homogène. Si ma feuille était en référence LC j'obtiendrais une incompatibilité de type.
Principalement FindFile ouvre le fichier alors que GetOpenFilename renvoie le nom du fichier sélectionné. Cependant GetOpenFilename permet d'utiliser un filtrage ce que ne permet pas la méthode FindFile. Par exemple :
NomFichier = Application.GetOpenFilename("Classeurs Excel(*.xls),*.xls, Macros complémentaires (*.xla),*.xla")Il y a une plus grande sécurité à utiliser la méthode GetOpenFilename.
Il y a deux approches différentes dans ce concept. L'objet Application donne la possibilité de créer du code sur des méthodes OnAction. Par exemple
Application.OnKey "^{p}", "Gestion"Déclenche la procédure Gestion sur l'appui des touches CTRL+P Il est aussi possible de faire de l'interruption d'événements sur l'objet Application, mais c'est un peu plus complexe. Dans un module objet (Feuille, classeur, classe), on déclare une variable pour l'application. Dès lors, il est possible de gérer les événements par l'intermédiaire de cette variable.
Dim WithEvents App As Application
Private Sub App_NewWorkbook(ByVal Wb As Excel.Workbook)
End SubIl faut utiliser Run. Cette méthode permet aussi de passer des paramètres. Supposons que mon classeur "calcul.xls" contienne une fonction Log10 telle que :
Public Function Log10(ByVal X As Single) As Single
Log10 = Log(X) / Log(10#)
End FunctionIl est possible de l'utiliser depuis un autre classeur en faisant
Result = Application.Run("calcul.xls!Log10", 1.2)La routine ci-dessous te permettra de sauvegarder le graphe actif
Sub PrintChart()
Dim FName As String, NomGraphe As String
NomGraphe = Right(ActiveChart.Name, Len(ActiveChart.Name) - Len(ActiveSheet.Name) - 1)
With ActiveSheet.ChartObjects(NomGraphe).Chart
FName = Application.GetSaveAsFilename("", "Fichier Gif (*.GIF),*.GIF,Fichier JPEG (*.JPG),*.JPG,Tous fichiers (*.*),*.*")
.Export Filename:=FName, FilterName:=TypeImg, Interactive:=True
End With
End Sub
Dans le répertoire d'installation d'Excel, (généralement C:\Programm Files\Microsoft 0ffice\Officexx\1036 pour une version Office en français), le fichier VBALIST.XLS permet de trouver, entre autres, la traduction des fonctions de feuilles de calcul Excel.
Exemple : pour la fonction EQUIV => MATCH
Ces fonctions peuvent ensuite être utilsées dans le code VBA :
Sub FindFirst()
myVar = Application.WorksheetFunction _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End SubLien : A quoi sert la propriété WorksheetFunction ?
Lien : Pourquoi autant de propriétés "Formula" différentes ?



