Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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,

en vitesse avant d'aller se coucher !

ici il faut garder 31 en 5'position ce sont les dimensions !
I = Choose(X, 0, 12, 20, 25, 31) ''<laisser 31 en 5'position Col(6 )c'est nécessaire au prog pour redim et calculer le ratio !
tu peux le voir à qq lignes plus bas de ci-dessus !
 

Pièces jointes

  • ListeFichiersExif_JPG_5_Redim.xls
    74.5 KB · Affichages: 45
  • ListeFichiersExif_JPG_5_Redim.xls
    74.5 KB · Affichages: 41
Dernière édition:

re4

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

Bonjour,
Tu es vraiment sympa, vu, j'ai compris ici ''Temp$ = Cells(Lig, X)'' , si je mets ''x'' de la boucle for/next, ça marche
Comme je te le disais le but est de choisir les exifs que l'on veut extraire, j'ai fait une page pour ça, j'essaie de me débrouiller avec mes connaissances, je me permettrais de t'envoyer le fichier pour le simplifier si tu as le temps.
Je fais des tests, j'essaie de comprendre ton code,

Y a pas d'urgence
Bon courage
Merci beaucoup
 
Dernière édition:

Roland_M

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

Bonjour,

alors effectivement si tu utilises différent nos pour les exifs alors il faut revoir un peu le code,
et j'ai bien peur que tu ne compliques et qu'il soit difficile de s'y retrouver !?
il eu était préférable que tu m'expliques ça au départ pour moi le faire personnellement

retrouver ses "jeunes" dans un code qui a été retouché c'est toujours problématique, perso j'aime pas bien, souvent je laisse tomber !
on a tous une notre logique et en plus il faut une certaine rigueur que beaucoup d'amateurs n'ont pas !
comme ici, tu avais modifié une boucle et les positions des colonnes sans chercher à comprendre le reste du déroulement !

ici il y a deux possibilités de travailler:
la 1' celle en cours ou j'utilise les données dans ces colonnes pour traiter en ligne chaque image pour redim et ratio
-- tu comprends qu'il faut être organisé !
la 2' comme au départ c'était simplement d'afficher les données que l'on veux et là peu importe l'ordre !
-- tu saisies la différence !?
toi au départ tu voulais simplement afficher des exifs
puis en cours tu demandes des choses qui elles demandent d'intervenir sur les résultats dans les colonnes
et là ce n'est plus le même déroulement dans les codes, si tu bouscules l'ordre des données à traiter c'est la pagaille !

c'est souvent le même problème, que beaucoup d'intervenants connaissent, on part sur une idée
et une fois tout bien fait, on voudrais autre chose qui ne correspond pas du tout à la structure du départ !


pour revenir à ton message:
>>> Tu es vraiment sympa, vu, j'ai compris ici ''Temp$ = Cells(Lig, X)'' , si je mets ''x'' de la boucle for/next, ça marche
je comprends pas du tout !?

est-ce que seulement tu as vu qu'il y avait aussi du code feuille ?
car là tu aurais du voir que j'utilisai la colonne 6 !
 
Dernière édition:

re4

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

Roland,
Loin de moi l'idée de modifier l'architecture de ton code, je regardais les possibilités pour l'adapter à une nouvelle demande.
vu, le code de la feuille1, je n'y avait pas pensé ;-)

Tu as raison, tu as suivi ta logique et c'est la bonne, c'est pour ça que si l'on continue, je te soumettrai le fichier (que tu effaceras)

Donc je modifie ici : merci pour ton professionnalisme ,-)
Bonne journée
 
Dernière édition:

Roland_M

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

re

ok pas de problème !
mais par contre, il ne s'agit pas d'avoir le dernier mot !
merci d'enlever ça de ton message si tu veux bien, sinon pour qui je vais passer !?
 
Dernière édition:

re4

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

re-Bonjour

Voici le fichier de données
Colonnes
A:B Désignation et code des exifs (sous win7)
C : ordre d'affichage dans ta feuille ''images''
D : sélection des exifs par l'utilisateur (fonction liste)
E1 : nombre de sélections
E : Code exifs sélectionnés qui seront intégrés à ton code

J'ai essayé des trucs pour voir
For X = 1 To Sheets("Prérequis").Range("E1").Value + 1 '+1 pour afficher le code 31
Va cherché le nombre de sélection dans les prérequis => ok

I = Choose(X, Sheets("Prérequis").Range("E2").Value, 31)
Ca marche aussi mais je ne sais pas incrémenter E2

W = 0: H = 0: I = InStr(LCase(Temp$), "x")
De la boucle for/next donne la limite de colonne, je ne suis pas aller voir dans le code de la feuille image...

j'essaie de comprendre mais le vba n'est pas mon fort !

Ne saute pas au plafond, le plafond est bas en ce moment
Bien à toi
 

Pièces jointes

  • prérequis.xls
    32 KB · Affichages: 45
Dernière édition:

Roland_M

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

Bonsoir,

voir si cela convient !?

pour l'instant je fais une petite pause apéro bien mérité puis casse-croûte et je revérifierai après !
donc, même si ça te convient, tu reviens en fin de soirée voir si j'ai remis le classeur au cas où !?
 

Pièces jointes

  • ListeFichiersExif_JPG_6_Redim.xls
    90 KB · Affichages: 48
Dernière édition:

re4

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

Bonjour
Encore du super boulot et avec réactivité ! c'est exactement ce que l'on cherchait
je ne sais de qui est ce proverbe '' il vaut mieux un qui sait que dix qui cherchent'' de toi ? ;-)

Merci encore mon cher Roland, heureux de t'avoir rencontré.

Je peux intégrer en début de macro un truc du style : Roland_M - Excel Downloads ou ce que tu veux ?

Très bonne journée
Uge
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…