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 :

Macro permettant d'insérer une image en commentaire ET d'en conserver les proportions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    GESTIONNAIRE DE PRODUCTION
    Inscrit en
    Septembre 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : GESTIONNAIRE DE PRODUCTION

    Informations forums :
    Inscription : Septembre 2015
    Messages : 45
    Par défaut Macro permettant d'insérer une image en commentaire ET d'en conserver les proportions
    Bonjour,

    J'ai lu cette discussion.

    Je vais surtout m'adresser à patricktoulon mais toutes les aides seront bien entendues les bienvenues.

    J'ai parcouru plusieurs forum et j'ai fais des tests sur mon fichier mais impossible de respecter le ratio de l'image intégrée à mon commentaire.

    La macro est associée aux cellules de la colonne R de ma feuille, lorsque je tape un numéro dans la cellule, elle vérifie si une image existe dans un dossier spécifique et si oui, elle la joint en commentaire à la cellule.

    Tout fonctionne bien sauf que le ratio n'est pas respecté, je triche avec la variable ech, serait il possible de régler ce problème ?

    Et je pousse plus loin ma demande... Ma macro ne fonctionne qu'avec une nouvelle saisie, est il possible d’intégrer un contrôle dans la macro pour qu'elle vérifie toutes les cellules déjà remplies ?

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Column = 18 And Target.Count = 1 Then
        répertoirePhoto = "D:\Users\Mathieu\Desktop\Excel\Christophe\images\" ' adapter
         ech = 2
        Target.ClearComments
        nf = répertoirePhoto & Target & ".jpg"
        If Dir(nf) <> "" Then
    Target.AddComment
    Target.Comment.Text Text:=CStr(Target.Value)
    Target.Comment.Visible = True
    Target.Comment.Shape.Fill.UserPicture nf
    Set myShell = CreateObject("Shell.Application")
    Set myFolder = myShell.Namespace(répertoirePhoto)
    Set myFile = myFolder.Items.Item(Target & ".jpg")
    Taille = myFolder.GetDetailsOf(myFile, 26)
    Target.Comment.Shape.Height = 135
    Target.Comment.Shape.Width = 170
    Target.Comment.Shape.ScaleHeight ech, msoFalse, msoScaleFromTopRight
    Target.Comment.Shape.ScaleWidth ech, msoFalse, msoScaleFromTopRight
    Target.Comment.Visible = False
         End If
       End If
    End Sub
    un énorme merci pour vos lectures et coup de pouce

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonjour

    j'avais donné une astuce pour mettre le commentaire au ration de l'image et bien sur sans passer par l'object scripting runtime tout simplement avec ipicturedisp

    si ca n'est pas cela que tu veux il faut donner plus de precision

    c'est vrai que c'eszt un sujet qui date mais bon allons y !!!

    re
    Adapte le dossier et lea largeur max que tu veux ne touche rien d'autre
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim pict As IPictureDisp, leheight As Long, maxlarge As Long, lewidth As Long
        maxlarge = 100    'largeur maximum  adapter a ton souhait
        répertoirePhoto = "C:\Users\Public\Pictures\Sample Pictures\"    ' adapter a ton dossier
        If Target.Column = 1 And Target.Count = 1 Then
            nf = répertoirePhoto & Target
            If Dir(nf) <> "" Then
                Set pict = LoadPicture(répertoirePhoto & Target.Value)
                multiple = (Round(pict.Width / 1280.38752362949)) / (Round(pict.Height / 1280.38752362949))
                Debug.Print multiple
                Target.ClearComments
                Target.AddComment
                Target.Comment.Text Text:=Target.Value
                With Target.Comment.Shape
                    .Width = maxlarge    'facultatif!!! on atribue une largeur maxi pour le commentaire si ligne bloquée width de commentaire  par defaut
                    .Height = .Width / multiple    'pour son height on applique le multipliquateur obtenu avec le ratio de l'image
                    .Fill.UserPicture répertoirePhoto & Target     'on rempli le commentaire avec  l'image
                End With
            End If
        End If
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre confirmé
    Femme Profil pro
    GESTIONNAIRE DE PRODUCTION
    Inscrit en
    Septembre 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : GESTIONNAIRE DE PRODUCTION

    Informations forums :
    Inscription : Septembre 2015
    Messages : 45
    Par défaut
    en fait je ne connais pas VBA, je suis assez débrouillard pour récupérer du code par ci par la et faire quelques copier/coller....

    Au final ce que je voudrais c'est modifier ma macro pour quelle affiche l'image dans son ratio initiale, 4/3, 16/9 ou n'importe quoi d'autre

    J'ai essayé de bidouiller ce morceau de mon code car je me dis que c'est ici que la taille du commentaire est definie mais au final suivant l'aspect d'origine c'est pas bon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Target.Comment.Shape.Height = 135
    Target.Comment.Shape.Width = 170
    Bref desole je suis vraiment noob en vba mais j'essaie, si vous ne comprenez pas ma demande ou si elle n'est pas realisable c'est pas grave.

    Merci

    [EDIT] je viens de voir ton message, on rédigeait en même temps. Je test ton code et fais suivre...

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    ps:
    modifie la colonne moi j'ai utlisé la 1

    re

    purré essaie le mien et c'est tout!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre confirmé
    Femme Profil pro
    GESTIONNAIRE DE PRODUCTION
    Inscrit en
    Septembre 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : GESTIONNAIRE DE PRODUCTION

    Informations forums :
    Inscription : Septembre 2015
    Messages : 45
    Par défaut
    Avec mon code pour n'importe quelle cellule de la colonne R j'ai bien le commentaire et l'image qui s'affiche au mauvais ratio.

    J'ai collé ton code à la place du miens, modifié le chemin d'accès des images, modifié la colonne vers R donc 18 mais ça ne fonctionne pas.
    Quand je saisi la valeur dans ma cellule et que je valide avec entrée il ne se passe rien. Je passe à la cellule suivante et pas de commentaire...


    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim pict As IPictureDisp, leheight As Long, maxlarge As Long, lewidth As Long
        maxlarge = 150    'largeur maximum  adapter a ton souhait
        répertoirePhoto = "D:\Users\Mathieu\Desktop\Excel\Christophe\images\"    ' adapter a ton dossier
        If Target.Column = 18 And Target.Count = 1 Then
       nf = répertoirePhoto & Target
            If Dir(nf) <> "" Then
                Set pict = LoadPicture(répertoirePhoto & Target.Value)
                multiple = (Round(pict.Width / 1280.38752362949)) / (Round(pict.Height / 1280.38752362949))
                Debug.Print multiple
                Target.ClearComments
                Target.AddComment
                Target.Comment.Text Text:=Target.Value
                With Target.Comment.Shape
                    .Width = maxlarge    'facultatif!!! on atribue une largeur maxi pour le commentaire si ligne bloquée width de commentaire  par defaut
                    .Height = .Width / multiple    'pour son height on applique le multipliquateur obtenu avec le ratio de l'image
                    .Fill.UserPicture répertoirePhoto & Target     'on rempli le commentaire avec  l'image
                End With
            End If
        End If
    End Sub
    désolé de t'importuner
    merci

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    il ne se passe rien ???

    a tu bien mis ce code la ou il faut au moins c'est dans le module de la feuille concernée qu'il faut le mettre

    LOL

    a oui autant pour moi toi tu ajoute l'extention moi je les ai deja dans les cellules alors pour toi se sera


    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
     
        Dim pict As IPictureDisp, leheight As Long, maxlarge As Long, lewidth As Long
        maxlarge = 150    'largeur maximum  adapter a ton souhait
        répertoirePhoto = "D:\Users\Mathieu\Desktop\Excel\Christophe\images\"    ' adapter a ton dossier
        If Target.Column = 18 And Target.Count = 1 Then
       nf = répertoirePhoto & Target &".jpg"    
              If Dir(nf) <> "" Then
                Set pict = LoadPicture(nf)
                multiple = (Round(pict.Width / 1280.38752362949)) / (Round(pict.Height / 1280.38752362949))
                Debug.Print multiple
                Target.ClearComments
                Target.AddComment
                Target.Comment.Text Text:=Target.Value
                With Target.Comment.Shape
                    .Width = maxlarge    'facultatif!!! on atribue une largeur maxi pour le commentaire si ligne bloquée width de commentaire  par defaut
                    .Height = .Width / multiple    'pour son height on applique le multipliquateur obtenu avec le ratio de l'image
                    .Fill.UserPicture nf     'on rempli le commentaire avec  l'image
                End With
            End If
        End If
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre confirmé
    Femme Profil pro
    GESTIONNAIRE DE PRODUCTION
    Inscrit en
    Septembre 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : GESTIONNAIRE DE PRODUCTION

    Informations forums :
    Inscription : Septembre 2015
    Messages : 45
    Par défaut
    je viens de coller le nouveau code dans la feuille et erreur d'execution 1004 sur cette ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Comment.Text Text:=Target.Value
    [EDIT] comme ceci ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Comment.Text Text:=Target.Value & ".jpg"
    par contre maintenant, quand je fais SUPPR dans une cellule, ca ne me supprime plus automatiquement le commentaire.

    [EDIT2] En rajoutant
    juste apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        répertoirePhoto = "D:\Users\Mathieu\Desktop\Excel\Christophe\images\"
    si je clique suppr toute la case se vide (valeur + commentaire)

    Super je touche au but !!!

    Dernière demande, la macro peut elle reprendre les valeurs déjà présentes dans la cellule pour créer le commentaire ?
    Si par exemple je viens de recevoir la photo de mon nouveau projet, que je n'ai pas a retaper son numéro pour que ca photo apparaisse en commentaire.

    Vous me suivez ?

    Déjà un énorme merci !!!

Discussions similaires

  1. Réponses: 14
    Dernier message: 14/07/2015, 18h22
  2. [LibreOffice][Tableur] Insérer une image via une macro
    Par Tseppy dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 16/04/2014, 11h58
  3. [GNU Pascal] [GRX] Insérer une image
    Par the_guitariste dans le forum Autres IDE
    Réponses: 5
    Dernier message: 28/04/2004, 19h24
  4. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 18h06
  5. [CR7] Insérer une image dynamiquement
    Par yoloosis dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 28/07/2003, 10h54

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