IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)



Auteur : Fred.G
Version : 27/08/2004
Définir la propriété "texte de barre d'état" pour chaque contrôle des formulaires d'une application.
Versions : 2000 et supérieures

Parfois certaines propriétés comme le texte de barre d'état sont fastidieuses à mettre à jour. Cette procédure permet de passer en revue tous les formulaires d'une application afin de mettre à jour la propriété StatusBarText des contrôles concernés. La valeur proposée par défaut correspond au nom du contrôle.

Pour utiliser cette procédure, copiez la dans un module. Puis, toujours dans VBE, affichez la fenêtre execution (ctrl+G).
Dans cette fenêtre, tapez :

sStatusBarText
Code à placer dans le module :

Sub sStatusBarText() Dim obj As AccessObject Dim frm As Form Dim ctl As Control Dim prp As Property For Each obj In Application.CurrentProject.AllForms 'Demande confirmation pour le formulaire en question Select Case MsgBox(Formulaire : " & obj.Name, vbQuestion + vbYesNoCancel) 'si OUI Case vbYes 'Ouvre le formulaire en mode création DoCmd.OpenForm obj.Name, acDesign Set frm = Forms(obj.Name) 'Applique le propriété à chaque controle For Each ctl In frm.Controls For Each prp In ctl.Properties If prp.Name = "StatusBarText" Then prp = InputBox(ctl.Name & " :", frm.Name & " - StatusBarText", _ IIf(prp = "", ctl.Name, prp)) Exit For End If Next prp Next ctl 'Enregistre et ferme le formulaire DoCmd.Close acForm, obj.Name, acSaveYes 'Si annuler alors, quitter le traitement Case vbCancel Exit Sub End Select Next obj set variable = nothing End Sub

Auteur : Maxence Hubiche
Auteur : Fred.G
Auteur : Tofalu
Version : 08/02/2005
Téléchargez le zip
Lister les tables et les champs d'une base de données
Versions : 2000 et supérieures

Ce code permet de lister l'ensemble des tables et des champs d'une base de données. Le résultat est envoyé dans un treeview ce qui permet d'avoir une vue globale des propriétés de l'ensemble des champs de la base de données.

Private Sub Commande1_Click() 'Gestion d'erreur On Error Resume Next 'Declaration des variables Dim Pere As String Dim T As DAO.TableDef Dim F As DAO.Field Dim P As DAO.Property Dim DB As DAO.Database 'Vide le treeview TreeView0.Nodes.Clear 'Liste les tables For Each T In DB.TableDefs 'Verifie si c'est une table système If T.Attributes = 0 Or (T.Attributes <> 0 And Me.chk_systeme) Then TreeView0.Nodes.Add , , T.Name, T.Name 'Liste les champs For Each F In T.Fields Pere = T.Name TreeView0.Nodes.Add Pere, tvwChild, Pere & "#" & _ F.Name, F.Name Pere = Pere & "#" & F.Name 'Liste les propriétés For Each P In F.Properties TreeView0.Nodes.Add Pere, tvwChild, Pere & F.Name & _ "#" & P.Name, P.Name & " : " & LireProperty(F, P.Name) Next P Next F End If Next T End Sub 'Cette fonction renvoit le type d'un champ en français 'en fonction de son type en numérique Private Function Renvoi_Type(ByVal n As Integer) As String Dim s As String Select Case n Case dbBoolean s = "Oui/Non" Case dbByte s = "Octet" Case dbInteger s = "Entier" Case dbLong s = "Entier long" Case dbCurrency s = "Monétaire" Case dbSingle s = "Réel S" Case dbDouble s = "Réel D" Case dbDate s = "Date" Case dbBinary s = "Binaire" Case dbText, dbChar s = "Texte" Case dbLongBinary, dbVarBinary s = "Binaire 2" Case dbMemo s = "Mémo" Case dbGUID s = "GUID" Case dbBigInt s = "Numérique HP" Case dbNumeric s = "Numérique" Case dbDecimal s = "Décimal" Case dbFloat s = "Flottant" Case dbTime, dbTimeStamp s = "Heure" End Select Renvoi_Type = s End Function 'Cette fonction permet de lire une propriété 'Et de gerer les erreurs de lecture. Private Function LireProperty(Objet As Object, _ Propriete As String) As String 'Gere les erreurs On Error GoTo err 'Si l'objet est un champ et que la propriété est type 'alors convertit la valeur en français If TypeOf Objet Is DAO.Field And Propriete = "Type" Then LireProperty = Renvoi_Type(Objet.Properties(Propriete)) Else LireProperty = Objet.Properties(Propriete) End If err: End Function Private Sub Commande12_Click() DoCmd.Close End Sub Private Sub Form_Load() Me.chk_systeme = True End Sub
Le processus est en fait trés simple. Il s'agit de lire chaque table puis pour chaque table, accéder à chacun des champs et enfin, pour chaque champ, lire une à une les propriétés. La fonction renvoi_type permet d'afficher une valeur explicite du type du champ et non un numérique. Quant à la fonction lirePropriete, elle permet d'accéder à la valeur d'une propriété et ne pas faire boguer le programme principal si la propriété est inaccessible.

N'hésitez surtout pas à télécharger la base de données exemple en fichier Zip. Elle vous permet, en plus, de sélectionner une autre base de données que celle en cours d'utilisation.


Auteur : mathieuT
Version : 05/03/2005
Tester la performance des PC
Versions : 97 et supérieures

Dans un réseau d'entreprise, il est utile de pouvoir rapatrier des infos sur les postes connectés (mémoire, résolution d'écran, OS, ...), mais il est délicat d'obtenir la vitesse du processeur. Pour pallier à ce manque, voici une fonction qui retourne une valeur indiquant la vitesse brute de la machine (durée d'une boucle for/next). Le résultat est donné en log base 2 pour atténuer les écarts de résultats. Avec cette méthode, un point supplémentaire indique une machine deux fois plus rapide. L'avantage de cette fonction c'est qu'elle permet de se faire tout de suite une idée de l'age de la machine.

Option Compare Database Option Explicit Private Declare Function GetTickCount Lib _ "kernel32" () As Long Function PerformancePcTeste() As Currency Const curExposant As Currency = 2 Const lngDuréeMinima As Currency = 100 Dim intPuissance As Integer Dim lngTopTemp As Long Dim lngTopDébut As Long Dim lngTopFin As Long Dim lngDurée As Long Dim curNombre As Currency Dim curForIndex As Currency Dim curNombreParSeconde As Currency Dim curPuissance As Currency Do intPuissance = intPuissance + 1 curNombre = curExposant ^ intPuissance lngTopTemp = GetTickCount Do lngTopDébut = GetTickCount Loop Until lngTopDébut > lngTopTemp lngTopDébut = GetTickCount For curForIndex = 1 To curNombre Next lngTopFin = GetTickCount lngDurée = lngTopFin - lngTopDébut Loop Until lngDurée > lngDuréeMinima curNombreParSeconde = curNombre / _ lngDurée * 1000 curPuissance = Log(curNombreParSeconde) / _ Log(curExposant) curPuissance = Int(curPuissance * 100) / 100 PerformancePcTeste = curPuissance End Function
Les plus lents PC que j'aie vu sur un réseau donnaient un résultat de 21-22 (P2) ce qui est aujourdhui un veau. Mon PC, un Athlon 1400 (=1800) donne 25,5. Je n'ai pas encore vu de note supérieure ou égale à 27.

Je joins cette fonction qui permet de comparer son PC avec une note de référence :

Function PerformancePcCompare _ (PuissanceRéférence As Currency) As String Dim curPuissance As Currency curPuissance = PerformancePcTeste() PerformancePcCompare = "La vitesse de ce PC est de " _ & Int(2 ^ (curPuissance - PuissanceRéférence) * 100) / 100 _ & " fois la vitesse du PC de référence" End Function
- Je précise tout de même que pour obtenir une note fiable, il ne faut pas qu'un autre programme gourmand tourne en tâche de fond.
- La note de performance évolue très légèrement en fonction de la version du Basic - optimisations du compilateur ?



Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004-2005 Maxence Hubiche Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.