Insérer des photos rapidement

momobha Messages postés 20 Statut Membre -  
momobha Messages postés 20 Statut Membre -
Bonjour
Nouvelle arrivée j ai certaines idées pr me faciliter mon travail mais impossible de les mettre en place car le monde des VBA et macro est inconnu pr moi. Les tuto ne m aide pas vraiment.
Je travaille sur Excel 2016 et je voudrais insérer une dizaine de photos dans des cellules rapidement. Ces photos se trouvent dans un sous dossier dossier.
Arborescence:
Dossier nom prénom
> dossier admi > bilan (Excel)
> dossier photos> bilan (jpeg)
Y a t il la possibilité de faire un lien rapide entre mon bilan Excel et les photos en jpeg

Je sais pas si je suis bien claire...
Merci d avance

Comment pourrais je me former rapidement à cela pour réaliser des tâches quotidiennes?

Merciii

14 réponses

Résumé de la discussion

Le sujet porte sur Excel 2016 et la gestion de l'insertion rapide de photos depuis un sous-dossier, en explorant comment établir un lien entre le classeur et des images JPEG via VBA et macros. Plusieurs réponses proposent des exemples de macros et des indications pour modifier le chemin d'accès, activer les macros, et utiliser des événements comme Worksheet_BeforeDoubleClick pour insérer des images. D'autres échanges abordent l'intégration dans un document modèle partagé, la gestion des tailles d'image et le fait que supprimer des photos sources peut impacter le classeur sans mise à jour automatique. Une nuance utile évoquée est la nécessité d'harmoniser les chemins d'accès et d'envisager l'usage d'un modèle réutilisable sur plusieurs feuilles pour éviter la duplication des scripts.

Bobot (l'IA à votre service)
    1. momobha Messages postés 20 Statut Membre
       
      bonjour
      Alors j'ai ouvert le doc
      Le principe est la. Merci
      Que dois je faire maintenant? copier la macro dans mon doc de base excel pour l'avoir à chaque fois que je l'utilise?
      Est ce possible de choisir les photos et les emplacements précis ?
      Merci par avance!
      0
  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voici un autre exemple à adapter:

    http://www.cjoint.com/c/GAbiOGQ0JkQ
    0
    1. momobha Messages postés 20 Statut Membre
       
      Bonjour
      Merci encore, celle la correspond mieux car je peux choisir mes photos.
      J'ai vu comment changer le chemin pour accéder à mon dossier photos source.

      Mais maintenant, comment faire pour que cette macro soit dans mon doc excel perso de base, (qui est un modèle que j'utilise avec chaque nouveau patient lors de mon évaluation), et que je puisse utiliser sur plusieurs feuilles et dans les cellules spécifiques...
      Sachant que j'ai déjà une macro qu'on m'avait faite à "l’intérieur" pour une autre manip...

      Je sais pas si je suis bien claire, je ne m'y connais pas vraiment.
      Je ne sais pas quels éléments supplémentaire te fournir.

      Merci bcp pr ton aide
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Tu mets ce code dans toutes les feuilles concernées en les sélectionnant quand tu es dans l’Éditeur en haut à gauche :

    Option Explicit
    Dim chemin, Var As Variant
    Dim position, largeur, hauteur, ratio, Ligne, Colonne
    Dim img As Object
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("A1:Z2000")) Is Nothing Then 'a adapter
    position = Target.Address
    Ligne = Target.Row
    Colonne = Target.Column
    position = Replace(position, "$", "")
    ImportImages
    End If
    End Sub
    Sub ImportImages()
       Dim oPict As New stdole.StdPicture
        ChDir "C:\Users\Le Pïvert\Pictures" 'adapter chemin dossier à ouvrir
      chemin = Application.GetOpenFilename
      If chemin = False Then Exit Sub 'annulation
      hauteur = 100 'a adapter la hauteur de l'image
     Set oPict = stdole.LoadPicture(chemin)
     ratio = oPict.Width / oPict.Height
    If oPict.Height < oPict.Width Then 'mode paysage
    largeur = hauteur * ratio
    Else
    largeur = hauteur * ratio
    End If
         Columns(Colonne).ColumnWidth = largeur / 5.5
         Rows(Ligne & ":" & Ligne).RowHeight = hauteur
      ActiveSheet.Pictures.Insert(chemin).Select
      Var = Selection.Name
      Selection.ShapeRange.LockAspectRatio = msoFalse
      With ActiveSheet.Shapes(Var)
        .Top = Range(position).Top
        .Left = Range(position).Left
        .Height = hauteur
        .Width = largeur
         End With
         End Sub


    Je n'ai pas mis le code de suppression par clic droit, a toi de voir?
    @+ Le Pivert
    0
    1. momobha Messages postés 20 Statut Membre
       
      Merciii encooore
      J ai changé le chemin, et il faudra que je le mette à jour à chaque fois dc, mais Ca m'écourte un peu la manip.
      Merci bcp
      Après essai, voila ou se trouve mon nouveau questionnement, ca s'arrete à cette ligne...
      A cause de ma cellule peut etre?

      Dim oPict As New stdole.StdPicture
      ChDir "C:\Users\Myriam BEN HADJ ALI\Pictures\Camera Roll" 'adapter chemin dossier à ouvrir
      chemin = Application.GetOpenFilename
      If chemin = False Then Exit Sub 'annulation
      hauteur = 100 'a adapter la hauteur de l'image
      Set oPict = stdole.LoadPicture(chemin)
      ratio = oPict.Width / oPict.Height
      If oPict.Height < oPict.Width Then 'mode paysage
      largeur = hauteur * ratio
      Else
      largeur = hauteur * ratio
      End If
      Columns(Colonne).ColumnWidth = largeur / 5.5
      Rows(Ligne & ":" & Ligne).RowHeight = hauteur
      ActiveSheet.Pictures.Insert(chemin).Select
      Var = Selection.Name
      Selection.ShapeRange.LockAspectRatio = msoFalse
      With ActiveSheet.Shapes(Var)
      .Top = Range(position).Top
      .Left = Range(position).Left
      .Height = hauteur
      .Width = largeur
      End With
      End Sub
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Tu n'as pas besoin de changer de chemin, ce chemin t'ouvre une boite de dialogue qui te permet de choisir justement le chemin de ton fichier!

    Pour le bug essaie cela:

    Option Explicit
    Dim chemin, Var As Variant
    Dim position, largeur, hauteur, ratio, Ligne, Colonne
    Dim img As Object
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("A1:Z2000")) Is Nothing Then 'a adapter
    position = Target.Address
    Ligne = Target.Row
    Colonne = Target.Column
    position = Replace(position, "$", "")
    ImportImages
    End If
    End Sub
    Sub ImportImages()
       Dim oPict As New stdole.StdPicture
        ChDir "C:\Users\Le Pivert\Pictures" 'adapter chemin dossier à ouvrir
      chemin = Application.GetOpenFilename
      If chemin = False Then Exit Sub 'annulation
      hauteur = 100 'a adapter la hauteur de l'image
     Set oPict = stdole.LoadPicture(chemin)
     ratio = oPict.Width / oPict.Height
    largeur = hauteur * ratio
    ActiveSheet.Pictures.Insert(chemin).Select
      Var = Selection.Name
      Selection.ShapeRange.LockAspectRatio = msoFalse
      With ActiveSheet.Shapes(Var)
        .Top = Range(position).Top
        .Left = Range(position).Left
        .Height = hauteur
        .Width = largeur
         End With
         End Sub

    0
    1. momobha Messages postés 20 Statut Membre
       
      Bonjour et merci encore

      Voila ou ca bloque.
      Excuse moi d'insister, mais je suis obligée de mettre un chemin car il me dit que le chemin ne correspond pas, mais une fois que je mets un chemin spécifique, ben je tombe sur le beug ci dessous mais ca télécharge quand meme la photo, par contre elle est super grande, comment avais tu fais pour que la taille soit de 3 cm... taille normale pour ma cellule... comme tu faisais dans le deuxieme doc que tu m'avais envoyé.

      Merci encore de ton aide et du temps que tu me donnes.

      Sub ImportImages()
      Dim oPict As New stdole.StdPicture
      ChDir "C:\Users\Myriam BEN HADJ ALI\Pictures\Camera Roll" 'adapter chemin dossier à ouvrir
      chemin = Application.GetOpenFilename
      If chemin = False Then Exit Sub 'annulation
      hauteur = 100 'a adapter la hauteur de l'image
      Set oPict = stdole.LoadPicture(chemin)
      ratio = oPict.Width / oPict.Height
      largeur = hauteur * ratio
      ActiveSheet.Pictures.Insert(chemin).Select
      Var = Selection.Name
      Selection.ShapeRange.LockAspectRatio = msoFalse
      With ActiveSheet.Shapes(Var)
      .Top = Range(position).Top
      .Left = Range(position).Left
      .Height = hauteur
      .Width = largeur
      End With
      End Sub
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Les 2 classeurs que j'ai mis fonctionnent très bien!
    C'est au niveau de ton classeur qu'il y a un problème. Sans le voir, je ne peux pas faire grand chose.
    Fais un essai sur un classeur vierge!
    0
    1. momobha Messages postés 20 Statut Membre
       
      ah ok...
      Bon ben merci bcp, c'est cool de m'avoir aidé... je te le montrerai bien mais... je sais pas comment lol
      Je vais voir...
      0
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    En mettant ton classeur sur ce site, sans données confidentielles. Pour que je vois si la macro dont tu parles est la cause du bug:

    https://www.cjoint.com/
    0
    1. momobha Messages postés 20 Statut Membre
       
      Merci...
      http://www.cjoint.com/c/GAirts5JT1Q

      C est mon bilan complet
      Je mets des photos dans les feuilles 5 à 10 (gestuel jusqu'a ecriture)

      Merci par avance!!!
      0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voilà le classeur

    Pour changer le chemin aller dans le Module3.

    Voir les codes des feuilles 5 à 10

    Double clic pour ouvrir une image

    http://www.cjoint.com/c/GAirOvzSVcQ
    @+ Le Pivert
    0
    1. momobha Messages postés 20 Statut Membre
       
      oh purée! ca fonctionne !!
      Bon je t avoue que ca me change un peu ma mise en forme du tableau mais je vais m en arranger.
      Merci encore.
      Une dernière question, les codes des feuilles 5 à 10, c'est a dire? je les trouve ou, j'en fais quoi?
      Merci merci
      et merci
      0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Si cela change ta mise en forme du tableau, tu peux jouer là dessus, tu diminues ou t'augmentes la hauteur

    hauteur = 100 'a adapter la hauteur de l'image 


    Pour le code des feuilles, quand tu es dans l’Éditeur, tu vois tes Modules au dessus il y a toutes les feuilles, il suffit de cliquer dessus pour voir le code!

    PS je peux supprimer le classeur sur Ci-joint si tu veux, maintenant que cela fonctionne, tu me dis?
    0
  9. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Si tu veux mettre la taille de ton image en fonction de la hauteur de ta cellule, il faut remplacer dans le module3 cette ligne:

    hauteur = 100 'a adapter la hauteur de l'image 


    par cette ligne;

     hauteur = ActiveCell.Height


    Voilà
    0
    1. momobha Messages postés 20 Statut Membre
       
      j'essaye!! Merci!!!
      0
      1. momobha Messages postés 20 Statut Membre > momobha Messages postés 20 Statut Membre
         
        J'ai donc essayé, alors parfois ca marche niquel, et d autre ca diminue de moitié ma colonne complète.
        J'ai essayé dans l'onglet gestuel
        Je me permets de te remettre le doc, voir si ca te fait cela aussi...

        Merci bcp

        http://www.cjoint.com/c/GAjlYpXexfQ
        0
  10. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voilà le nouveau classeur. Les colonnes ne s'ajustent plus, elles restent fixes aux dimensions d'origine.

    http://www.cjoint.com/c/GAjmXqBPflQ

    Le classeur que tu as posté était enregistré en xlsx, ne prenant pas en charge les macros. Il faut enregistrer ton classeur en xlsm prenant en charge les macros!
    @+ Le Pivert
    0
    1. momobha Messages postés 20 Statut Membre
       
      Merci bcp
      thank u so much

      Bon je crois que c'est bon alors!!
      0
    2. momobha Messages postés 20 Statut Membre
       
      J'ai une autre question ...
      Est ce que c'est possible de faire autrement qu'un double clic pour afficher la fenêtre des photos? genre un raccourci ?
      Je m'explique, du coup, quand je fais un double clic ailleurs, pour compléter mes commentaires, ben ça affiche aussi la fenêtre...
      0
  11. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Tu as 2 solutions:

    1ère délimiter à une colonne ou plusieurs colonnes, l'ouverture de la macro comme ceci dans le code des feuilles:

    Option Explicit
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then 'a adapter
    position = Target.Address
    Ligne = Target.Row
    Colonne = Target.Column
    position = Replace(position, "$", "")
    ImportImages
    End If
    End Sub
    


    la macro ne se déclenchera que dans la colonne E

    2ème un raccourci clavier que tu devras faire toi même en suivant les instructions de ce site:

    http://www.info-3000.com/vbvba/raccourciclavier.php

    Ensuite il faudra changer le code des feuilles et enlever

    ImportImages
    de la macro

    0
    1. momobha Messages postés 20 Statut Membre
       
      D'accord...d'accord...
      bon je vais tester le raccourcit, cela m'est plus accessible alors...
      une fois le raccourcit fait, est ce que je dois enlever qqc de la macro pour que le double clic ne serve plus à aller chercher les photos?

      et merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
      0
  12. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    J'ai fait le raccourci par code i comme image

    Aller dans le module3 pour changer le chemin des images et la lettre du raccourci si nécessaire.

    http://www.cjoint.com/c/GAkomsBz0fQ

    J'ai aussi changer le double clic par Worksheet_SelectionChange dans les feuilles concernées 5 à 10. Il suffira de sélectionner la cellule où insérer l'image
    L'inconvénient c'est que dans toutes les feuilles quand la lettre i seule sera saisie l'ouverture du choix d'une image se fera.

    @+ Le Pivert
    0
    1. momobha Messages postés 20 Statut Membre
       
      Merciiii
      Je l'essaye dans les semaines à venir!
      merci bcp bcp bcp
      0
    2. momobha Messages postés 20 Statut Membre
       
      Bonjour
      Je te fais un retour. Ce que tu m'as mis en place m'aide bcp, je t en remercie. Je gagne 30 bonnes minutes et c'est considérable.
      Merci bcp
      J'ai deux petites questions.
      Parfois quand j'insert ma photo dans une cellule, même si cette dernière n'est pas petite, la photo apparaît en toute petite, y a t il qqc à faire en amont pour qu'elle apparaisse dans la taille de la cellule.
      La deuxième, parfois quand je réajuste mes lignes, les photos se décalent toutes, ou quand je coupe des lignes avec des photos et que je les colle ailleurs sur la page, les photos ne suivent pas.
      Cela t'évoque-t-il qq?
      Bon c'est vraiment un détail, j'ai gagné bcp du temps déja.
      Encore merci
      0
    3. momobha Messages postés 20 Statut Membre
       
      et oui, une dernière chose, je ne peux pas supprimer les photos de mon dossier source par la suite, sinon elles disparaissent aussi du bilan... y a t il une alternative, car bcp de dossiers photos....
      0
  13. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    voila une nouvelle mouture avec un dossier image. Ne rien toucher au code, il s'ouvre directement sur le dossier image. Tu peux supprimer les images de ce dossier cela ne change rien à ton classeur.
    Les images sont réglées pour ce mettre à la même hauteur que la cellule.

    http://www.cjoint.com/c/GAwrgTSyw1Q

    @+ Le Pivert
    0
    1. momobha Messages postés 20 Statut Membre
       
      Je viens de voir ton msg
      Est ce que tu peux me le renvoyer stp
      il n est plus dispooooo désolée!
      Je serai plus vigilante et je regarderais plus souvent!
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > momobha Messages postés 20 Statut Membre
         
        Voilà

        http://www.cjoint.com/c/GAAlq7Rbn1Q
        0
      2. momobha Messages postés 20 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Merci... Mais, je fais quoi du doc? du code? comment je l'adapte à mon doc?
        Je copie le code? je le colle ou? je remplace quoi? faut m'aiguiller...desolée...je connais pas

        et quand je fais un double clic, ca me fait un beug la:

        Bon si ca te prend trop de temps je comprends, pas de soucis, tu m'as deja bien aidé...
        Sub ImportImages()
        Dim oPict As New stdole.StdPicture
        ChDir ThisWorkbook.Path & "\Image\"
        chemin = Application.GetOpenFilename
        If chemin = False Then Exit Sub 'annulation
        'hauteur = 100 'a adapter la hauteur de l'image
        hauteur = ActiveCell.Height
        Set oPict = stdole.LoadPicture(chemin)
        ratio = oPict.Width / oPict.Height
        If oPict.Height < oPict.Width Then 'mode paysage
        largeur = hauteur * ratio
        Else
        largeur = hauteur * ratio
        0
  14. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    et oui, une dernière chose, je ne peux pas supprimer les photos de mon dossier source par la suite, sinon elles disparaissent aussi du bilan... y a t il une alternative, car bcp de dossiers photos....

    C'est toujours le même code, c'est simplement pour te faire voir qu'en supprimant une image du dossier, il n'y a aucune incidence sur ton classeur

    Parfois quand j'insert ma photo dans une cellule, même si cette dernière n'est pas petite, la photo apparaît en toute petite

    et que les images sont à la dimension de la cellule

    La deuxième, parfois quand je réajuste mes lignes, les photos se décalent toutes, ou quand je coupe des lignes avec des photos et que je les colle ailleurs sur la page, les photos ne suivent pas.

    Sur ce coup là, je ne peux pas t'aider

    Bonne continuation
    0
    1. momobha Messages postés 20 Statut Membre
       
      Ok, merci bcp pour ton aide.
      C'est surprenant en effet car j ai testé, j ai effacé des photos et ds mon doc, j avais la photo qui avait disparue un message disant que le fichier n'était plus dispo
      Mais c'est pas grave je vais m'oganiser
      Merci bcp pour ton aide.
      0