APPLICATIONS   Access

INFORMATIQUE

Exemples divers 01

Accueil site > Accueil applications informatique > Accueil Access
Accueil Exemples divers page l 01 l 02 l

N'hésitez pas à m'écrire pour compléter ou modifier ou me dire bonjour...

  1. Focus
  2. Convertir DoCmd.DoMenuItem en  RunCommand
  3. Écrire automatiquement l'adresse mail SNCF.
  4. Extraire une chaîne de caractères
  5. Ouvrir une liste déroulante automatiquement
  6. Ouvrir en grand Access
  7. Dupliquer un enregistrement
  8. Gérer les n° d'erreurs Microsoft
  9. Retour à la ligne de la deuxième phrase dans une boîte de dialogue.
  10. Null / Vide
  11. N° de semaines
  12. Mettre des tirets pour séparer plusieurs champs concaténés.
  13. Boîtes de dialogue.
  14. Créer un raccourci de son application à partir de l'application elle-même.
  15. Classer par ordre croissant dans une requête UNION
  16. Récupération de valeurs dans un contrôle avec séparateur défini.
  17. Récupération de valeurs dans un contrôle avec séparateur(s) non défini(s).

 

Exemples divers
Focus Focus dans le même formulaire

MonContrôle.SetFocus

Focus vers un contrôle de sous formulaire

Dans un formulaire j'ai une zone de liste et un sous formulaire avec un contrôle possédant la valeur 0 par défaut.
Je souhaiterais sur clic dans ma zone de liste que le focus aille directement se positionner sur le contrôle de mon sous-formulaire en sélectionnant le 0 afin que la saisie clavier d'une nouvelle valeur se fasse directement (en remplacement du 0 ou d'une valeur saisie précédemment...).
SetFocus ne fonctionne pas ou je le paramètre mal...

Sur l'évènement Click ou AfterUpdate de ta liste déroulante (plutot !)

Me.NomDeTonSousFormulaire.SetFocus
DoCmd.GotoControl "
NomDeTonControle"

Celui-ci verra son contenu sélectionné.

Automatiser l'envoi du FOCUS puis de la touche ENTER sur un contrôle.

Mettre ce code sur un évènement :
MonContrôle.SetFocus
SendKeys "{ENTER}"

Convertir DoCmd.DoMenuItem en  RunCommand (Access 7 Menu System)

Trouvé sur le site de Terry Wickenden

DoCmd.DoMenuItem RunCommand
acFormBar, acEditMenu, 2 acCmdCopy
acFormBar, acEditMenu, 5 acCmdPasteAppend
acFormBar, acEditMenu, 6 acCmdDeleteRecord
acFormBar, acEditMenu, 8 acCmdSelectRecord
acFormBar, acEditMenu, 10 acCmdFind
acFormBar, acEditMenu, 12, 4 acCmdRecordsGoToNew
acFormBar, acEditMenu, acCopy acCmdCopy
acFormBar, acEditMenu, acPaste acCmdPaste
acFormBar, acEditMenu, acUndo acCmdUndo
acFormBar, acFile, acSaveForm acCmdSave
acFormBar, acRecordsMenu, 0, 2 acCmdAdvancedFilterSort
acFormBar, acRecordsMenu, 2 acCmdApplyFilterSort
acFormBar, acRecordsMenu, 5 acCmdRefresh
acFormBar, acRecordsMenu, acSaveRecord acCmdSaveRecord
acFormBar, 7, 6 acCmdSizeToFit
1, 3, 3 acCmdNewObjectReport
3, acEditMenu, acPaste acCmdPaste
 

Exemple du bouton supprimer généré  automatiquement :

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

devient :

RunCommand acCmdSelectRecord
RunCommand acCmdDeleteRecord

Un évènement sur un sous-formulaire à partir du formulaire principal

Il faut d'abord placer le focus sur le contrôle sous-formulaire et ensuite se déplacer sur le premier enregistrement du sous-formulaire et ensuite se déplacer éventuellement vers un contrôle.

Forms!Formulaireprincipal!sous_formulaire.SetFocus
DoCmd.GoToRecord , , acFirst
DoCmd.GoToControl "madate
"
Écrire automatiquement l'adresse mail SNCF.
(Le lien hypertexte n'existe pas)
AdresseEMail = LCase((Prenom) & "." & LCase(LeNom) & "@pn.sncf.fr")

Dans un module :
Function NewEmail(LeNom As String, Prenom As String) As String
NewEmail = LCase(Prenom) & "." & LCase(LeNom) & "@sncf.fr"
End Function
Déclaration :
AdresseEMail = NewEmail(Me!LeNom, Me!Prenom)

patrice.morel@pn.sncf.fr
Extraire une chaîne de caractères
Voir d'autres fonctions sur le site à Raymond
= Mid([TonChamp]; 3; 4)

ou dans vba
Mid([
Ton Champ à transformer], 3, 4)

3 c'est le caractère de départ pour l'extraction de chaîne
4 c'est la longueur à extraire

15468927 devient 4689
Communistes
devient mmun
= Gauche([Ton Champ à transformer]; 3)

ou dans vba
[
Ton Champ résultat] = Left([Ton Champ à transformer], 3)

3 c'est la longueur à extraire

15468927 devient 154
Communistes
devient
Com
= Droite([Ton Champ à transformer]; 3)

ou dans vba
[
Ton Champ résultat] = Right([Ton Champ à transformer], 3)

3 c'est la longueur à extraire

15468927 devient 927
Communistes
devient tes

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.

=InStr(start ;string1;string2; compare)

Start : Correspond au nbre de signe à partir on fait la recherche (Numérique)
String1 : est le nom du champ dans laquelle la recherche est faite
String2 : est l’occurrence recherchée (dans l’exemple : " - ")
Compare  : facultatif. Indique le type de comparaison de chaînes. L'argument compare peut être omis ou prendre la valeur 0, 1 ou 2. Indiquez la valeur 0 (valeur par défaut) pour effectuer une comparaison binaire. Indiquez la valeur 1 pour effectuer une comparaison de texte, sans différenciation des majuscules et des minuscules. Dans Microsoft Access, indiquez la valeur 2 pour effectuer une comparaison basée sur les informations contenues dans votre base de données. 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.

Val3: ExtracChaîne([NomMorceau];DansChaîne(DansChaîne([NomMorceau];" - ")+3;[NomMorceau];" - ")+3)

Start : Nbre de signes avant le 1er séparateur (" - ") + 3 qui est le nbre de signes du séparateur pour pouvoir dépasser le premier séparateur

String1 : Nombre de signe jusqu’à la première occurrence (" - ") + 3 qui est le nbre de signes du séparateur

Voir aussi dans l'aide Access :
=InStrB(
start ;string1;string2; compare)

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.

Voir exemple détaillé
Ouvrir une liste déroulante automatiquement
Remarque : La liste doit être active
Private Sub Maliste_GotFocus()
    Me.Maliste.Dropdown

End Sub
Ouvrir en grand Access Créer un module :
Public Function OuvreEnGrand() As Boolean

DoCmd.RunCommand acCmdAppMaximize
End Function

Déclarer dans la macro autoexec
Exécuter code :
OuvreEnGrand()

Dupliquer un enregistrement Mettre ce code sur un évènement :
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdPasteAppend
Gérer les n° d'erreurs Microsoft
(Ex : Erreur n° 70)
Private Sub BoutonApercuEtat____BoutonAperçuEtat_Click()

'Gestion du message d'erreur n°70 de Microsoft si excel est ouvert (Voir en bas de la procédure)
On Error GoTo Err_BoutonApercuEtat_Click

'-------------------------------------
'Ta procédure
'-------------------------------------

'Gestion du message d'erreur n°70 de Microsoft si excel est ouvert :

Exit_BoutonApercuEtat_Click:
Exit Sub

Err_BoutonApercuEtat_Click:
Select Case Err
Case 70: Beep: MsgBox "Excel est ouvert." & vbCrLf & "Il faut le refermer (J'insiste !)", 48, "Erreur Excel"
Case Else: MsgBox Error$ & " " & Err
End Select
Resume Exit_BoutonApercuEtat_Click

End Sub
Null / Vide If IsNull (monchamp) Then
    monchamp = "ABC"
End If
' teste si le champ est null

If monchamp  = "" Then
    monchamp = "ABC"
End If
' teste si le champ contient une chaîne vide

If Nz (monchamp, "") = "" Then
    monchamp = "ABC"
End If
' teste si le champ est null ou s'il contient une chaîne vide
N° de semaine
Dans access, les semaines vont du dimanche au samedi, mais il est possible de les formater du lundi au samedi comme sur notre calendrier.
en vba :
format(#12/31/2005#,"ww",vbMonday, vbFirstFourDays)

en sql on met la valeur des constantes vba :
format(#12/31/2005#;"ee";2;2)

"ww" en vba et "ee" en sql

vbMonday veut dire : premier jour de la semaine le lundi

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

vbFirstFourDays veut dire que la première semaine de l'année est celle qui comporte 4 jours.

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.

La combinaison de ces deux paramètres forme la norme iso 8601 (de mémoire) et on obtient

Semaine 1 de l'année sera celle qui comporte les 4 jours suivants :

L M M J
M M J V
M J V S
J V S D
Point commun :  la semaine 1 sera celle qui contient le jeudi .

Donc un premier janvier le mercredi, les lundi 30 et mardi 31 décembre de l'année précédente appartiendront à la semaine 1 de l'année suivante.

Astuce : Il arrive que les semaines ne correspondent pas d'une année sur l'autre (décalage). Créer un contrôle supplémentaire qui permettra d'indiquer -1, 0 ou +1 par rapport aux décalage souhaité sur les semaines de l'année précédente. Ainsi l'on pourra comparer la semaine 10 de l'année A avec la semaine 9 de l'année A-1 (faire attention pour les semaines extrêmes de l'année...)

Mettre des tirets (au bon endroit...) pour séparer plusieurs champs concaténés.

Évitez par exemple :
- Durée - - Image 2/5

Exemple (Copier le dans Word pour mieux comprendre) :
=VraiFaux(EstNull([Restriction]);"";[Restriction])
& VraiFaux(EstNull([Duree]);""; VraiFaux(EstNull([Restriction]) ; "" ; " – ") & "Durée : " & [Duree])
& VraiFaux([EtoileSon]=0;""; VraiFaux(EstNull([Duree]);""; " - ") & "Son : " & [EtoileSon] & "/5")
& VraiFaux([EtoileImage]=0;""; VraiFaux([EtoileSon]=0;""; " – ") & "Image : " & [EtoileImage] & "/5")
Boites de dialogue Avec choix Oui ou Non

Dim Msg, Style, Titre, Reponse, MyString

Msg = "Souhaitez-vous continuer?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Titre = "Saisie"
' Définit le titre.

Reponse = MsgBox(Msg, Style, Titre)

If Reponse = vbYes Then ' L’utilisateur a choisit Oui.
  MyString = "Yes" ' Effectue une action.
Else ' L’utilisateur a choisi Non.
  MyString = "No" ' Effectue une action.
End If

Simple : 1 bouton Ok

MsgBox "Message", vbInformation, "Titre de la boîte"

Retour à la ligne de la deuxième phrase.
(
& vbCrLf &)
Ex :
MsgBox "Excel est ouvert." & vbCrLf & "Il faut le refermer (J'insiste !)", 48, "Erreur Excel"

Pour un saut de ligne répéter 2 fois (& vbCrLf &)
Ex :
MsgBox "Excel est ouvert." & vbCrLf & vbCrLf & "Il faut le refermer (J'insiste !)", 48, "Erreur Excel"

Pour mettre en gras une ligne mettre l'arobase (@) en début et fin de ligne ligne qui ne doit pas être en gras (jusqu'à Access <2000)
Ex :
MsgBox "Excel est ouvert." & vbCrLf & vbCrLf & "@Il faut le refermer (J'insiste !)@", 48, "Erreur Excel"

A partir de Access 2000, MsgBox ne peut pas afficher en gras mais il faut passer
par Eval:
Eval "MsgBox ("" Bonjour monsieur @ et bonnes fêtes @"")"
Bonjour monsieur sera en caractères gras, et bonnes fêtes sera en caractères normaux.
 

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.

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.