Dim Frm As AccessObject
For Each Frm In CurrentProject.AllForms
If Frm.IsLoaded Then
If Frm.Name <> "Menu General" Then
DoCmd.Close acForm, Frm.Name
End If
End If
Next Frm
Forms![MENU GENERAL].SetFocus
End Function
--
Marie-Claire
Je vois que quelque chose d’imprévu s’est passé lorsque j’ai envoyé mon
précédent message et j’en suis désolée.
Je vous demande de l’aide car voilà mon problème :
J’ai une base créée sur Access 2003 qui fonctionne très bien depuis des
années, configuration plusieurs frontales et 4 bases de tables dans un disque
dur externe, le tout lié.
Mais voila , on me demande de refaire la même chose sur du Visual.
J’ai migré les tables dans une base SQL, pas de problèmes.
J’ai installé Visual Basic 2008 Express et j’aimerais savoir s’il existe
une liste des correspondances entre VBA Access et Vb, savoir s’il faut
travailler avec des Macros, des Modules comme dans Access, si l’on peu créer
des états pour les impressions.
Je suis coincée pour des choses aussi simples que voici :
DoCmd.OpenForm "FormX"
DoCmd.Close acForm, "MonForm"
NOM.SetFocus
Me.Refresh
DoCmd.Close acForm, "MonForm"
----------------------------------------------
DoCmd.ShowAllRecords
Private Sub Bouton84_Click()
On Error GoTo finerrfnul:
If IsNull(NOM) Then
msgbox "LE NOM NE PEUT ETRE VIDE!CORRIGEZ OU DETRUISEZ CETTE FICHE"
Exit Sub
End If
DoCmd.OpenForm "FormX"
finerrfnul:
DoCmd.ShowAllRecords
errfnul:
msgbox "Erreur de manipulation"
Resume finerrfnul
End Sub
DoCmd.OpenReport "MonEtat", acViewPreview
DoCmd.OpenReport "MonEtat1", acNormal, ,
"[nom]=[forms]![IMPRESSIONS]![Texte1] or
[Prenom]=[forms]![IMPRESSIONS]![Texte1] and
[TexteB]=[Formulaires]![Forml].[utilisateur]"
Dim X As Integer
X = msgbox("Voulez-vous aussi imprimer l’Etat suivant", vbYesNo + vbQuestion)
If X = vbNo Then Exit Sub
Si l’on peut utiliser de commandes avec des modules comme par exemple
---------------------------------------
Private Sub Cmd_mail_Click()
fIsOutlookRunning
Dim X
X = fHandleFile("mailto:" & Me![E-MAIL], WIN_NORMAL)
End Sub
-------------------------
------------------------------
Private Sub Lien_Click()
getdir = SelectFolder("Sélection classique d'un dossier", WithNetworkFolders)
If Len(getdir) = 0 Then Exit Sub 'user selected cancel
Lien_dossier1 = getdir
End Sub
Private Sub Ouvrir_lien_Click()
DoCmd.SetWarnings False
On Error GoTo ERR_Ouvrir_lien
' getdir = BrowseForFolder(Me, "Select A Directory", Lien_dossier1)
' If Len(getdir) = 0 Then Exit Sub 'user selected cancel
' Lien_dossier1 = getdir
'Variable_string = OpenFile([Lien_dossier1] [1,] [, <Type de fenêtre>] [,
<Type de fichier>] [, <KbBufferLength>] [, <WithPath>)
'Me.Lien_dossier1 = OpenFile(CurrentProject.path, Multi_Sélection, True,
MSOffice, 12, False)
'msgbox "il y a " & nOpenFile & " fichiers sélectionnés"
Dim Réponse As Variant
Dim Variable_string As String
Variable_string = OpenFile(Lien_dossier1, Multi_Sélection, True, MSOffice,
12, True)
Réponse = OpenFileExtend(Variable_string, , OpExecute)
Exit_Ouvrir_lien:
Exit Sub
ERR_Ouvrir_lien:
msgbox "Il n'existe aucun lien@Veuillez en créer un@"
Resume Exit_Ouvrir_lien
DoCmd.SetWarnings True
End Sub
Avec modules :
-------------------------------------------------
Option Compare Database
Option Explicit
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Public Enum Network
WithNetworkFolders = 0
WithoutNetworkFolders = 2
End Enum
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias
"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Const BIF_RETURNONLYFSDIRS = &H1
Const BIF_USENEWUI = &H40
------------------------------------------
Public Function SelectFolder(Optional Folder As String = "", Optional
NetworkFolders As Network = WithNetworkFolders) As String
Dim X As Long, bi As BROWSEINFO, dwIList As Long
Dim szPath As String, wPos As Integer
If Folder = "" Then Folder = CurrentProject.path
With bi
.hOwner = hWndAccessApp
.lpszTitle = "Sélectionnez votre dossier et cliquez sur OK" & vbCrLf
& Folder
.ulFlags = BIF_RETURNONLYFSDIRS Or BIF_USENEWUI Or NetworkFolders
End With
dwIList = SHBrowseForFolder(bi)
szPath = Folder & Space$(512 - Len(Folder))
X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
If X Then
wPos = InStr(szPath, Chr(0))
SelectFolder = Left$(szPath, wPos - 1)
Else
SelectFolder = ""
End If
End Function
Private Sub fermer_Click()
FormsClose
End Sub
Module :
End Function
S’il faut déclarer des références.
Je vous remercie infiniment pour votre précieuse aide.
--
Marie-Claire
Je te sens parti pour une ascension de l'Himalaya par la fasse la plus
ardue...
Je m'explique : Pour faire simple, Vb est un langage qui est utilisés
dans de nombreux monde mais avec de nombreuses variantes. Donc l'idée
d'une "Correspondance" peut sembler logique mais ça n'existe pas
vraiment et bien souvent cela se traduit par reprendre les défauts d'une
vieille version pour trouver exactement la même chose dans une nouvelle
version qui a justement cherché à se séparer de ses erreurs de jeunesse.
Dans ton cas tu passes d'un projet Accès à une base SQL pour les
données, et de VBA à Vb .net donc regardes peut être dans un premier
temps à maitriser l'accès aux données via Vb .net et le code qui correspond.
Je voudrais bien pouvoir t'aider mais en lisant ton code j'ai constaté
qu'en grande parti il s'agissait de code de VbA qui ne pourrait même pas
être traduit en Vb6 donc le passer directement en Vb.net je pense qu'il
te faut passer par des paliers.
Donc, aujourd'hui arrives tu as accéder à tes données via Vb.net
(lecture de tes tables, insertions, supprosion, mise à jour)?
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
J'ai un peu le même problème: je dois migrer une appli VBA en VB.NET (sans
maitriser les deux langages!), et je recherche des correspondances simples,
par exemple: que devient le currentproject VBA en VB, etc...
Je suis bien d'accord avec ton avis, c'est pas la meilleure chose à faire,
mais si c'est imposé, et qu'on a aucun pouvoir pour influencer ça, on est
bien obligé de se lancer la dedans...
Merci de ton aide!
Bonjour,
Je me demande si je vais la resservir pendant un entretien d'embauche,
celle-là. Maîtriser un produit ? Pfff ... Complètement inutile !
:)
...et encore on n'as pas la suite de l'histoire!
Il y a deux jour une personne m'a contacter pour demander un coup de
main sur une histoire similaire (VbA -> Vb.net) et c'est à s'écarquiller
les yeux pendant des heures tellement les fait que l'on m'a présentés
sont farfelus.
Volontairement je ne sitarai pas a personne ni le cadre, mais sachez
qu'il y a des employeurs (ou supérieurs hiératiques) qui croient
maitrisé le développement et qui amalgament tout :
Vb = VbA for Acces = Vb.net + SQL...
Je dis no comment, car derrière ils ont leur logique car oui C# est
équivalant à Vb.net, mais ce n'est pas pour autant qu'on traduira du VbA
dédié à Acces en C# sans changer la philosophie du code (POO propre
oblige)...
et un code VbA qui a 6 ou 10 ans doit il être converti brutalement en
ométant les évolutions du framework .net depuis ces dernière années?
Rien que pour migrer de .net 1 à 2 il faut une certaine expérience!
.....
A méditer pour ceux qui manquent d'arguments sur le sujet!
.....
J'en profite aussi pour passer un petit coucou aux petits malins que
l'on peut lire un peu partout sur le net (des grand experts donc) et qui
disent qu'il faut désinstaller .net 3.5 car .net 1.1 marchait mieux et
qu'il faut désinstaller le 2.0 avant d'installer 3.0... et que pour
faire marcher une application .net il ne faut pas installer le
Framework, juste copier quelque dll de celui-ci...
Non mais sérieusement! Revenez sur Terre (enfin le mon de réel si possible)!
C'est dans ces moments là que je me dis aux jeunes qui découvrent :
"Welcome" dans le mode de programmation dite "ALARACHE"!...
plus tard vous en rirez