Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Sommaire > VBA > Divers
        Comment créer un raccourci ?
        Comment exécuter des commandes Dos ?
        Comment envoyer un mail (courriel) contenant des sauts de ligne ?
        Comment utiliser l'objet Microsoft Progress Bar ?
        Comment avoir un indicateur de progression d'un traitement quelconque ?
        Comment supprimer les Objets d'une base de données Externe
        Composer un numéro de téléphone depuis Access
        Comment simuler la fonction annuler (fleche bleue) de access
        Comment renommer un objet en VBA ?
        [*.MDE] Comment, depuis la base en cours, faire référence à la Base MDE contenant le Code qui s'exécute
        Comment annuler ou redéfinir l'effet d'une touche ou d'une combinaison de touches ?
        Comment savoir si l'on est connecté à internet ?
        Connaitre l'adresse d'une base de donnée
        Comment savoir si un objet est caché
        Comment récupérer l'équation de tendance d'un graphique access ?
        Comment retrouver le nom d'une constante par sa valeur ?
        Comment imprimer un document sans pour autant ouvir l'application associée
        Comment faire disparaitre les 'barres de commandes'
        Comment définir en VBA le texte d'une Info Bulle ?
        Comment connaître le séparateur décimal ?
        Comment récupérer tous les noms des formulaire en VBA
        Comment valider un XML via un XSD en VB avec MSXML et sans .Net sous Windows ?
        Quelles sont les correspondances en VBA des touches ?
        11.13.1. Trucs et Astuces (17)
                Batch qui lance une macro Access
                Détecter si un lecteur / lecteur réseau existe.
                Importer des données de fichiers File Maker FP5 dans ACCESS
                Imprimer un fichier texte
                Peut-on ouvrir des fichiers wav avec Access ?
                Rafraichir la mémoire cache
                Récupérer les paramètres régionaux Windows
                Trouver le Drive d'installation de 'Winnt\system32'
                Trouver un fichier dans un dossier (par exemple un fichier excel)
                Comment jouer un son midi dans mon application ?
                Comment déclencher plusieurs Beep successifs
                Comment fermer la fenêtre VBA en VBA ?
                Comment savoir si mon clavier est en majuscule ou pas?
                Comment Activer/Désactiver le Caps Lock du clavier
                Comment faire qu'une fonction renvoie en tableau en Access 97 ou inférieures ?
                objet OLE insérer un objet par bouton de commande
                Comment afficher le clavier virtuel en VBA ?

precedent    sommaire    suivant   


Comment créer un raccourci ?
auteur : Team Access

Ajoutez la référence Windows Script Host Object Model (wshom.ocx) à votre projet.

Dim strCheminRaccourci As String
Dim oWsh As New WshShell
Dim oRac As WshShortcut
'Récupère le chemin du bureau et le concatène avec le nom du raccourci
strCheminRaccourci = oWsh.SpecialFolders("Desktop") & "\Fichier.lnk"
'Crée un nouveau raccourci
Set oRac = oWsh.CreateShortcut(strCheminRaccourci)

'Paramètre le raccourci
With oRac
    'Cible
    .TargetPath = Chr(34) & "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" & Chr(34)
    'Argument
    .Arguments = "D:\mabase.mdb /wrkgrp d:\system.mdw"
    'Style de fenêtre
    .WindowStyle = 4
    'Chemin vers l'icône
    .IconLocation = "d:\monicone.ico"
    'Dossier de travail
    .WorkingDirectory = "D:\"
    'Enregistre le raccourci
    .Save
End With
'Libère les objets
Set oRac = Nothing
Set oWsh = Nothing
lien : Comment déclarer une référence dans MS-Access ?

Comment envoyer un mail (courriel) contenant des sauts de ligne ?
auteur : Team Access
Sub tesjdn() 
Dim textemsg As String 

textemsg = "coucou" & "<br>" & "TEST3" 
DoCmd.SendObject , , acFormatTXT, "toto@aol.com", , , "titre", textemsg, True 
End Sub

La balise HTML BR sert à revenir à la ligne. Donc utilisez des balises html et vous ferez ce que bon vous semble :)


Comment utiliser l'objet Microsoft Progress Bar ?
auteur : Team Access
Cette objet peut être utilisé par exemple lors de l'exécution d'un long processus, l'utilisateur verra un état d'avancement (progression) et cela le rassurera dans son attente.

mabarre.min = 0 
mabarre.max = 100 
i=1 
While i <= 100 
     mabarre.value = i 
     i=i+1 
Wend 
Ainsi la barre s'incrémente de 1 à chaque passage.

Donc par exemple, si vous importez des données, il est bon de s'informer sur le nombre d'enregistrements à importer. Ainsi, le maximum de la barre sera le nombre total d'enregistrements.
Et à chaque enregistrement importé on incrémente la valeur de la barre. (Astuce de Thogal ;) ).

lien : Comment avoir un indicateur de progression d'un traitement quelconque ?

Comment avoir un indicateur de progression d'un traitement quelconque ?
auteur : Morsi
Il est possible d'utiliser le contrôle MS Progress Bar dans Access.
Sinon la méthode Application.Syscmd permet également d'afficher du texte et/ou une jauge d'avancement dans la barre d'état :

Syscmd acSysCmdInitMeter,"Text à afficher", 100 'Définit le texte à afficher et la valeur maximale de la jauge.
Syscmd acSysCmdUpdateMeter, 50 'Définit le texte à afficher et la valeur actuelle de la jauge.
Syscmd acSysCmdRemoveMeter 'Supprime la jauge d'avancement
lien : Comment utiliser l'objet Microsoft Progress Bar ?

Comment supprimer les Objets d'une base de données Externe
auteur : Team Access

Function DeleteObjectExterne() 
Dim acApp As Access.Application 
Set acApp = GetObject("toto.mbd") 
acApp.DoCmd.DeleteObject acForm, "nom_form" 
acApp.Quit 
Set acApp = Nothing 
End Function

Composer un numéro de téléphone depuis Access
auteur : Papy Turbo
- activez les assistants,
- ajoutez un bouton de commande sur un formulaire,
- choisir Divers -> Numérotation Automatique,
- choisir une image,
- Terminer.

Le bouton et son code _Click() :
- détectent le texte de la zone de texte active,
- appellent le numéro, s'il y en a un valide,
- affiche une boîte de dialogue qui vous dit de décrocher dès que le répondant décroche : vous entendez la ligne dans le haut parleur du PC,
- il est facile d'améliorer et d'adapter ce code à vos besoins...
Ensuite, faut juste avoir un téléphone, sur la même ligne que le modem.


Comment renommer un objet en VBA ?
auteur : Drosera
Utilisez la commande
DoCmd.Rename 

[*.MDE] Comment, depuis la base en cours, faire référence à la Base MDE contenant le Code qui s'exécute
auteur : Maxence HUBICHE
Imaginons une base Access MDA (Microsoft Add-In) dans laquelle on trouve un module VBA et une table. Si dans une procédure du module on souhaite ouvrir un recordset sur la table, il faut remplacer CurrentDB par CodeDB :
Set rs = CodeDB.Openrecordset()
En effet, lorsque la procédure du module de la base MDA sera appelée depuis une base MDB ou MDE classique, Access cherchera la table dans la base de données active (MDB ou MDE) et la procédure échouera puisqu'il fallait chercher dans la base MDA... CurrentDB fait référence à la base de données Active, CodeDB fait référence à la BDD contenant le Code qui s'exécute.


Comment annuler ou redéfinir l'effet d'une touche ou d'une combinaison de touches ?
auteur : FRED.G
Vous pouvez définir et utiliser une macro AUTOKEYS. Celle-ci sera active sur la totalité de votre application.
Si vous souhaitez contrôler par du vba, formulaire par formulaire l'effet de certaines touches, définissez à Oui la propriété KeyPreview (AperçuTouches) des formulaires concernés, puis utilisez l'événement KeyDown (Touche appuyée).
Pour les détails concernant le fonctionnement de ces différentes méthodes, consultez l'aide Access.
Pour un exemple d'utilisation du KeyDown dans un formulaire, référez vous au lien ci-dessous.

lien : Exécuter une procédure en appuyant sur les touches F1, F2, etc.

Comment savoir si l'on est connecté à internet ?
auteur : Romain Puyfoulhoux
La fonction ConnexionInternetActive() ci-dessous renvoie Vrai si l'on est connecté à internet.
Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
                                                   (ByRef lpdwFlags As Long, _
                                                    ByVal dwReserved As Long) As Long

Public Function ConnexionInternetActive() As Boolean

ConnexionInternetActive = InternetGetConnectedState(0&, 0&)

End Function
lien : FAQ VB

Connaitre l'adresse d'une base de donnée
auteur : Team Access
CurrentDb.Name 
ou
Application.CurrentProject.Path 

Comment savoir si un objet est caché
auteur : =JBO=
Depuis Access 2000, l'objet Application offre 2 méthodes:
>> GetHiddenAttribute
>> SetHiddenAttribute.

Elles permettent de consulter ou de modifier l'attribut "masqué" normalement accessible dans la fenêtre des [Propriétés] de n'importe quel objet d'application Access :
Table, Query, Form, Report, Macro, Module...

Exemple pour déterminer si la requête [Ma Requête] est masquée:

Dim bMasqué as Boolean
bMasqué = Application.GetHiddenAttribute(acQuery,"Ma Requête")

Comment récupérer l'équation de tendance d'un graphique access ?
auteur : MasterOfChakhaL
DatDebut sert à donner la borne inférieure pour l'analyse des dates (il n'y a pas de borne supérieure car selon moi ca ne sert à rien de faire des calculs de tendance sur les mois passés Exclamation ).
X est la valeur des abscisses pour laquelle on veut l'extrapolation.

Voici un exemple de code, mais il faut que vous adaptiez la requête pour que ca marche avec vos tables bien sûr.

Veillez également à ce que la référence ADO soit cochée. (fenêtre VBA Outils>Référence Microsoft ADO...)

Option Compare Database

Type ParamTendance
    Pente As Double
    OrdonneeZero As Double
End Type

Public Function CalculTendance(DatDebut As Date, X As Double) As Double


Dim Rst As New ADODB.Recordset
Dim MaRequete As String
Dim NbDonnee As Integer
Dim DonneeCumul() As Double
Dim i As Integer
Dim SumX As Double
Dim SumX2 As Double
Dim SumChiffre As Double
Dim SumChiffreX As Double
Dim Type_Param As ParamTendance

MaRequete = "SELECT T.DateJour, T.ChiffreDAffaire AS Chiffre" & vbNewLine & _
            "FROM T_ChiffreDAffaire T" & vbNewLine & _
            "WHERE T.DateJour>=#" & DatDebut & "#" & vbNewLine & _
            "ORDER BY T.DateJour;"
           
Rst.Open MaRequete, CurrentProject.Connection, adOpenStatic

NbDonnee = Rst.RecordCount

If NbDonnee = 0 Then
    MsgBox "Pas de données"
    CalculTendance = 0
    Exit Function
End If

Rst.Close

ReDim DonneeCumul(1 To NbDonnee)

Rst.Open MaRequete, CurrentProject.Connection, adOpenDynamic
Rst.MoveFirst

'Calcul le cumul du chiffre d'affaire pour chaque jour

For i = 1 To NbDonnee
    If i = 1 Then
        DonneeCumul(1) = Rst("Chiffre")
    Else
        DonneeCumul(i) = Rst("Chiffre") + DonneeCumul(i - 1)
    End If
    Rst.MoveNext
Next i

Rst.Close

SumX = 0
SumX2 = 0
SumChiffre = 0
SumChiffreX = 0


For i = 1 To NbDonnee
    SumX = SumX + i
    SumX2 = SumX2 + i ^ 2
    SumChiffre = SumChiffre + DonneeCumul(i)
    SumChiffreX = SumChiffreX + DonneeCumul(i) * i
Next i

Type_Param.Pente = (NbDonnee * SumChiffreX - SumX * SumChiffre) / (NbDonnee * SumX2 - SumX ^ 2)

Type_Param.OrdonneeZero = (SumX2 * SumChiffre - SumX * SumChiffreX) / (NbDonnee * SumX2 - SumX ^ 2)

CalculTendance = Type_Param.Pente * X + Type_Param.OrdonneeZero

End Function
Ensuite voici comment appeler cette fonction :

Public Sub ChiffreTendance18jour()
'calcul la tendance au 18ème jour
Debug.Print CalculTendance(CDate("01/01/2004"), 18)
End Sub

Comment retrouver le nom d'une constante par sa valeur ?
auteur : Cafeine
Les contantes sont définies dans des énumérations elles mêmes incluses dans une référence.
Par exemple, l'énumération VbMsgBoxResult de la référence VBA propose les constantes VbOK, VbYes, etc.

Si vous avez besoin de retrouver le nom d'une constante en fonction de sa valeur, vous pouvez utiliser la manipulation suivante :

1. Ajouter la référence TypeLib Information (C:\Winnt\system32\tblinf32.dll)

2. Créer un module de classe dont le nom est impérativement : CEnumValue.

Option Compare Database
Option Explicit

Public LibName As String
Public GroupName As String
Public ItemName As String
Public ItemValue As Long

Property Get ClassType() As LocalClassType
    ClassType = LocalClassTypeCEnumValue
End Property
3. Dans un module normal insérer le code suivant :

Option Compare Database
Option Explicit

Dim TLApp As TLI.TLIApplication
Dim TLInfo As TLI.TypeLibInfo
Dim Coll_TLI As Collection

Public Enum MethodType
    MethodConstant = TLI.InvokeKinds.INVOKE_CONST
    MethodEvent = TLI.InvokeKinds.INVOKE_EVENTFUNC
    MethodFunction = TLI.InvokeKinds.INVOKE_FUNC
    MethodGet = TLI.InvokeKinds.INVOKE_PROPERTYGET
    MethodLet = TLI.InvokeKinds.INVOKE_PROPERTYPUT
    MethodSet = TLI.InvokeKinds.INVOKE_PROPERTYPUTREF
    MethodSub = 0
    MethodAll = MethodConstant + MethodEvent + MethodFunction + MethodGet + MethodLet + MethodSet + MethodSub
End Enum

Public Enum MethodContext
    MethodContextNA = 0
    MethodContextReturns = 1
    MethodContextTakes = 2
    MethodContextBoth = MethodContextReturns + MethodContextTakes
End Enum

Public Enum PropertyType
    PropertyGet = TLI.InvokeKinds.INVOKE_PROPERTYGET
    PropertyLet = TLI.InvokeKinds.INVOKE_PROPERTYPUT
    PropertySet = TLI.InvokeKinds.INVOKE_PROPERTYPUTREF
    PropetyBoth = PropertyGet + PropertyLet + PropertySet
End Enum

Public Enum LocalClassType
    LocalClassTypeCEnumValue = 1
    LocalClassTypeCMethod
    LocalClassTypeCParam
End Enum

Public Function GetNameFromEnum(ByVal val As Long, _
                                ByVal strRefname As String, _
                                ByVal strEnumGroup As String) As String
Dim lngI As Long
Dim coll As Collection
Dim EnumV As CEnumValue

Set coll = EnumValues(strRefname, strEnumGroup)

For lngI = 1 To coll.count
    Set EnumV = coll(lngI)
    If EnumV.ItemValue = val Then
        GetNameFromEnum = EnumV.ItemName
    End If
Next lngI

Set coll = Nothing
Set EnumV = Nothing

End Function
                                

Public Function ListEnum(ByVal strRefname As String, _
                         ByVal strEnumGroup As String)

Dim lngI As Long
Dim coll As Collection
Dim EnumV As CEnumValue

Set coll = EnumValues(strRefname, strEnumGroup)

For lngI = 1 To coll.count
    Set EnumV = coll(lngI)
    Debug.Print EnumV.LibName, EnumV.GroupName, EnumV.ItemName, EnumV.ItemValue
Next lngI

Set coll = Nothing
Set EnumV = Nothing

End Function


Private Function EnumValues(ByVal strRefname As String, _
                            ByVal strEnumGroup As String) As Collection
Dim MemInfo As TLI.MemberInfo
Dim TypInfo As TLI.TypeInfo
Dim ConstInfo As TLI.ConstantInfo
Dim coll As Collection
Dim EVI As CEnumValue

Init strRefname
Set coll = New Collection

Set ConstInfo = TLInfo.Constants.NamedItem(strEnumGroup)
If Not ConstInfo Is Nothing Then
    For Each MemInfo In ConstInfo.Members
        Set EVI = New CEnumValue
        With EVI
        .LibName = TLInfo.Name
        .GroupName = ConstInfo.Name
        .ItemName = MemInfo.Name
        .ItemValue = MemInfo.Value
        End With
        coll.Add Item:=EVI
    Next MemInfo
End If
    
Set EnumValues = coll

Set coll = Nothing
Set EVI = Nothing
Set ConstInfo = Nothing
Set TypInfo = Nothing
Set MemInfo = Nothing

End Function

Private Sub Init(ByVal strRefname As String)

Dim TL As TLI.TypeLibInfo
Dim Ref As Reference

If TLApp Is Nothing Then
    Set TLApp = New TLI.TLIApplication
End If

Set TLInfo = TLApp.TypeLibInfoFromFile( _
    Filename:=Application.References(strRefname).FullPath)

Set Coll_TLI = New Collection
For Each Ref In Application.References
    Set TL = New TLI.TypeLibInfo
    Set TL = TLApp.TypeLibInfoFromFile(Filename:=Ref.FullPath)
    Coll_TLI.Add Item:=TL, Key:=TL.Name
Next Ref

Set Ref = Nothing
Set TL = Nothing

End Sub
4. Exemple d'utilisation :

?getnamefromenum (1, "VBA","VbMsgBoxResult")
vbOk
Le premier paramètre correspond à la valeur recherchée, le second à la référence à utiliser et le dernier à l'énumération.



Comment faire disparaitre les "barres de commandes"
auteur : BrunoM45

Ce code permet de tester si la barre est visible, si tel est le cas elle est cachée.
Dim I As Integer
  For I = 1 To Application.CommandBars.Count
    If Application.CommandBars.Item(I).Visible = True Then
      DoCmd.ShowToolbar Application.CommandBars.Item(I).Name, acToolbarNo
    End If
  Next I

Comment définir en VBA le texte d'une Info Bulle ?
auteur : Morgan BILLY
Comment définir par vba le texte d'une Info Bulle d'un contrôle :
  MonControl.ControlTipText = "Texte à mettre"
lien : faq Comment afficher une info bulle pendant le survol d'un controle ?

Comment connaître le séparateur décimal ?
auteur : Cafeine
Function GiveSep() As String
GiveSep = Mid(3 / 2, 2, 1)
End Function

Comment récupérer tous les noms des formulaire en VBA
auteurs : Tofalu, keita, Lou Pitchoun
Voici deux exemples qui permet de lister toutes les Formulaires de base de données :

Méthode 1 :
Créer une requête ayant comme source SQL le code ci-dessous.
SELECT MSysObjects.Name AS ReportName FROM MSysObjects WHERE ((Left([Name],1)<>"~") AND ((MSysObjects.Type)=-32768));
Méthode 2 :
Copier et coller cette fonction dans un module.
Function Test()
    Dim frm As AccessObject
    For Each frm In CurrentProject.AllForms
        MsgBox "Formulaire : " & frm.Name
    Next
End Function
Autre méthode :
Sub FormsName()

    Dim MyDb As DAO.Database
    Dim MyDocument As DAO.Document
   
    Set MyDb = CurrentDb()
   
    With MyDb
        For Each MyDocument In .Containers("Forms").Documents
            Debug.Print "Nom: " & MyDocument.name
        Next
    End With
    
End Sub


Ces deux méthodes fonctionnent sous toutes les versions D'Access

lien : faq Comment récupérer la date et l'heure de la dernière modification d'un Etat et d'un Formulaire

Comment valider un XML via un XSD en VB avec MSXML et sans .Net sous Windows ?
auteurs : ckeromen, Lou Pitchoun
L'aide en ligne accompagnant XML Parser SDK donne des exemples dans plusieurs langages,
ci-dessous un code permettant de valider le XML
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
 
Dim xmlDoc
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.async = False
xmlDoc.validateOnParse = True
 
Dim xmlSchema
Set xmlSchema = CreateObject("Msxml2.DOMDocument.6.0")
xmlSchema.async = False
xmlSchema.validateOnParse = True
xmlSchema.Load "C:\Users\Morgan\Downloads\voiture.xsd"
 
Dim xsdCache
Set xsdCache = CreateObject("Msxml2.XMLSchemaCache.6.0")
xsdCache.Add "http://www.w3.org/1999/XMLSchema", xmlSchema
Set xmlDoc.schemas = xsdCache
 
xmlDoc.Load "C:\Users\Morgan\Downloads\voiture.xml"
 
Set myErr = xmlDoc.parseError
If (myErr <> 0) Then
    MsgBox ("Erreur : " & myErr.reason)
    Else
    MsgBox ("ok")
End If
lien : faq Comment lire un fichier XML ?
lien : FAQ VB
lien : fr Repousser les limites d'Access - récupérer un fil RSS

Quelles sont les correspondances en VBA des touches ?
auteur : Morgan BILLY
Ci-joint vous trouverez la liste de correspondance des touches en VBA :

Constantes Description
vbKey0 Touche 0. Cette constante fonctionne pour les chiffres de 0 à 9, il vous suffit de remplacer le chiffre.
vbKeyA Touche A. Cette constante fonctionne pour les lettres de A à Z, il vous suffit de remplacer la lettre.
vbKeyBack Touche Retour en arrière
vbKeyCapital Touche Vérrouillage majuscule
vbKeyClear Touche Effacer
vbKeyControl Touche Ctrl
vbKeyDelete Touche Suppr
vbKeyDown Touche Flèche vers le bas
vbKeyEnd Touche Fin
vbKeyEscape Touche Echap
vbKeyExecute Touche Exécute
vbKeyHelp Touche Aide
vbKeyHome Touche Home
vbKeyInsert Touche Insert
vbKeyLeft Touche Flèche vers la gauche
vbKeyMenu Touche Menu
vbKeyNumlock Touche Vérrouillage Num
vbKeyPageDown Touche Page Suivante
vbKeyPageUp Touche Page Suivante
vbKeyPause Touche Pause
vbKeyPrint Touche Impression Ecran
vbKeyReturn Touche Entrée
vbKeyRight Touche Flèche vers la droite
vbKeySelect Touche Select
vbKeyShift Touche MAJ
vbKeySnapshot Touche Instantané
vbKeySpace Touche Espace
vbKeyTab Touche Tabulation
vbKeyUp Touche Flèche vers le haut
lien : faq Exécuter une procédure en appuyant sur les touches F1, F2, etc.

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


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

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