VBA : Erreur de code

Kiseki

XLDnaute Occasionnel
Bonjour,

J'ai un code pour afficher une image d'un répertoire (et plus), il fonctionnais très bien avant.


Mais désormais il me dit : "Erreur de compilation : Variable non définie"

Code:
Option Explicit

Function AfficheImage(NomImage, Optional rep)
  Application.Volatile
  If IsMissing(rep) Then rep = ThisWorkbook.Path & "\Photo\"
  Set adr = Application.Caller
  Set adr2 = Range(adr.Address).MergeArea
  temp = NomImage & "_" & adr.Address
  Existe = False
  For Each s In adr.Worksheet.Shapes
    If s.Name = temp Then Existe = True
  Next s
  If Not Existe Then
     For Each k In adr.Worksheet.Shapes
        p = InStr(k.Name, "_")
        If Mid(k.Name, p + 1) = adr.Address Then k.Delete
     Next k
     If Dir(rep & NomImage) = "" Then
        AfficheImage = "Photo"
     Else
       Set myShell = CreateObject("Shell.Application")
       If TypeName(rep) = "Range" Then
          Set myFolder = myShell.Namespace(rep.Value)
       Else
          Set myFolder = myShell.Namespace(rep)
       End If
       Set myFile = myFolder.Items.Item(NomImage)
       Taille = myFolder.GetDetailsOf(myFile, 26)
       H = Val(Split(Taille, "x")(1))
       L = Val(Split(Taille, "x")(0))
       echH = adr2.Height / H
       EchL = adr2.Width / L
       If L * echH > adr2.Width Then ech = EchL Else ech = echH
       H = H * ech
       L = L * ech - 2
       Set s = adr.Worksheet.Shapes.AddPicture(rep & NomImage, True, True, adr.Left, adr.Top, L, H)
       s.Name = NomImage & "_" & adr.Address
       AfficheImage = ""
    End If
  End If
End Function


Sauriez-vous me dire ce qui pourrais clocher ?



Merci,
 

Kiseki

XLDnaute Occasionnel
Re : VBA : Erreur de code

Merci mais je l'ai justement ajouté car sinon le fichier bug.

Le fichier est relancé et là il me charge l'image mais plus aucune image ne peux réapparaitre après.


Le plus comique dans l'histoire c'est qu'elle fonctionnait très bien avant, je n'y ai pas touchée mais j'ai fait plein de truc dans d'autre module (cette fonction d'image est seule dans son module).
 

Dranreb

XLDnaute Barbatruc
Re : VBA : Erreur de code

Bonjour.
Moi je vous conseille de toujours déclarer vos variables (instruction Dim) en leur mettant un type explicite, y compris Variant pour documenter que vous ne pouvez faire autrement.
Je ne laisse jamais Excel ou VBA décider quoi que ce soit à ma place.
Je précise TOUJOURS une expression WorkBook devant Sheets ou WorkSheets, toujours une expression Worksheet devant un Range ou Cells, Toujours Value derrière Range.
Cordialement.
À+
 

Gorfael

XLDnaute Barbatruc
Re : VBA : Erreur de code

Salut Kiseki et le forum
Le plus comique dans l'histoire c'est qu'elle fonctionnait très bien avant, je n'y ai pas touchée mais j'ai fait plein de truc dans d'autre module
C'est un des trucs qui fait que ça ne marche plus ! Et t’espère quoi de notre part ?
Pose-toi la question de ce que tu as pu modifier dans l'environnement ou une mise à jour qui aurait des répercutions sur ton fichier. Je ne pense pas qu'on puisse t'aider puisque le code est correct s'il fonctionnait avant.
A+

Edit : sans aller jusqu'à tout déclarer comme Dranreb, je déclare toutes mes variables dans le type qu'elles doivent recevoir.
 
Dernière édition:

Kiseki

XLDnaute Occasionnel
Re : VBA : Erreur de code

Je comprend,

Voici le fichier en question : Cijoint.fr - Service gratuit de dépôt de fichiers

Dans 'Print' (Impression), si je choisis un Nom et un Prénom qui représente une image dans le répertoire "photo" alors Excel plante, il ce ré-ouvre et charge l'image mais la fonction ne fonctionne plus avant de ré-ouvrir à nouveau.


Je viens de remarquer une chose importante :

La fonction fait référence à des cellules :
Code:
=AfficheImage($E$5 & " " & $E$6 & ".jpg")

En ce moment pour trouver le nom/prénom, j'utilise la formule :
Code:
=INDEX(Nom;Index_ligne)

Mais si je complète manuellement ces deux cellules, ça marche très bien.


Le soucis viendrai de l'utilisation d'une formule pour trouver la valeur du nom et prénom.

Après plusieurs testes c'est vraiment ce qui ce passe, mais pourquoi ?



Merci,
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 468
Messages
2 088 685
Membres
103 919
dernier inscrit
BOB66500