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 :

Formule ou vba pour insérer une image


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Accompagnateur personnes handicapés
    Inscrit en
    Juillet 2016
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Accompagnateur personnes handicapés

    Informations forums :
    Inscription : Juillet 2016
    Messages : 111
    Par défaut Formule ou vba pour insérer une image
    Bonjour,

    Voici mon fichier excel

    Je voudrais afficher une image dans la cellule a5:g5 puis h5:n5 puis o5:u5

    Les images sont dans le répertoire image et porte le nom du numéro de la semaine

    Par exemple dans la cellule a5:g5, le fichier se nomme semaine1.jpg comme indiqué dans la cellulle a1
    je voudrais donc une formule qui recherche et insère automatiquement l'image du repertoire image qui correspond au numéro de semaine et qu'elle soit mis à jour si l'image est modifiée
    SOIT pour la cellule a5:g5 l'image semaine1.jpg (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Mesimages/" & A1&".jpg"
    )
    pour la cellule h5:n5 l'image semaine2.jpg (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Mesimages/" & H1&".jpg"
    )
    pour la cellule o5:u5 l'image semaine3.jpg (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Mesimages/" & O1&".jpg"
    )
    ETC.

    Pouvez-vous m'aider svp ?

    Merci beaucoup

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonjour persjussysylvain,

    Le code est ci-dessous - Attention, tes images doivent se nommer SEM1 (pas d'espace entre SEM et le n° de semaine) - Tu peux modifier au cas où.
    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
    Option Explicit
     
    Sub Transfert_Image()
     
    Dim i As Integer
    Dim Emplacement As Range
    Dim NomImage As String
     
        With Worksheets("Feuil1")
            For i = 1 To 8 Step 7  'de la colonne 1 (Sem 1) à la 364 (Sem 52)
                'INSERTION DE l'IMAGE
                NomImage = "SEM" & i
                Set Emplacement = Range(Cells(5, i), Cells(5, i + 6))
                .Pictures.Insert("CHEMIN DE TON DOSSIER\SEM" & i & ".jpg").Name = NomImage 'C'est ici que tu dois mettre le chemin du dossier de tes images
                With .Shapes(NomImage)
                    .Left = Emplacement.Left
                    .Top = Emplacement.Top
                    .LockAspectRatio = msoFalse
                    .Height = Emplacement.Height
                    .Width = Emplacement.Width
                End With
            Next i
        End With
     
    End Sub

    Curt

  3. #3
    Membre confirmé
    Homme Profil pro
    Accompagnateur personnes handicapés
    Inscrit en
    Juillet 2016
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Accompagnateur personnes handicapés

    Informations forums :
    Inscription : Juillet 2016
    Messages : 111
    Par défaut
    Bonjour Curt

    Merci pour ce code.
    Mais je ne comprends pas tout
    J'ai noté ce code dans vba de la Feuill1
    Mais comment faire pour appeler cette procédure ?
    Dois-je mettre quelque chose dans A5, H5 etc. ?

    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
    Sub Transfert_Image()
     
    Dim i As Integer
    Dim Emplacement As Range
    Dim NomImage As String
     
        With Worksheets("Feuil1")
            For i = 1 To 8 Step 7  'de la colonne 1 (Sem 1) à la 364 (Sem 52)
                'INSERTION DE l'IMAGE
                NomImage = "SEM" & i
                Set Emplacement = Range(Cells(5, i), Cells(5, i + 6))
                .Pictures.Insert("Q:\Commun\5. Plannings\Image outllok\SEM" & i & ".jpg").Name = NomImage 'C'est ici que tu dois mettre le chemin du dossier de tes images
                With .Shapes(NomImage)
                    .Left = Emplacement.Left
                    .Top = Emplacement.Top
                    .LockAspectRatio = msoFalse
                    .Height = Emplacement.Height
                    .Width = Emplacement.Width
                End With
            Next i
        End With
     
    End Sub
    Quand je clique sur "lecture" dans le code vba, j'ai ce message : "impossible de lire la propriété Insert dans Pictures" PUIS "erreur définie par l'application ou par l'objet"
    mais il m'a bien placé la première image et quand je reclique sur play il m'inscrit le second message et mets l'image mais la même image (SEM1), ne la redimensionne pas donc déborde des cellules concernées et les autres images ne s'affichent pas
    => exemple sur le fichier joint


    Et si je veux que l'image se mette non pas dans a5 à g5
    mais dans a5 à g9 ?

    Je vous remercie

    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Salut,

    le code est à mettre dans le VBE.
    Pour y accéder, Alt+F11 puis Double-clic sur Feuil1 et coller le code.
    Pour lancer la macro, ALT+F8

    Ajoute en début de procédure ON ERROR RESUME NEXT (ça évitera l'erreur si la photo n'existe pas)
    De plus, n'oublie pas de boucle jusqu'à 364 (et non 8 qui est pris uniquement pour le test)

    Pour ce qui est d'étendre la plage d'affichage, change le 5 (en rouge) par 9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Emplacement = Range(Cells(5, i), Cells(5, i + 6))
    Curt

  5. #5
    Membre confirmé
    Homme Profil pro
    Accompagnateur personnes handicapés
    Inscrit en
    Juillet 2016
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Accompagnateur personnes handicapés

    Informations forums :
    Inscription : Juillet 2016
    Messages : 111
    Par défaut
    Ok

    comme cela dans Feuil1 ?

    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
    Option Explicit
     
    Sub Transfert_Image()
    On Error Resume Next
    Dim i As Integer
    Dim Emplacement As Range
    Dim NomImage As String
     
        With Worksheets("Feuil1")
            For i = 1 To 364 Step 7  'de la colonne 1 (Sem 1) à la 364 (Sem 52)
                'INSERTION DE l'IMAGE
                NomImage = "SEM" & i
                Set Emplacement = Range(Cells(5, i), Cells(9, i + 6))
                .Pictures.Insert("Q:\Commun\5. Plannings\Image outllok\SEM" & i & ".jpg").Name = NomImage 'C'est ici que tu dois mettre le chemin du dossier de tes images
                With .Shapes(NomImage)
                    .Left = Emplacement.Left
                    .Top = Emplacement.Top
                    .LockAspectRatio = msoFalse
                    .Height = Emplacement.Height
                    .Width = Emplacement.Width
                End With
            Next i
        End With
     
    End Sub
    Il ne m'affiche que la 1ère image ?
    et me dit "excel a cessé de fonctionner" et "excel redémarre" et quand je l'ouvre à nouveau im remet la même image suite à la première sans la redimensionner

  6. #6
    Membre confirmé
    Homme Profil pro
    Accompagnateur personnes handicapés
    Inscrit en
    Juillet 2016
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Accompagnateur personnes handicapés

    Informations forums :
    Inscription : Juillet 2016
    Messages : 111
    Par défaut
    Quelqu'un peut m'aider svp ?

    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
    Sub Transfert_Image()
     
    Dim i As Integer
    Dim Emplacement As Range
    Dim NomImage As String
     
        With Worksheets("Feuil1")
            For i = 1 To 364 Step 7  'de la colonne 1 (Sem 1) à la 364 (Sem 52)
                'INSERTION DE l'IMAGE
                NomImage = "SEM" & i
                Set Emplacement = Range(Cells(5, i), Cells(9, i + 6))
                .Pictures.Insert("Q:\Commun\5. Plannings\Image outllok\SEM" & i & ".jpg").Name = NomImage 'C'est ici que tu dois mettre le chemin du dossier de tes images
                With .Shapes(NomImage)
                    .Left = Emplacement.Left
                    .Top = Emplacement.Top
                    .LockAspectRatio = msoFalse
                    .Height = Emplacement.Height
                    .Width = Emplacement.Width
                End With
            Next i
        End With
     
    End Sub
    Quand j'ouvre le fichier, je dois executer la macro (pourquoi ne se fait-elle pas automatiquement) et me note "impossible de lire la propriété insert de la classe pictures"
    et m'insere pas les images
    si je recommence l'opération il note "erreur d'éxécution 1004 : erreur définie par l'application ou l'objet"

    Quand j'enregistre, il m'insère parfois 2 image (SEM1.jpg et SEM8.jpg)
    Avec ce code il passe de l'image SEM1.jpg à SEM8.jpg et de 7 en 7
    Je voudrais qu'il passe de SEM1 à SEM2 à SEM3 etc.
    mais dans les espaces prévus dans le code qui fonctionne
    soit pour l'image SEM1 dans A5 à G9
    pour la SEM2 dans H5 à N9

    J'ai noté mes numéros de semaines dans la ligne 1 :
    1 dans A1 - 2 dans H1 - 3 dans O1 - 4 dans V1 etc.

    Il est noté "erreur d'application de l'objet", j'ai créé que les 15 premières images sur les 52, c'est peut-être pour ca ?

    Merci beaucoup

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

Discussions similaires

  1. Problème pour insérer une image
    Par merwandonut dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 20/04/2008, 20h01
  2. Réponses: 8
    Dernier message: 11/02/2008, 19h37
  3. [VBA-Excel] Insérer une image à une treeview
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/08/2006, 15h54
  4. Réponses: 2
    Dernier message: 03/08/2006, 18h21
  5. Problème pour insérer une image
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 26/04/2006, 23h36

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