Afficher lien si présence d'un fichier dans le répertoire  Sujet résolu

Pour toutes vos questions à propos d'Excel ...

Afficher lien si présence d'un fichier dans le répertoire  Sujet résolu

Messagepar geoffrey90 » 29 Août 2011, 14:29

Bonjour à tous,

Grâce à vba-new, j'arrive à afficher seulement les liens qui sont fonctionnels dans mon tableau via la fonction personnalisée ci-dessous :

Code: Tout sélectionner
Function LIENVALIDE(lien As String)
    Application.Volatile
    LIENVALIDE = lien <> "" And Dir(lien) <> ""
End Function


Et dans la cellule :

Code: Tout sélectionner
=SI(LIENVALIDE("X:\Test\Project\John\");LIEN_HYPERTEXTE("X:\Test\Project\John\";"Rapports");"")


Est-il possible de modifier cette fonction pour n'afficher le lien que s'il y a un ( ou plusieurs ) fichiers dans le répertoire ?
geoffrey90
Membre habitué
 
Messages: 65
Inscription: 30 Avr 2010, 13:37
Version Excel: 2000

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar vba-new » 29 Août 2011, 14:46

Bonjour geoffrey,

Quelle est la différence ?
Normalement, lien fonctionnel=existence du fichier
Peux-tu développer ?
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar geoffrey90 » 29 Août 2011, 15:41

Bonjour vba-new,

Effectivement, mais dans mon cas, pour faire simple, tous les fichiers se trouvant dans les liens n'ont pas les mêmes noms. Je ne peux donc pas appliquer une seule et même formule de lien pour tous le tableau. En revanche, les répertoires où il y a ces fichiers sont tous les mêmes ( le lien est généré avec des variables des cellules A et B ).

Seulement voilà, grâce à une de tes macros, tous ces répertoires sont créés automatiquement à présent, et du coup, la fonction personnalisée affiche tous les liens vu qu'ils existent tous, mais beaucoup d'entre eux n'ont pas encore de fichiers dedans. ( des collègues vont venir les ajouter par la suite ).

Alors dans mon tableau, j'aimerais que cette fonction personnalisée n'affiche les liens que s'il y a présence d'au moins un fichier.

J'espère que l'explication est compréhensible ;;)
geoffrey90
Membre habitué
 
Messages: 65
Inscription: 30 Avr 2010, 13:37
Version Excel: 2000

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar vba-new » 29 Août 2011, 15:54

Et si tu ajoutes le nom du fichier dans le lien comme ceci :
Code: Tout sélectionner
=SI(LIENVALIDE("X:\Test\Project\John\Rapports.xls");LIEN_HYPERTEXTE("X:\Test\Project\John\Rapports.xls";"Rapports");"")
ou encore si le nom du fichier se trouve en A1 par exemple :
Code: Tout sélectionner
=SI(LIENVALIDE("X:\Test\Project\John\"&A1);LIEN_HYPERTEXTE("X:\Test\Project\John\"&A1;"Rapports");"")
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar geoffrey90 » 29 Août 2011, 16:08

Impossible vu que ce n'est pas moi qui nomme les fichiers, je sais où ils seront stockés mais je n'ai aucun moyen de savoir comment ils seront nommés. Je ne peux pas obliger les gens à respecter une mise en forme, j'ai peur qu'elle ne soit pas respectée :cry:

La meilleur solution, serait une fonction perso qui affiche le lien seulement si présence d'un fichier dans le répertoire. C'est faisable tu penses :oops: ?
geoffrey90
Membre habitué
 
Messages: 65
Inscription: 30 Avr 2010, 13:37
Version Excel: 2000

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar vba-new » 29 Août 2011, 16:18

Ah ok.

La fonction suivante regarde s'il existe au moins un fichier xls dans un répertoire donné :
Code: Tout sélectionner
Function EXISTEFICHIER(repertoire As String)
    Application.Volatile
    EXISTEFICHIER = Dir(repertoire & "*.xls") <> ""
End Function
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar geoffrey90 » 29 Août 2011, 16:26

Puis-je intégrer d'autres extensions dans ta fonction ? ( .pdf par exemple )
geoffrey90
Membre habitué
 
Messages: 65
Inscription: 30 Avr 2010, 13:37
Version Excel: 2000

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar vba-new » 29 Août 2011, 16:46

Oui. Essaie la fonction suivante :
Code: Tout sélectionner
Function EXISTEFICHIER(repertoire As String, ParamArray extensions())
    Dim i&
    Application.Volatile
    For i = 0 To UBound(extensions())
        If Dir(repertoire & "*." & extensions(i)) <> "" Then
            EXISTEFICHIER = True: Exit Function
        Else
            EXISTEFICHIER = False
        End If
    Next i
End Function
Exemple d'utilisation :
Code: Tout sélectionner
=EXISTEFICHIER("C:\";"pdf";"xls";"doc")
S'il existe soit un fichier pdf soit un xls soit un doc, la fonction te retournera VRAI
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar geoffrey90 » 30 Août 2011, 08:13

Est-il possible d'activer le lien genre C:\Test\Archive\ Dossier "&C2&"\Archives"&A2&"\Défauts s'il y a présence d'un fichier au lieu d'afficher VRAI dans la cellule ?
geoffrey90
Membre habitué
 
Messages: 65
Inscription: 30 Avr 2010, 13:37
Version Excel: 2000

Re: Afficher lien si présence d'un fichier dans le répertoir

Messagepar vba-new » 30 Août 2011, 09:35

Oui c'est possible, en utilisant la même structure que la fonction LIENVALIDE plus haut. Quelque chose du genre :
Code: Tout sélectionner
=SI(EXISTEFICHIER("C:\Test\Archive\ Dossier "&C2&"\Archives"&A2&"\Défauts";"pdf";"xls");LIEN_HYPERTEXTE("C:\Test\Archive\ Dossier "&C2&"\Archives"&A2&"\Défauts";"Nom_Lien");"")

On regarde dans le répertoire C:\Test\Archive\ Dossier "&C2&"\Archives"&A2&"\Défauts si un fichier pdf ou xls existe. S'il y en a, on affiche le lien sinon on affiche rien.
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Suivante

Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: ait haddou, Bing [Bot] et 25 invités