Boucle sur Colonne pour Insertion photo

Randy93

XLDnaute Nouveau
Bonsoir le forum
Debutant en informatique, je me tourne vers vous car j' ai un souci pour boucler sur les celuules d' une colonne.
J' ai trouvé un code d' insertion de photo en fonction du nom contenu d' une cellule. Ce code repond à mes attentes. mais des modofications s' imposent.

J' ai commencé par faire un test en passant le nom d' une photo en parametre et le resultat est OK
Sur mon fichier les noms des photos avec leur extension se trouve en colonne J, J' ai essayé de faire une boucle pour lire le contenu de chaqeue cellule de la colonne J, jusqu à la premierer cellule vide de
la colonne C, et de me mettre la photo correspondant trouve en collonne B, mais mes essais sont catastriophiques.

Voici le code avec le nom du fichier image en paraemtre

Code:
Sub Insert_image()

Dim répertoirePhoto
Dim nom
Dim c
'répertoirePhoto = "c:\mesdoc\" ' Adapter
répertoirePhoto = ThisWorkbook.Path & "\Photo\" ' Adapter
nom = "Fabien.jpg"

Set c = Range("B2")
With ActiveSheet

'.Pictures.Insert(répertoirePhoto & nom & ".jpg").Name = nom
.Pictures.Insert(répertoirePhoto & nom).Name = nom
.Shapes(nom).Left = c.Left
.Shapes(nom).Top = c.Top
.Shapes(nom).LockAspectRatio = msoFalse
.Shapes(nom).Height = c.Height
.Shapes(nom).Width = c.Width
End With
End Sub


Merci d' avance pour l' aide que vous pouvez m' apporter

Randy
 

Papou-net

XLDnaute Barbatruc
Re : Boucle sur Colonne pour Insertion photo

Bonjour Randy93, et bienvenue,

Voici une façon de construire la boucle:

Code:
Sub Insert_image()
Dim répertoirePhoto
Dim Cel
'répertoirePhoto = "c:\mesdoc\" ' Adapter
répertoirePhoto = ThisWorkbook.Path & "\Photo\" ' Adapter
With ActiveSheet
  For Each Cel In .Columns(10).SpecialCells(xlCellTypeConstants)
    '.Pictures.Insert(répertoirePhoto & nom & ".jpg").Name = nom
    .Pictures.Insert(répertoirePhoto & nom).Cel = nom
    .Shapes(nom).Left = Cel.Offset(0, -8).Left
    .Shapes(nom).Top = Cel.Offset(0, -8).Top
    .Shapes(nom).LockAspectRatio = msoFalse
    .Shapes(nom).Height = Cel.Offset(0, -8).Height
    .Shapes(nom).Width = Cel.Offset(0, -8).Width
  Next
End With
End Sub
Il est possible que ça ne réponde pas entièrement à ta demande car je n'ai pas très bien compris l'énoncé:

J' ai essayé de faire une boucle pour lire le contenu de chaqeue cellule de la colonne J, jusqu à la premierer cellule vide de la colonne C
J'ai donc restreint la zone de recherche à la colonne J.

Un exemple de ton fichier aurait permis de voir la structure de la feuille.

Cordialement.
 

Randy93

XLDnaute Nouveau
Re : Boucle sur Colonne pour Insertion photo

Bonsoir le forum et papou-net
merci pour ta réponse rapide, je joins un fichier.
1) En J les nom des Images
2) Boucle sur toutes les cellules de la colonne J - Recuperer la valeur de la cellue
3) Avec cette valeur inserer l' image correspondant en colonne B
4) la Premere cellule vide de la colonne C terminera la boucle
Randy
 

Pièces jointes

  • BDListe.xlsx
    12.8 KB · Affichages: 43

Papou-net

XLDnaute Barbatruc
Re : Boucle sur Colonne pour Insertion photo

RE:

Essaie avec ce code modifié comme suit:

Code:
Sub Insert_image()
Dim répertoirePhoto
Dim Cel, Nom

répertoirePhoto = ThisWorkbook.Path & "\Photo\" ' Adapter
With ActiveSheet
  For Each Cel In .Range("C2:C" & Rows.Count).SpecialCells(xlCellTypeConstants)
    Nom = Cel.Offset(0, 7)
    .Pictures.Insert(répertoirePhoto & Nom).Name = Nom
    .Shapes(Nom).Left = Cel.Offset(0, -1).Left
    .Shapes(Nom).Top = Cel.Offset(0, -1).Top
    .Shapes(Nom).LockAspectRatio = msoFalse
    .Shapes(Nom).Height = Cel.Offset(0, -1).Height
    .Shapes(Nom).Width = Cel.Offset(0, -1).Width
  Next
End With
End Sub
Cordialement.
 

Randy93

XLDnaute Nouveau
Re : Boucle sur Colonne pour Insertion photo

Bonjour le forum, Papou-net
Hier soir j' ai testé ton code et j' ai une erreur à la ligne
Code:
.Pictures.Insert(répertoirePhoto & Nom).Name = Nom
de type sur la proprieté et la classe de insert
Randy
 

Randy93

XLDnaute Nouveau
Re : Boucle sur Colonne pour Insertion photo

Bonsoir le forum
Ayant réflechi à la manierer de faire cette insertion, j' ai trouve une dexieme méthode qui serait celle ci.
Pour chaque ligne en colonne C
Recuperer la valeur correspondant en colonne J (nom fichier image)
Avec la valeur de la cellule colonne J - recuperer l' image correspondant dans le repertoire
Placer cette image en colonne B meme ligne
Ainsi je pense que mon explication sera plus claire
L' Image doit correspondre à la colonne C exemple B2 C2
Randy
 

gromimi

XLDnaute Nouveau
Re : Boucle sur Colonne pour Insertion photo

bonjour à tous, j'ai un peu un soucis similaire, à savoir des photos à inserer en automatique, en fonction du contenu d'une cellule ...

Je suis pas du tout expert sur exel, et je comprends pas bien la macro, qui chez moi ne fonctionne pas ....

Sub Insert_image()

Dim répertoirePhoto
Dim Cel, Nom

répertoirePhoto = ThisWorkbook.Path & "\Photo\" ' Adapter
With ActiveSheet
For Each Cel In .Range("i3:i" & Rows.Count).SpecialCells(xlCellTypeConstants)
Nom = Cel.Offset(0, 7)
.Pictures.Insert(répertoirePhoto & Nom).Name = Nom
.Shapes(Nom).Left = Cel.Offset(0, -1).Left
.Shapes(Nom).Top = Cel.Offset(0, -1).Top
.Shapes(Nom).LockAspectRatio = msoFalse
.Shapes(Nom).Height = Cel.Offset(0, -1).Height
.Shapes(Nom).Width = Cel.Offset(0, -1).Width
Next

End With

End Sub

Les noms sont dans les cellules de i3 à i300, et j'ai également créé un repertoire photo, dans le répertoire de travail.
Les photos sont en jpg, mes cellules ne sont pas nommées ...
je vois pas où dire que mes photos sont en jpg, ou c'est directement pris comme ça .... ??????
:confused::confused::confused::confused:
 

Discussions similaires

Réponses
12
Affichages
581

Statistiques des forums

Discussions
312 339
Messages
2 087 414
Membres
103 542
dernier inscrit
feenix