Choisir repertoire, modifier un code existant ?

re4

XLDnaute Occasionnel
Bonjour
J'ai récupéré le code ci-dessous qui fonctionne bien, mais je voudrais pouvoir choisir le répertoire ou il y a les photos
ici le répertoire est en dur : Image = ThisWorkbook.Path & "\Test photos\" & .Cells(Lg, "B") , mes connaissances en VBA ne me permettent pas de le modifier.

En vous remerciant beaucoup pour votre aide
Bonne journée

ps: déontologiquement je ne sais s'il faut mettre le lien du forum ou j'ai récupéré ce code (?)

HTML:
Option Explicit


Sub Affiche_Image()
Dim Ws As Worksheet                   ' Sert à manipuler plus facilement l'objet feuille
Dim Image As String                   ' Contiendra le nom de l'image
Dim Lg As Long                        ' Numéro de la dernière ligne colonne B


  Set Ws = Sheets("Feuil1")                                           ' Nom de la feuille

  Application.ScreenUpdating = False                                  ' Interdit le raffraîchissement d'écran
  
  Efface_Images
  
  With Ws
  
    For Lg = 1 To .Range("B65536").End(xlUp).Row                      ' Parcourt de toute la colonne B
 

     Image = ThisWorkbook.Path & "\Test photos\" & .Cells(Lg, "B")        ' Répertoire à actualiser
        
      On Error Resume Next                                            ' On s'affranchit des erreurs
      With .Pictures.Insert(Image).ShapeRange                         ' On insère l'image dont le nom est en colonne B
        '.LockAspectRatio = msoFalse                                   ' On peut la redimmensionner comme on veut
        .LockAspectRatio = msoTrue
        .Left = Ws.Cells(Lg, "A").Left                                ' Position gauche
        .Top = Ws.Cells(Lg, "A").Top                                  ' Position Haut
        .Width = Ws.Cells(Lg, "A").Width                              ' Largeur
        .Height = Ws.Cells(Lg, "A").Height                            ' hauteur
      

      
      End With
      If Err.Number > 0 Then                                          ' Si une erreur (image non présente)
        MsgBox .Cells(Lg, "B") & vbCr & "Image inexistante"           ' On le signale
      End If
    Next Lg
  End With
End Sub
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Choisir repertoire, modifier un code existant ?

Bonsoir,

alors voilà la réponse à ton problème que tu aurais du voir et corriger !!!
on voit que tu n'y connais pas grand chose !

alors explications:
j'ai voulu que tu fasses un essai avec ceci: MsgBox Obj.Type & vbLf & Obj.Name
c'était pour toi voir et modifier le code en conséquence mais tu n'as pas réagit !?

tu as bien fais de mettre tes copies d'écran car j'ai vu d'où venait l'erreur !
chez moi le Type est = 13 et toi 11
chez moi le nom c'est "image" et toi "picture"
alors forcément le code ne peut s'exécuter !

conclusion chez ça fonctionne avec l'une des deux lignes:
If Obj.Type = 13 Then Obj.Delete
ou
If LCase(Left(Obj.Name, 5)) = "image" Then Obj.Delete

chez toi c'est une de ces deux lignes à la place:
If Obj.Type = 11 Then Obj.Delete
ou
If LCase(Left(Obj.Name, 7)) = "picture" Then Obj.Delete

pour que ça fonctionne dans les deux cas:
If LCase(Left(Obj.Name, 5)) = "image" Or LCase(Left(Obj.Name, 7)) = "picture" Then Obj.Delete

EDIT: j'ai remis le classeur modifié en conséquence au post#12 ici:
https://www.excel-downloads.com/threads/choisir-repertoire-modifier-un-code-existant.20005173/
 
Dernière édition:

re4

XLDnaute Occasionnel
Re : Choisir repertoire, modifier un code existant ?

Bonjour Roland (le meilleur ;-)

''on voit que tu n'y connais pas grand chose !'' => oui je me suis couché avec et réveillé avec ;)
J'aurai du le rajouter dans le titre:D

Je tenais vraiment à te remercier pour ton implication, tout est ok, bravo et mille mercis, mes amis du club photo vont être ravis.
C'est dommage que le web soit si anonyme...

Très bonne journée
Uge
 
Dernière édition:

re4

XLDnaute Occasionnel
Re : Choisir repertoire, modifier un code existant ?

Bonsoir,
Encore une question de novice :
Si je comprends bien
Code:
Columns("A:AZ").AutoFit
sert à dimensionner les colonnes, ça marche très bien pour le texte mais est il possible d'avoir la même action pour les photos qui sont dans les cellules de la colonne A quelque soit le ratio ?

Merci encore
 

Roland_M

XLDnaute Barbatruc
Re : Choisir repertoire, modifier un code existant ?

Bonsoir,

ça sert à mettre les largeurs de colonnes au maxi selon le contenu des cellules

quand au à mettre les cellules à la hauteur et largeur des images que tu vas charger,
c'est possible mais ça risque d'être problématique selon les images,
car la hauteur et largeur d'une cellule sont limités !
 

Roland_M

XLDnaute Barbatruc
Re : Choisir repertoire, modifier un code existant ?

re

voir avec selon ta demande !

EDIT: voir dernière modif pour les dim images !
 

Pièces jointes

  • ListeFichiersExif_JPG_3_Redim.xls
    51.5 KB · Affichages: 43
Dernière édition:

re4

XLDnaute Occasionnel
Re : Choisir repertoire, modifier un code existant ?

Bonsoir
Oui effectivement ca pose problème quelque soit la dimension que l'on donne et d'après le test que je viens de faire l'homothétie n'est pas respectée.
En fait ton code précèdent convenait bien mais il fallait que je dimensionne les cellules avant pour que la plus grande imagette (en largeur) ne n'empiète pas dans la colonne 'B' du nom.

Idéalement mais je ne sais pas si c'est possible il faudrait donner par exemple une hauteur de cellule et le code adapterai la largeur de la photo en fonction de son ratio que ce soit pour une photo verticale ou horizontal. en fait comme fait un moniteur ou un TV, l'homothétie est ainsi respectée.

Autre précisions il peut y avoir des images avec un ratio de 1.3333, 1.5, 1.7777 ou même 3 pour les panoramiques
Les 1.5 et 1.333 peuvent être des photos horizontales ou verticales.

Merci encore

ps : si je ne dis pas de bêtise, il me semble que j'avais essayé avec ''EntireColumn.AutoFit'' mais sans résultat
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Dernière édition:

re4

XLDnaute Occasionnel
Re : Choisir repertoire, modifier un code existant ?

Je viens de tester, les images verticales ou horizontales sont affichées de la même façon, j'ai pris comme valeur 75 et 50 pour avoir des vignette plus petites.
Effectivement les cellules excel sont différentes pour une même valeur.
Dans mon exemple 75 est la hauteur de la cellule et 50 sa largeur mais l'image s'affiche en carré ! pour avoir une cellule carré il faut un ratio ~ 5.50 ! ,-) (hauteur=75px largeur=13.75px)
photo originale en ratio 1.5 horizontale
Capture4.JPG

Merci
 

Pièces jointes

  • Capture4.JPG
    Capture4.JPG
    12.2 KB · Affichages: 35
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Choisir repertoire, modifier un code existant ?

re

ok ! car en fait le problème vient du fait que l'on redim les lig OK mais quand on redim la colonne elle varie à chaque image !?
c'est ça le problème ! il faudrait connaitre à l'avance la dim minimum pour ne pas déformer en largeur
ou alors prendre comme tu fais une petite dimension pour tous (pour la largeur bien sûr !)
 

re4

XLDnaute Occasionnel
Re : Choisir repertoire, modifier un code existant ?

Oui c'est ce que l'on fait pour les concours en diffusion, l'on impose la hauteur et la largeur et l'image doit rentrer dans ce cadre suivant son ratio
exemple
projection en 1920x1080 (HD)
image ayant un ratio de 1.5 alors l'image projeté fera 1620x1080 px (image horizontale)
toujours même ratio mais image verticale, image projeté = 1080 de haut x 720 pixels de large
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Dernière édition:

re4

XLDnaute Occasionnel
Re : Choisir repertoire, modifier un code existant ?

Bonjour
Ton idée de fixer la largeur est bonne, c'est plus pratique pour la mise en page et l'impression, pour les images verticales la cellule est rempli, est il possible de dimensionner la cellule en vertical en fonction de l'image horizontale ?
Pour les images horizontales, la cellule est plus haute que l'image, ça prend trop de place.

Le ratio d'aspect est toujours respecté pour les photos H, V et panoramiques.

Idéalement il faudrait que l'on puisse choisir la largeur de la cellule (en vue d'impression) avant l'import, par exemple en renseignant la cellule A1, la hauteur s'adapte puisque l'import est homothétique.

Est il possible de modifier les titres pour qu'ils s'affichent sur la ligne 2 (ils sont sur la même ligne que les boutons).

Ton précèdent fichier était bien aussi il adaptait la hauteur mais il fallait dimensionner la colonne A en fonction de la largeur de la photo, il me semble qu'il fallait mettre True dans le code ".LockAspectRatio = msoFalse" .
J'avais modifié 'Cells.Clear par Cells.ClearContents pour ne pas effacer le format des autres colonnes (cadre, centrage, ect...)

Merci beaucoup pour ton implication mais ne te prend pas trop la tête, c'est déjà très bien comme ça.
Très bon WE
 

Roland_M

XLDnaute Barbatruc
Re : Choisir repertoire, modifier un code existant ?

Bonjour à tous,

voir avec les dernières modif demandées !
 

Pièces jointes

  • ListeFichiersExif_JPG_5_Redim.xls
    62.5 KB · Affichages: 45
  • ListeFichiersExif_JPG_5_Redim.xls
    62.5 KB · Affichages: 48
Dernière édition:

Statistiques des forums

Discussions
312 354
Messages
2 087 545
Membres
103 584
dernier inscrit
Serka