| 
 
 |  |  | auteur : Team Access |  | Ajoutez la référence Windows Script Host Object Model (wshom.ocx) à votre projet.
 
 | 
DimstrCheminRaccourciAsStringDimoWshAsNewWshShellDimoRacAsWshShortcut
strCheminRaccourci=oWsh.SpecialFolders("Desktop")&"\Fichier.lnk"SetoRac=oWsh.CreateShortcut(strCheminRaccourci)WithoRac.TargetPath=Chr(34)&"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE"&Chr(34).Arguments="D:\mabase.mdb /wrkgrp d:\system.mdw".WindowStyle=4.IconLocation="d:\monicone.ico".WorkingDirectory="D:\".SaveEndWithSetoRac=NothingSetoWsh=Nothing
 | 
 |  | lien : Comment déclarer une référence dans MS-Access ? 
 | 
|  |  | auteur : Team Access |  | | Subtesjdn()DimtextemsgAsStringtextemsg="coucou"&"<br>"&"TEST3"DoCmd.SendObject, , acFormatTXT,"toto@aol.com", , ,"titre", textemsg,TrueEndSub
 | 
La balise HTML BR sert à revenir à la ligne. Donc utilisez des balises html et vous ferez ce que bon vous semble :)
 
 | 
|  |  | 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=0mabarre.max=100i=1Whilei<=100mabarre.value=i 
     i=i+1Wend
 | 
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 ? 
 | 
|  |  | 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",100Syscmd acSysCmdUpdateMeter,50Syscmd acSysCmdRemoveMeter
 | 
 |  | lien : Comment utiliser l'objet Microsoft Progress Bar ? 
 | 
|  |  | auteur : Team Access |  | | 
FunctionDeleteObjectExterne()DimacAppAsAccess.ApplicationSetacApp=GetObject("toto.mbd") 
acApp.DoCmd.DeleteObjectacForm,"nom_form"acApp.QuitSetacApp=NothingEndFunction
 | 
 | 
|  |  | 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.
 
 | 
|  |  | auteur : Drosera |  | Utilisez la commande  | 
|  |  | 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 :
 | Setrs=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. 
 | 
|  |  | 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. 
 | 
|  |  | auteur : Romain Puyfoulhoux |  | La fonction ConnexionInternetActive() ci-dessous renvoie Vrai si l'on est connecté à internet. | PrivateDeclareFunctionInternetGetConnectedState Lib"wininet.dll"_
                                                   (ByReflpdwFlagsAsLong, _ByValdwReservedAsLong)AsLongPublicFunctionConnexionInternetActive()AsBoolean
ConnexionInternetActive=InternetGetConnectedState(0&,0&)EndFunction
 | 
 |  | lien : FAQ VB 
 | 
|  |  | 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:
 | 
DimbMasquéasBoolean
bMasqué=Application.GetHiddenAttribute(acQuery,"Ma Requête")
 | 
 | 
|  |  | 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...)
 | 
OptionCompare Database
Type ParamTendance
    PenteAsDouble
    OrdonneeZeroAsDoubleEndTypePublicFunctionCalculTendance(DatDebutAsDate, XAsDouble)AsDoubleDimRstAsNewADODB.RecordsetDimMaRequeteAsStringDimNbDonneeAsIntegerDimDonneeCumul()AsDoubleDimiAsIntegerDimSumXAsDoubleDimSumX2AsDoubleDimSumChiffreAsDoubleDimSumChiffreXAsDoubleDimType_ParamAsParamTendance
MaRequete="SELECT T.DateJour, T.ChiffreDAffaire AS Chiffre"&vbNewLine&_"FROM T_ChiffreDAffaire T"&vbNewLine&_"WHERE T.DateJour>=#"&DatDebut&"#"&vbNewLine&_"ORDER BY T.DateJour;"Rst.OpenMaRequete, CurrentProject.Connection,adOpenStaticNbDonnee=Rst.RecordCountIfNbDonnee=0ThenMsgBox"Pas de données"CalculTendance=0ExitFunctionEndIfRst.CloseReDimDonneeCumul(1ToNbDonnee)
Rst.OpenMaRequete, CurrentProject.Connection,adOpenDynamicRst.MoveFirstFori=1ToNbDonneeIfi=1ThenDonneeCumul(1)=Rst("Chiffre")ElseDonneeCumul(i)=Rst("Chiffre")+DonneeCumul(i-1)EndIfRst.MoveNextNexti
Rst.CloseSumX=0SumX2=0SumChiffre=0SumChiffreX=0Fori=1ToNbDonnee
    SumX=SumX+i
    SumX2=SumX2+i^2SumChiffre=SumChiffre+DonneeCumul(i)
    SumChiffreX=SumChiffreX+DonneeCumul(i)*iNexti
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.OrdonneeZeroEndFunction
 | 
Ensuite voici comment appeler cette fonction :
 | 
PublicSubChiffreTendance18jour()
Debug.PrintCalculTendance(CDate("01/01/2004"),18)EndSub
 | 
 | 
|  |  | 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.
 | 
OptionCompare DatabaseOptionExplicitPublicLibNameAsStringPublicGroupNameAsStringPublicItemNameAsStringPublicItemValueAsLongPropertyGetClassType()AsLocalClassType
    ClassType=LocalClassTypeCEnumValueEndProperty
 | 
	3. Dans un module normal insérer le code suivant :
 | 
OptionCompare DatabaseOptionExplicitDimTLAppAsTLI.TLIApplicationDimTLInfoAsTLI.TypeLibInfoDimColl_TLIAsCollectionPublicEnum MethodType
    MethodConstant=TLI.InvokeKinds.INVOKE_CONSTMethodEvent=TLI.InvokeKinds.INVOKE_EVENTFUNCMethodFunction=TLI.InvokeKinds.INVOKE_FUNCMethodGet=TLI.InvokeKinds.INVOKE_PROPERTYGETMethodLet=TLI.InvokeKinds.INVOKE_PROPERTYPUTMethodSet=TLI.InvokeKinds.INVOKE_PROPERTYPUTREFMethodSub=0MethodAll=MethodConstant+MethodEvent+MethodFunction+MethodGet+MethodLet+MethodSet+MethodSubEndEnumPublicEnum MethodContext
    MethodContextNA=0MethodContextReturns=1MethodContextTakes=2MethodContextBoth=MethodContextReturns+MethodContextTakesEndEnumPublicEnum PropertyType
    PropertyGet=TLI.InvokeKinds.INVOKE_PROPERTYGETPropertyLet=TLI.InvokeKinds.INVOKE_PROPERTYPUTPropertySet=TLI.InvokeKinds.INVOKE_PROPERTYPUTREFPropetyBoth=PropertyGet+PropertyLet+PropertySetEndEnumPublicEnum LocalClassType
    LocalClassTypeCEnumValue=1LocalClassTypeCMethod
    LocalClassTypeCParamEndEnumPublicFunctionGetNameFromEnum(ByValvalAsLong, _ByValstrRefnameAsString, _ByValstrEnumGroupAsString)AsStringDimlngIAsLongDimcollAsCollectionDimEnumVAsCEnumValueSetcoll=EnumValues(strRefname, strEnumGroup)ForlngI=1Tocoll.countSetEnumV=coll(lngI)IfEnumV.ItemValue=valThenGetNameFromEnum=EnumV.ItemNameEndIfNextlngISetcoll=NothingSetEnumV=NothingEndFunctionPublicFunctionListEnum(ByValstrRefnameAsString, _ByValstrEnumGroupAsString)DimlngIAsLongDimcollAsCollectionDimEnumVAsCEnumValueSetcoll=EnumValues(strRefname, strEnumGroup)ForlngI=1Tocoll.countSetEnumV=coll(lngI)
    Debug.PrintEnumV.LibName, EnumV.GroupName, EnumV.ItemName, EnumV.ItemValueNextlngISetcoll=NothingSetEnumV=NothingEndFunctionPrivateFunctionEnumValues(ByValstrRefnameAsString, _ByValstrEnumGroupAsString)AsCollectionDimMemInfoAsTLI.MemberInfoDimTypInfoAsTLI.TypeInfoDimConstInfoAsTLI.ConstantInfoDimcollAsCollectionDimEVIAsCEnumValue
Init strRefnameSetcoll=NewCollectionSetConstInfo=TLInfo.Constants.NamedItem(strEnumGroup)IfNotConstInfoIsNothingThenForEachMemInfoInConstInfo.MembersSetEVI=NewCEnumValueWithEVI.LibName=TLInfo.Name.GroupName=ConstInfo.Name.ItemName=MemInfo.Name.ItemValue=MemInfo.ValueEndWithcoll.AddItem:=EVINextMemInfoEndIfSetEnumValues=collSetcoll=NothingSetEVI=NothingSetConstInfo=NothingSetTypInfo=NothingSetMemInfo=NothingEndFunctionPrivateSubInit(ByValstrRefnameAsString)DimTLAsTLI.TypeLibInfoDimRefAsReferenceIfTLAppIsNothingThenSetTLApp=NewTLI.TLIApplicationEndIfSetTLInfo=TLApp.TypeLibInfoFromFile( _
    Filename:=Application.References(strRefname).FullPath)SetColl_TLI=NewCollectionForEachRefInApplication.ReferencesSetTL=NewTLI.TypeLibInfoSetTL=TLApp.TypeLibInfoFromFile(Filename:=Ref.FullPath)
    Coll_TLI.AddItem:=TL, Key:=TL.NameNextRefSetRef=NothingSetTL=NothingEndSub
 | 
	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.
 
 | 
|  |  | auteur : Demco |  | ShellExecute permet de réaliser cette opération :Collez la procédure suivante dans un module :
 | PrivateDeclareFunctionShellExecute Lib"shell32.dll"Alias"ShellExecuteA"_
    (ByValhwndAsLong,ByVallpOperationAsString,ByVallpFileAsString, _ByVallpParametersAsString,ByVallpDirectoryAsString,ByValnShowCmdAsLong)AsLongPublicSubimprimer_fichier(CheminAsString, le_formAsForm)
 
ShellExecute le_form.hwnd,"print", Chemin,"","",1EndSub
 | 
Vous pouvez alors l'appeller depuis un formulaire de la façon suivant : | Callimprimer_fichier("C:\monFic.pdf", Me)
 | 
On peut également bien sûr se passer de créer une méthode et d'écrire directement la commande d'impression, suivant votre besoin. Ecrivez alors simplement dans un module de formulaire : | ShellExecute Me.hwnd,"print","C:\monImage.jpg","","",1
 | 
Ceci fonctionne pour tout type de document, texte ou image. Il faut cependant que vous ayez une application permettant d'ouvrir le fichier. Car l'API utilise l'application associé dans le panneau de configuration des dossiers de windows.
 Par exemple pour imprimer un document PDF, il faut avoir un logiciel capable de le lire les PDF d'installé sur la machine. ShellExecute en a besoin, même si son appel est transparent pour l'utilisateur.
 
 |  | lien :  Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'exécutable associé ? lien :
  Que faire quand l'API ShellExecute ne fonctionne pas ? 
 | 
 |  |  | auteur : Cafeine |  | | FunctionGiveSep()AsStringGiveSep=Mid(3/2,2,1)EndFunction
 | 
 | 
|  |  | 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
 | DimWshShellSetWshShell=CreateObject("WScript.Shell")DimxmlDocSetxmlDoc=CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.async=FalsexmlDoc.validateOnParse=TrueDimxmlSchemaSetxmlSchema=CreateObject("Msxml2.DOMDocument.6.0")
xmlSchema.async=FalsexmlSchema.validateOnParse=TruexmlSchema.Load"C:\Users\Morgan\Downloads\voiture.xsd"DimxsdCacheSetxsdCache=CreateObject("Msxml2.XMLSchemaCache.6.0")
xsdCache.Add"http://www.w3.org/1999/XMLSchema", xmlSchemaSetxmlDoc.schemas=xsdCache
 
xmlDoc.Load"C:\Users\Morgan\Downloads\voiture.xml"SetmyErr=xmlDoc.parseErrorIf(myErr<>0)ThenMsgBox("Erreur : "&myErr.reason)ElseMsgBox("ok")EndIf
 | 
 |  | lien :  Comment lire un fichier XML ? lien : FAQ VB
 lien :
  Repousser les limites d'Access - récupérer un fil RSS 
 | 
|  |  | 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 :  Exécuter une procédure en appuyant sur les touches F1, F2, etc. 
 | 
 
 
						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. |