Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boite de dialoge msoFileDialogOpen

2 réponses
Avatar
Thierry
Bonjour,

J'utilise le code ci-dessous ( Sub IntegreFIC() et Function FD_Ouvrir() )
soit :
1 - avec ACCESS 2007 sous VISTA
2 - avec ACCESS 2007 sous XP SP2

Dans le 1er cas (sous VISTA), tout fonctionne parfaitement.

Par contre, sous XP, lorsque je sélectionne mon fichier à partir de la
boite de dialogue OUVRIR, cette dernière ne se ferme pas une fois que j'ai
cliqué
sur le bouton "ouvrir". Cela ne se produit pas sous VISTA, la boite se
fermant tout de suite.

La procédure va quand même jusqu'à son terme sans problème, mais la boite de
dialogue
OUVRIR est toujours à l'écran jusqu'à la fin où là elle se ferme.

Quelqu'un aurait-il une explication et une solution pour fermer cette boite
de dialogue ?

Merci d'avance et bonne fin de journée.

__________________________________________________________

Sub IntegreFIC()

Dim cLigne As String, n As Integer, i As Integer
Dim db As Database, rT As Recordset, cF As Variant, aEnTete(31) As Variant

Dim NomFic As String

NomFic = FD_Ouvrir

Set db = CurrentDb
'db.Execute "delete from tbl_synthese"
Set rT = db.OpenRecordset("Tbl_Synthese")
Open NomFic For Input As #1


While Not EOF(1)
Line Input #1, cLigne
For i = 0 To 31 'Lecture de l'entête
n = InStr(cLigne, "|")
cF = Trim(Left(cLigne, n - 1))
If cF = "" Then
cF = Null
ElseIf i = 24 Or i = 27 Then 'champs Total_G1 et Total_G2
cF = Replace(cF, ".", ",") 'remplacement du point par une
virgule
End If
aEnTete(i) = cF
cLigne = Mid(cLigne, n + 1)
Next


n = InStr(cLigne, "|")
While n > 0 'Tant qu'il reste une épreuve
rT.AddNew
For i = 0 To 31 'Ecriture de l'entête
rT.Fields(i).Value = aEnTete(i)
Next
For i = 32 To 46 'Lecture et écriture de l'épreuve
n = InStr(cLigne, "|")
cF = Trim(Left(cLigne, n - 1))
If cF = "" Then
cF = Null
ElseIf i >= 44 Then 'note, coef, points_maxi : on remplace le
point par la virgule
cF = Replace(cF, ".", ",")
End If
rT.Fields(i).Value = cF
cLigne = Mid(cLigne, n + 1)
Next
rT!NomFic = NomFic
rT.Update

n = InStr(cLigne, "|")
Wend
Wend
Close #1
Set rT = Nothing
Set db = Nothing

MsgBox "Terminé"

End Sub

__________________________________________________________
Function FD_Ouvrir()

Dim fd As Office.FileDialog

' Création d'une boite de dialogue Ouvrir
Set fd = Application.FileDialog(msoFileDialogOpen)

With fd
.Title = "Sélectionnez un ou plusieurs fichiers"
.InitialFileName = ""
.AllowMultiSelect = False

' Règlage des filtres ( liste déroulante type de fichiers )
With .Filters
.Clear
.Add "Fichiers texte", "*.txt; *.csv"

End With
.FilterIndex = 1
End With

'Ouvrir la boite de dialogue
If fd.Show = False Then
'l'action a été annulée
Set fd = Nothing
Exit Function
End If


'Afficher le nom des fichiers sélectionnés
Dim varFichier As Variant

For Each varFichier In fd.SelectedItems
FD_Ouvrir = varFichier
Next

'Libération des variables
Set fd = Nothing
End Function
__________________________________________________________

2 réponses

Avatar
3stone
Salut,

Un DoEvents ? voir dans le texte...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



"Thierry"
| J'utilise le code ci-dessous ( Sub IntegreFIC() et Function FD_Ouvrir() )
| soit :
| 1 - avec ACCESS 2007 sous VISTA
| 2 - avec ACCESS 2007 sous XP SP2
|
| Dans le 1er cas (sous VISTA), tout fonctionne parfaitement.
|
| Par contre, sous XP, lorsque je sélectionne mon fichier à partir de la
| boite de dialogue OUVRIR, cette dernière ne se ferme pas une fois que j'ai
| cliqué
| sur le bouton "ouvrir". Cela ne se produit pas sous VISTA, la boite se
| fermant tout de suite.
|
| La procédure va quand même jusqu'à son terme sans problème, mais la boite de
| dialogue
| OUVRIR est toujours à l'écran jusqu'à la fin où là elle se ferme.
|
| Quelqu'un aurait-il une explication et une solution pour fermer cette boite
| de dialogue ?
|
| Merci d'avance et bonne fin de journée.
|
| __________________________________________________________
|
| Sub IntegreFIC()
|
| Dim cLigne As String, n As Integer, i As Integer
| Dim db As Database, rT As Recordset, cF As Variant, aEnTete(31) As Variant
|
| Dim NomFic As String
|
| NomFic = FD_Ouvrir



DoEvents



| Set db = CurrentDb
| 'db.Execute "delete from tbl_synthese"
| Set rT = db.OpenRecordset("Tbl_Synthese")
| Open NomFic For Input As #1
|
|
| While Not EOF(1)
| Line Input #1, cLigne
| For i = 0 To 31 'Lecture de l'entête
| n = InStr(cLigne, "|")
| cF = Trim(Left(cLigne, n - 1))
| If cF = "" Then
| cF = Null
| ElseIf i = 24 Or i = 27 Then 'champs Total_G1 et Total_G2
| cF = Replace(cF, ".", ",") 'remplacement du point par une
| virgule
| End If
| aEnTete(i) = cF
| cLigne = Mid(cLigne, n + 1)
| Next
|
|
| n = InStr(cLigne, "|")
| While n > 0 'Tant qu'il reste une épreuve
| rT.AddNew
| For i = 0 To 31 'Ecriture de l'entête
| rT.Fields(i).Value = aEnTete(i)
| Next
| For i = 32 To 46 'Lecture et écriture de l'épreuve
| n = InStr(cLigne, "|")
| cF = Trim(Left(cLigne, n - 1))
| If cF = "" Then
| cF = Null
| ElseIf i >= 44 Then 'note, coef, points_maxi : on remplace le
| point par la virgule
| cF = Replace(cF, ".", ",")
| End If
| rT.Fields(i).Value = cF
| cLigne = Mid(cLigne, n + 1)
| Next
| rT!NomFic = NomFic
| rT.Update
|
| n = InStr(cLigne, "|")
| Wend
| Wend
| Close #1
| Set rT = Nothing
| Set db = Nothing
|
| MsgBox "Terminé"
|
| End Sub
|
| __________________________________________________________
| Function FD_Ouvrir()
|
| Dim fd As Office.FileDialog
|
| ' Création d'une boite de dialogue Ouvrir
| Set fd = Application.FileDialog(msoFileDialogOpen)
|
| With fd
| .Title = "Sélectionnez un ou plusieurs fichiers"
| .InitialFileName = ""
| .AllowMultiSelect = False
|
| ' Règlage des filtres ( liste déroulante type de fichiers )
| With .Filters
| .Clear
| .Add "Fichiers texte", "*.txt; *.csv"
|
| End With
| .FilterIndex = 1
| End With
|
| 'Ouvrir la boite de dialogue
| If fd.Show = False Then
| 'l'action a été annulée
| Set fd = Nothing
| Exit Function
| End If
|
|
| 'Afficher le nom des fichiers sélectionnés
| Dim varFichier As Variant
|
| For Each varFichier In fd.SelectedItems
| FD_Ouvrir = varFichier
| Next
|
| 'Libération des variables
| Set fd = Nothing
| End Function
| __________________________________________________________
|
|
Avatar
Thierry
Bonjour,
OK ça fonctionne parfaitement sous XP.
Merci et bonne fin de journée.
Thierry

"3stone" a écrit dans le message de groupe de
discussion :
Salut,

Un DoEvents ? voir dans le texte...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



"Thierry"
| J'utilise le code ci-dessous ( Sub IntegreFIC() et Function
FD_Ouvrir() )
| soit :
| 1 - avec ACCESS 2007 sous VISTA
| 2 - avec ACCESS 2007 sous XP SP2
|
| Dans le 1er cas (sous VISTA), tout fonctionne parfaitement.
|
| Par contre, sous XP, lorsque je sélectionne mon fichier à partir de la
| boite de dialogue OUVRIR, cette dernière ne se ferme pas une fois que
j'ai
| cliqué
| sur le bouton "ouvrir". Cela ne se produit pas sous VISTA, la boite se
| fermant tout de suite.
|
| La procédure va quand même jusqu'à son terme sans problème, mais la
boite de
| dialogue
| OUVRIR est toujours à l'écran jusqu'à la fin où là elle se ferme.
|
| Quelqu'un aurait-il une explication et une solution pour fermer cette
boite
| de dialogue ?
|
| Merci d'avance et bonne fin de journée.
|
| __________________________________________________________
|
| Sub IntegreFIC()
|
| Dim cLigne As String, n As Integer, i As Integer
| Dim db As Database, rT As Recordset, cF As Variant, aEnTete(31) As
Variant
|
| Dim NomFic As String
|
| NomFic = FD_Ouvrir



DoEvents



| Set db = CurrentDb
| 'db.Execute "delete from tbl_synthese"
| Set rT = db.OpenRecordset("Tbl_Synthese")
| Open NomFic For Input As #1
|
|
| While Not EOF(1)
| Line Input #1, cLigne
| For i = 0 To 31 'Lecture de l'entête
| n = InStr(cLigne, "|")
| cF = Trim(Left(cLigne, n - 1))
| If cF = "" Then
| cF = Null
| ElseIf i = 24 Or i = 27 Then 'champs Total_G1 et Total_G2
| cF = Replace(cF, ".", ",") 'remplacement du point par une
| virgule
| End If
| aEnTete(i) = cF
| cLigne = Mid(cLigne, n + 1)
| Next
|
|
| n = InStr(cLigne, "|")
| While n > 0 'Tant qu'il reste une épreuve
| rT.AddNew
| For i = 0 To 31 'Ecriture de l'entête
| rT.Fields(i).Value = aEnTete(i)
| Next
| For i = 32 To 46 'Lecture et écriture de l'épreuve
| n = InStr(cLigne, "|")
| cF = Trim(Left(cLigne, n - 1))
| If cF = "" Then
| cF = Null
| ElseIf i >= 44 Then 'note, coef, points_maxi : on remplace
le
| point par la virgule
| cF = Replace(cF, ".", ",")
| End If
| rT.Fields(i).Value = cF
| cLigne = Mid(cLigne, n + 1)
| Next
| rT!NomFic = NomFic
| rT.Update
|
| n = InStr(cLigne, "|")
| Wend
| Wend
| Close #1
| Set rT = Nothing
| Set db = Nothing
|
| MsgBox "Terminé"
|
| End Sub
|
| __________________________________________________________
| Function FD_Ouvrir()
|
| Dim fd As Office.FileDialog
|
| ' Création d'une boite de dialogue Ouvrir
| Set fd = Application.FileDialog(msoFileDialogOpen)
|
| With fd
| .Title = "Sélectionnez un ou plusieurs fichiers"
| .InitialFileName = ""
| .AllowMultiSelect = False
|
| ' Règlage des filtres ( liste déroulante type de fichiers )
| With .Filters
| .Clear
| .Add "Fichiers texte", "*.txt; *.csv"
|
| End With
| .FilterIndex = 1
| End With
|
| 'Ouvrir la boite de dialogue
| If fd.Show = False Then
| 'l'action a été annulée
| Set fd = Nothing
| Exit Function
| End If
|
|
| 'Afficher le nom des fichiers sélectionnés
| Dim varFichier As Variant
|
| For Each varFichier In fd.SelectedItems
| FD_Ouvrir = varFichier
| Next
|
| 'Libération des variables
| Set fd = Nothing
| End Function
| __________________________________________________________
|
|