Problème avec mon code

Fanfan68

XLDnaute Junior
Bonjour à tout le monde,

Grâce à l'aide du forum, j'ai concocté ce petit programme me permettant de vérifier si le lien est toujours valide ou si il existe, dans le cas contraire, je demande à l'utilisateur d'aller à l'endroit ou le fichier se trouve afin de le créer ou le re-créer.

Dim c As Range
For Each c In Range("H6:H" & Sheets("Tableau").Range("H65536").End(xlUp).Row
On Error Resume Next
GetAttr c.Hyperlinks(1).Address
If Err.Number = 0 Then
Range("i1").Value = ""
Else
MsgBox "Le lien pointant sur le fichier nommé " & c.Value & " est rompu ou le fichier n'est plus dans le même emplacement, cliquez sur OK pour le créer ou le re créer", vbCritical, "Lien invalide - Hydro Plumbing"
ouvrir = Application.GetOpenFilename(filefilter:="tout,*.*", Title:="Sélection")
If ouvrir = Faux Then Exit Sub
With ActiveSheet
d = ouvrir
b = c.Address
a = c.Value
.Hyperlinks.Add .Range(b), d, TextToDisplay:=a
End With
End If
On Error GoTo 0
Next c

Le code fonctionne bien et si je le lance 10 fois, ça va fonctionner, par contre, le problème, c'est que si, pour tester, je déplace un fichier ou est sensé pointer un lien et que je relance la routine, le programme va bien détecter que le lien est rompu mais il va également détecter que les autres liens le sont aussi alors que ce n'est pas le cas et ce même si je ferme le fichier et que je le ré ouvre

Auriez vous une soluce pour un homme à la dérive....
 

Fanfan68

XLDnaute Junior
Re : Problème avec mon code

Luki,

Je viens de m'apercevoir d'un truc bizarre pouvant être la cause de mon problème, je t'explique :

Une fois tous mes liens créés si je fais un clique droit dessus un lien puis "modifier le lien", le chemin se trouvant en bas dans "adresse :" est le suivant pour les liens de la colonne H :

C:\SEB\Model\Documents\+ fichier .xls

Et le suivant pour ma range nommée "Liens" :

C:\SEB\Model\+ fichier .xlt

Ce qui est bon, par contre, si je supprime le troisième lien par exemple que j'enregistre et que je ferme, à la ré ouverture le programme va détecter qu'il n' y a pas de lien, la c'est ok, je vais le chercher mais ensuite, pour la ligne de dessous, il me fait pareil et si j'arrête la procédure et que je fais un clique droit sur le lien et que je regarde le chemin se trouvant dans "adresse :" j'ai :

Documents\+ fichier .xls

Peut-être est-ce la problème .
 

Luki

XLDnaute Accro
Re : Problème avec mon code

Bonjour Fanfan, Lacorse.

Vite fait en passant, pas trop de temps ce matin.

Je regarde le fichier dès que je peux (au pire ce soir)

Lacorse: Normal, car le error resume next remet l'erreur à 0, donc le err.clear ne sert à rien.

A+
 

Fanfan68

XLDnaute Junior
Re : Problème avec mon code

Ok Luki, pas de problème, fais comme tu peux,

Je peux même prêt éventuellement à donner mon adresse msn si quequ'un veut prendre directement la main sur mon poste afin de constater le problème

Précision quand même, je suis sous office XP

Merci
 

Luki

XLDnaute Accro
Re : Problème avec mon code

Re,

Besoin de précisions da,s ton code:

With ActiveSheet
d = ouvrir Ok
b = c.Address me semble Inutile, peux tu préciser ?
a = c.Value à quoi ça sert? à garder le même texte affiché dans la cellule ?
.Hyperlinks.Add .Range(b), d, TextToDisplay:=a
End With

A +
 

Luki

XLDnaute Accro
Re : Problème avec mon code

Encore moi:

Je pense avoir trouvé, reste à faire quelques tests, avec le code que je t'ai proposé:
  1. Tu exécutes la macro à l'ouverture, mais tu ne sais pas quelle feuille est active
  2. Tu vérifie les liens sur une feuille déterminée
  3. Si le lien est mort, tu le recrée sur la FEUILLE ACTIVE. si ce n'est pas la feuille qui contient les liens, tu les crées dans cette feuille. Mais tes liens ne sont pas mis à jour pour autant dans la feuille "tableau".
  4. Je ne l'avais pas vu car je travaillait toujours sur la feuille active, sans penser que c'étai un on_open.
  5. Evite le AUTO_OPEN ( xl 97), passe par le module this Workbook, on_Open
Je fais les vérifs et corrections, mais je suis quasiment sûr du truc.

A+
 

Fanfan68

XLDnaute Junior
Re : Problème avec mon code

Re Luki,

b = c.Address me semble Inutile, peux tu préciser ? ->
il faut que je dise sur quelle cellule je dois ajouter le lien
a = c.Value à quoi ça sert? à garder le même texte affiché dans la cellule ? ->
Parce que je veux conserver le même texte et non mettre le chemin du lien ou autre.

Dois-je attendre que tu fasses des tests ? ou dois-je modifier quelque chose, si oui, peux-tu me dire quoi concrètement ?

Merci Luki
 

Luki

XLDnaute Accro
Re : Problème avec mon code

Re,
fichier corrigé. Ok chez moi, quel que soit la feuille active au démarrage.

Vois si ça marche.
J'ai ajouté la macro événementielle d'ouverture dans "thisworkbook" et gardé le code que je t'avais proposé corrigé.

A+
 

Pièces jointes

  • Tableau de bordForum.zip
    22.6 KB · Affichages: 14
  • Tableau de bordForum.zip
    22.6 KB · Affichages: 13
  • Tableau de bordForum.zip
    22.6 KB · Affichages: 13

Fanfan68

XLDnaute Junior
Re : Problème avec mon code

Vraiment merci Luki pour tous les efforts que tu as fais pour moi, j'en suis presque géné mais c'est avec mal au coeur que je dois te dire que j'ai le même problème.

ça a fonctionné pendant 2 ou 3 passages puis aprés en modifiant l'emplacement soit d'un fichier dont le lien se trouve dans la colonne H, soit un fichier dont le lien se trouve dans le range "Liens", il me détecte le lien rompu et aprés il me le détecte aussi pour les autres.

A savoir que j'ai modifié la ligne :
Set MyRg = MySh.Range("H6:H" & Sheets("Tableau").Range("H65536").End(xlUp).Row & ",Liens")

Peut-être le problème vient du fait que je fais le test sur deux fronts(colonne H et "Liens")

Je ne sais plus quoi te dire, on va laisser tomber et je vais essayer de faire autrement.

Ou alors si tu te sents de prendre la main sur mon poste, pour tester directement chez moi....

Dans tous les cas, je tiens vraiment à te remercier une fois de plus pour la patience dont tu as fais preuve
 

Luki

XLDnaute Accro
Re : Problème avec mon code

Re,

vérifie si ça tourne en simplifiant le "range". par ex simplement une plage nommée.

Si Ok, le pb vient peut être de ton instruction assez floue....

Et dis moi

A+
 
Dernière édition:

Fanfan68

XLDnaute Junior
Re : Problème avec mon code

Non mais c'est pas grave Luki, je pense qu'on a assez perdu de temps avec ça(surtout toi), j'ai déja commencé à faire autrement et au final, j'obtient le même résultat.

Encore une fois merci et certainement à bientôt.....pour d'autres problèmes....
 

Discussions similaires

Réponses
6
Affichages
212
Réponses
2
Affichages
343

Statistiques des forums

Discussions
312 845
Messages
2 092 765
Membres
105 529
dernier inscrit
StarExcel