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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

ouvrir un repertoire et pouvoir visualiser des photo.jpeg


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut ouvrir un repertoire et pouvoir visualiser des photo.jpeg
    bonjour
    suite à une action via un bouton je voudrais realiser la manip suivante
    ouvrir dans une fenetre (textbox ou autre) avec un controle barre de defilement (je sais pas si cela est le mieux)pour visualiser toutes les photos se trouvant dans un repertoire determiner .
    je precise
    si action sur bouton , j'ai dans le userfor un combobox qui va contenir un N° (ex: 1200) alors on va cherche le repertoire 1200 dans lequel on aura les photos à visionner dans le textbox ou autre .



    merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ai fait ça sous word avec VBA 97, en... Bref, c'est très vieux et assez compliqué...
    Aujourd'hui, je ferais plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
        Application.Dialogs(xlDialogInsertPicture).Show
    End Sub
    Je n'ai pas trouvé comment modifier le répertoire image
    alors je me suis débrouillé
    J'insère une image du répertoire qui m'intéresse, je la supprime et j'ouvre la boîte de dialogue intégrée en mode affichage -> Miniature
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test2()
        ActiveSheet.Pictures.Insert("D:\CLIPART\Cartes\ASIESE.WMF").Select
        Selection.Delete
        Application.Dialogs(xlDialogInsertPicture).Show
    End sub
    Une autre solution me conviendrait aussi (!)

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    ouais pas simple


  4. #4
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    bonjour
    voila un debut de code
    cela donne une idee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    Option Explicit
    Dim choixrepertoire As String
     
     
     
    Private Sub ScrollBar1_Click() 'choix de l'image
     Dim numimage As Integer
    numimage = 1
    'selectionne le chemin le prepertoire en fonction de la valeur du combobox1(ex: 1020)
    'faire test erreur si combobox vide ou repertoire non trouve ou pas d'image dans repertoire
    choixrepertoire = "\" & combobox1.Value & "\picture" & numimage & ".jpg"
    numimage = numimage + 1
     
     
     
     
    'visionnez l"image
      Picture1.Picture = LoadPicture(choixrepertoire)
     
    End Sub


    merci de votre aide

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu veux que je te dise ? Non ? Je te le dis quand même. Tu dois te préparer à une grave désillusion.
    L'exemple que je t'ai donné utilise une boîte de dialogue intégrée mais un clic sur une image l'insère dans le classeur. Et ce n'est sans doute pas ce que tu veux.
    Par contre, tu vas devoir lister les fichiers du répertoire voulu. Pour ça, voici déjà un code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub ListerUnRépertoire()
    Set fs = Application.FileSearch
        With fs
            .LookIn = "D:\Clipart\caricatures\"
            .FileType = msoFileTypeAllFiles
            If .Execute(SortBy:=msoSortByFileName, _
            SortOrder:=msoSortOrderAscending) > 0 Then
                MsgBox "Ce dossier contient " & .FoundFiles.Count & _
                    " fichier(s) répondant aux critères."
                For i = 1 To .FoundFiles.Count
                    If Right(LCase(.FoundFiles(i)), 4) = ".jpg" Then _
                        MsgBox .FoundFiles(i)
                Next i
            Else
                MsgBox "Aucun fichier n'a été trouvé."
            End If
        End With
    End Sub
    Ensuite, tu vas devoir insérer autant de contrôles image que tu voudras en voir apparaître dans ta page (userform)
    Ensuite tu devras gérer l'ouverture de n images, pas une de plus correspondant au nombre de tes contrôles.
    Ensuite, si tu veux un défilement, tu devras simuler le déplacement des images en modifiant la cible pour chaque contrôle image.
    Ensuite tu devras synchroniser ça avec une barre de défilement ou une toupie.
    Ensuite...
    C'est vraiment une usine à gaz pour pas grand chose... quand tout existe
    Si c'était simplement : Une liste d'images dans une listbox et l'affichage d'une image sur clic dans la liste, là c'est simple et réalisable. Tu pourrais même faire un zoom pour afficher l'image en plein écran, l'insérer dans une feuille de calculs... etc.
    Mais faire défiler tes images dans un userform comme dans l'explorateur... en VBA... Dans Excel...
    Bref, bon courage !

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    une solution made in HTML : créer à la volée une page HTML qui présente les photos ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Option Explicit
     
    Function ExploreFicImg2HTML(ByVal path As String, _
                                ByVal filt As String) As String
     
     
    Dim fso As FileSystemObject
    Dim fic As File
    Dim str As String
     
    Set fso = New FileSystemObject
     
    For Each fic In fso.GetFolder(path).Files
        If fic.Name Like filt Then
            str = str & "<br><IMG SRC='" & path & fic.Name & "' width=200></br><div align=center>" & _
                        fic.Name & "</div><br><br>"
        End If
    Next fic
     
    ExploreFicImg2HTML = str
     
    Set fic = Nothing: Set fso = Nothing
    End Function
     
    Sub ExploreIt()
     
    Dim ie As Object
     
    Set ie = CreateObject("InternetExplorer.Application")
    ie.navigate "about:blank"
    ie.addressbar = False
    ie.document.Title = "Exploration du dossier"
    ie.MenuBar = False
    ie.StatusBar = False
    ie.Toolbar = False
    ie.Width = 400
    ie.Height = 300
    ie.Top = 100
    ie.Left = 100
    ie.document.body.innerHTML = ExploreFicImg2HTML("C:\Temp\", "*.jpg")
    ' libre à toi ici de mettre
    '   ie.document.body.innerHTML = ExploreFicImg2HTML(range("A2"), "*.jpg")
    ie.Visible = True
     
    End Sub

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Nécessite de valider la référence "Microsoft Scripting Runtime"
    Merci pour ta solution, Cafeine.
    J'ai un petit problème, les images s'affichent sous forme d'icônes. Comment fait-on pour remédier à ça ?

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    bonjour
    à tous
    merci des infos ouskel'n'or.

    ........
    Si c'était simplement : Une liste d'images dans une listbox et l'affichage d'une image sur clic dans la liste, là c'est simple et réalisable. Tu pourrais même faire un zoom pour afficher l'image en plein écran, l'insérer dans une feuille de calculs... etc.
    .......
    si je comprends tout il a possibilite par un autre moins d'afficher les
    images ????

    je suis preneur

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    En effet, mais tu devrais tester ce que t'a mis Cafeine, si les images daignaient bien s'afficher, ce serait plus court que ce que je t'ai indiqué.
    Déjà, j'ai le nom et une icône pour chaque image
    Doit juste être une question de paramètre d'affichage (?)

    Sinon, pour ce que j'ai indiqué, il te faut
    - un userform
    et dedans
    - une listebox1
    - un contrôle image

    Tu renseignes la listbox avec la procédure que je t'ai mise plus haut en remplaçant
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         Me.listbox1.additem .FoundFiles(i)
    Ensuite, derrière le click de cette liste, tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ListBox1_Click()
    Dim msg As Variant, NomFichier as string, Chemin as string
        On Error Resume Next
        Chemin = "C:\Mes images\
        NomFichier = Chemin & ListBox1
        Me.Image1.Picture = LoadPicture(NomFichier)
        If Err = 481 Then
                'Format Tif par exemple
                MsgBox "Visual Basic ne gère pas le format " & Right(NomFichier, 3) & " en affichage " & Chr(13) & "mais peut l'insérer dans le document Word " & Chr(13) & "Bouton [Insérer l'image]"
            ElseIf Err <> 0 Then
                MsgBox "Erreur " & Error(Err) & " inexpliquable et/ou non encore inventoriée par le concepteur... mais ça viendra... " & Chr(13) & Error(Err) & "  " & Str(Err), 0, "Mystère, mystère..."
        End If
        On Error GoTo 0
    End Sub
    pour le zoom, j'ai fait ça en fixant l'agrandissement.
    J'ai déclaré un boolean en tête de code (public pour l'userform)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub loupe()
        AperçuImage.Width = 600
        AperçuImage.Height = 450
        AperçuImage.Left = 0
        AperçuImage.Top = -14
    End Sub
    procédure que j'appelle depuis l'événement Click de l'image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Image1_Click()
        loup = Not loup
        If not loup Then
                restore
        End If
    End Sub
    Enfin, pour rétablir les dimensions de l'image, un nouveau clic sur l'image lance la procédure "restore"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub restore()
        Me.Image1.Top = 6
        Me.Image1.Width = 402
        Me.Image1.Left = 186
        Me.Image1.Height = 282
    End sub
    Bien sûr, il y a un tas d'autres choses mais je vais tout de même te laisser le plaisir de découvrir comment
    insérer la sélection,
    changer de répertoire et donc
    lister les répertoires
    modifier un fichier dans un logiciel de dessin
    renommer un fichier,
    supprimer un fichier
    insérer tous les fichiers du répertoire dans un doc word,
    etc.

    J'ai fait ça en 1998 et ne m'en sert (plus) jamais.
    Bon courage et amuse-toi bien

  10. #10
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut


    chez moi elles s'affichent normalement mais avec un maximum de 300 pix de largeur ...

    Citation Envoyé par ouskel'n'or Voir le message
    Nécessite de valider la référence "Microsoft Scripting Runtime"
    Merci pour ta solution, Cafeine.
    J'ai un petit problème, les images s'affichent sous forme d'icônes. Comment fait-on pour remédier à ça ?

  11. #11
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    bonsoir
    bon je cloture ce post.
    pour mon progrom ,ce n'est qu'une option lointaine.
    j'enregistre totues ces infos importantes pour la suite
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD18] Ouvrir une fenetre pour sélectionner des photos
    Par phoenix916916 dans le forum WinDev
    Réponses: 8
    Dernier message: 26/03/2015, 11h24
  2. [XL-2003] Excel et ouvrir des photos avec un lien hypertexte
    Par Alain53 dans le forum Excel
    Réponses: 2
    Dernier message: 22/03/2010, 10h10
  3. [importation des photo jpeg a Rave Report]
    Par GHAZEL Taoufik dans le forum Bases de données
    Réponses: 9
    Dernier message: 24/01/2010, 09h42
  4. Click sur un button visualiser des photos
    Par mihaispr dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 20/03/2009, 10h27
  5. Visualisation des mise à jour en réseau
    Par fandor7 dans le forum Paradox
    Réponses: 2
    Dernier message: 06/12/2002, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo