OVH Cloud OVH Cloud

code vba

3 réponses
Avatar
Francoise Beltrami
Bonjour

J'ai une application qui g=E8re un inventaire d'objets.=20
Chaque enregistrement affiche une photo propre de l'objet.=20
Les copies des photos sont stock=E9es dans un fichier et=20
seul le nom de la photo est enregistr=E9 dans la table.

Pour aller s=E9lectionner une photo, mon application ouvre=20
une fen=EAtre "parcourir". J'aimerais que cette fen=EAtre=20
propose que des fichiers images et photos (.jpg, .bmp,=20
etc). Pr=E9sentement, le code propose des fichier word,=20
excel... et ca ne me sert a rien. Pourriez vous m'indiquer=20
comment changer le code pour obtenir ce que je demande?

De plus, j'aimerai que d'une fois =E0 l'autre, le dernier=20
r=E9pertoire utilis=E9 pour s=E9lectionner une photo revienne.=20


Merci d'avance=20

Voici le code:



Public Function ChoixDuFichier() As String
ChoixDuFichier =3D OpenFile(CurrentProject.Path,=20
Mono_S=E9lection)
End Function


Public Function OpenFile(R=E9pertoire_initial As String,=20
MultiS=E9lection As Selection) As String
OpenFile =3D ""
strFiltre =3D "Fichiers Word" & Chr$(0) & "*.doc;*txt" &=20
Chr$(0) & _
"Fichiers Access" & Chr$(0) & "*.mdb" & Chr$(0) & _
"Fichiers Excel" & Chr$(0) & "*.xls" & Chr$(0) & _
"Tous les fichiers" & Chr$(0) & "*.*"
With Dialogue
.lStructSize =3D Len(Dialogue)
.lpstrFilter =3D strFiltre
.lpstrFile =3D Space(254) ' ou 4094 pour gros buffer et=20
nombreux fichiers
.nMaxFile =3D 255 ' ou 4095
.lpstrFileTitle =3D Space(254) ' ou 4094
.nMaxFileTitle =3D 255 ' ou 4095
.lpR=E9pertoire_initial =3D R=E9pertoire_initial
.lpstrTitle =3D "Recherche d'un fichier"
If MultiS=E9lection =3D Mono_S=E9lection Then
.Flags =3D 6148
Else
.Flags =3D 6148 Or OFN_FileMustExist Or OFN_EXPLORER Or=20
OFN_AllowMultiSelect
End If
End With

RetVal =3D GetOpenFileName(Dialogue)

If RetVal =3D 0 Then
OpenFile =3D ""
nOpenFile =3D 0
Exit Function
End If
OpenFile =3D Trim(Dialogue.lpstrFile)
OpenFile =3D Left(OpenFile, Len(OpenFile) - 1)
OpenFile =3D Replace(OpenFile, Chr(0), ";")
tOpenFile =3D Split(OpenFile, ";")
If UBound(tOpenFile) =3D 0 Then
nOpenFile =3D 1
Else
nOpenFile =3D UBound(tOpenFile)
End If
End Function

3 réponses

Avatar
www.eztree-msdn.com \(Laurent Jordi\) Enlever le s à infos pour me contacter par mail
Salut,

Si tu utilises un common dialog control tu dois spécifier le filtrer en
passant la chaine "jpg | *.jpg | gif | *.gif" etc...

@+

LJ

www.eztree-msdn.com
www.ezlogic.mc

"Francoise Beltrami" a écrit dans le
message de news:b36a01c43740$d835dde0$
Bonjour

J'ai une application qui gère un inventaire d'objets.
Chaque enregistrement affiche une photo propre de l'objet.
Les copies des photos sont stockées dans un fichier et
seul le nom de la photo est enregistré dans la table.

Pour aller sélectionner une photo, mon application ouvre
une fenêtre "parcourir". J'aimerais que cette fenêtre
propose que des fichiers images et photos (.jpg, .bmp,
etc). Présentement, le code propose des fichier word,
excel... et ca ne me sert a rien. Pourriez vous m'indiquer
comment changer le code pour obtenir ce que je demande?

De plus, j'aimerai que d'une fois à l'autre, le dernier
répertoire utilisé pour sélectionner une photo revienne.


Merci d'avance

Voici le code:



Public Function ChoixDuFichier() As String
ChoixDuFichier = OpenFile(CurrentProject.Path,
Mono_Sélection)
End Function


Public Function OpenFile(Répertoire_initial As String,
MultiSélection As Selection) As String
OpenFile = ""
strFiltre = "Fichiers Word" & Chr$(0) & "*.doc;*txt" &
Chr$(0) & _
"Fichiers Access" & Chr$(0) & "*.mdb" & Chr$(0) & _
"Fichiers Excel" & Chr$(0) & "*.xls" & Chr$(0) & _
"Tous les fichiers" & Chr$(0) & "*.*"
With Dialogue
.lStructSize = Len(Dialogue)
.lpstrFilter = strFiltre
.lpstrFile = Space(254) ' ou 4094 pour gros buffer et
nombreux fichiers
.nMaxFile = 255 ' ou 4095
.lpstrFileTitle = Space(254) ' ou 4094
.nMaxFileTitle = 255 ' ou 4095
.lpRépertoire_initial = Répertoire_initial
.lpstrTitle = "Recherche d'un fichier"
If MultiSélection = Mono_Sélection Then
.Flags = 6148
Else
.Flags = 6148 Or OFN_FileMustExist Or OFN_EXPLORER Or
OFN_AllowMultiSelect
End If
End With

RetVal = GetOpenFileName(Dialogue)

If RetVal = 0 Then
OpenFile = ""
nOpenFile = 0
Exit Function
End If
OpenFile = Trim(Dialogue.lpstrFile)
OpenFile = Left(OpenFile, Len(OpenFile) - 1)
OpenFile = Replace(OpenFile, Chr(0), ";")
tOpenFile = Split(OpenFile, ";")
If UBound(tOpenFile) = 0 Then
nOpenFile = 1
Else
nOpenFile = UBound(tOpenFile)
End If
End Function
Avatar
Merci!

Est ce que je peux faire ca directement dans le code que
j'ai mis dessous? Je n'y connais rien en vba.

-----Message d'origine-----
Salut,

Si tu utilises un common dialog control tu dois spécifier
le filtrer en

passant la chaine "jpg | *.jpg | gif | *.gif" etc...

@+

LJ

www.eztree-msdn.com
www.ezlogic.mc

"Francoise Beltrami"
a écrit dans le

message de news:b36a01c43740$d835dde0$
Bonjour

J'ai une application qui gère un inventaire d'objets.
Chaque enregistrement affiche une photo propre de l'objet.
Les copies des photos sont stockées dans un fichier et
seul le nom de la photo est enregistré dans la table.

Pour aller sélectionner une photo, mon application ouvre
une fenêtre "parcourir". J'aimerais que cette fenêtre
propose que des fichiers images et photos (.jpg, .bmp,
etc). Présentement, le code propose des fichier word,
excel... et ca ne me sert a rien. Pourriez vous m'indiquer
comment changer le code pour obtenir ce que je demande?

De plus, j'aimerai que d'une fois à l'autre, le dernier
répertoire utilisé pour sélectionner une photo revienne.


Merci d'avance

Voici le code:



Public Function ChoixDuFichier() As String
ChoixDuFichier = OpenFile(CurrentProject.Path,
Mono_Sélection)
End Function


Public Function OpenFile(Répertoire_initial As String,
MultiSélection As Selection) As String
OpenFile = ""
strFiltre = "Fichiers Word" & Chr$(0) & "*.doc;*txt" &
Chr$(0) & _
"Fichiers Access" & Chr$(0) & "*.mdb" & Chr$(0) & _
"Fichiers Excel" & Chr$(0) & "*.xls" & Chr$(0) & _
"Tous les fichiers" & Chr$(0) & "*.*"
With Dialogue
..lStructSize = Len(Dialogue)
..lpstrFilter = strFiltre
..lpstrFile = Space(254) ' ou 4094 pour gros buffer et
nombreux fichiers
..nMaxFile = 255 ' ou 4095
..lpstrFileTitle = Space(254) ' ou 4094
..nMaxFileTitle = 255 ' ou 4095
..lpRépertoire_initial = Répertoire_initial
..lpstrTitle = "Recherche d'un fichier"
If MultiSélection = Mono_Sélection Then
..Flags = 6148
Else
..Flags = 6148 Or OFN_FileMustExist Or OFN_EXPLORER Or
OFN_AllowMultiSelect
End If
End With

RetVal = GetOpenFileName(Dialogue)

If RetVal = 0 Then
OpenFile = ""
nOpenFile = 0
Exit Function
End If
OpenFile = Trim(Dialogue.lpstrFile)
OpenFile = Left(OpenFile, Len(OpenFile) - 1)
OpenFile = Replace(OpenFile, Chr(0), ";")
tOpenFile = Split(OpenFile, ";")
If UBound(tOpenFile) = 0 Then
nOpenFile = 1
Else
nOpenFile = UBound(tOpenFile)
End If
End Function


.



Avatar
Raymond [mvp]
Bonjour.

tu peux le faire.
tu remplaces
strFiltre = "Fichiers Word" & Chr$(0) & "*.doc;*txt" &
Chr$(0) & _
"Fichiers Access" & Chr$(0) & "*.mdb" & Chr$(0) & _
"Fichiers Excel" & Chr$(0) & "*.xls" & Chr$(0) & _
"Tous les fichiers" & Chr$(0) & "*.*"
par:

strFiltre = "Fichiers images" & Chr$(0) & "*.jpg;*.bmp;*.tif" & Chr$(0) & _
"Tous les fichiers" & Chr$(0) & "*.*"

en complétant avec les types que tu as besoin.

pour le répertoire, en retour de sélection tu mémorises le chemin et tu
l'indiques la prochaine fois:
ChoixDuFichier = OpenFile(Nz(Monchemin, CurrentProject.Path),
Mono_Sélection)
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de
news:b40401c43744$119619d0$
Merci!

Est ce que je peux faire ca directement dans le code que
j'ai mis dessous? Je n'y connais rien en vba.