Modifier format cellule si lien hypertexte vide

Fermé
SpaceNoodles - Modifié le 23 nov. 2022 à 14:09
 SpaceNoodles - 25 nov. 2022 à 09:22

Bonjour,

Un collègue du boulot nous avait créé une petite macro afin de lier un n° d'ECP (dans la feuille) au document PDF de l'ECP (sur notre réseau). Voici le code ci-dessous: 

Private Sub CommandButton7_Click() 'MàJ liens ECP


Dim dernligne As Integer

For dernligne = 6 To 1000

If Sheets("synthese").Cells(dernligne, 1) = "" Then Exit For

Next dernligne

dernligne = dernligne - 1

Dim ECP As String

'

    For a = 6 To dernligne

    Sheets("synthese").Cells(a, 1).Select

   ECP = Sheets("synthese").Cells(a, 1).Value

    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:= _

        "Chemin réseau" & ECP & ".pdf", _

        TextToDisplay:="" & ECP & ""

        Next a

End Sub

J'ai remarqué que la macro créait des liens sur des ECP (dans la feuille) qui n'ont pas de fichier PDF a lier sur le réseau.

Ce que je souhaiterais c'est que lorsque la macro ne trouve pas de fichier correspondant, elle modifie le format de la cellule ou du texte afin de voir d'un coup d'oeil qu'il manque un document a lier.

Malgré mes quelques heures de recherche et essai (et surtout vu mon niveau en macro...) je ne trouve aucune solution, je me demande même si la problème ne vient pas de ma macro de base (ci-dessus). Alors je viens demander de l'aide !

D'avance, merci!

A voir également:

1 réponse

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
23 nov. 2022 à 17:01

Bonjour,

essaie cela:

Sub test()
Dim h As Hyperlink, MyFile
For Each h In ActiveSheet.Hyperlinks
MyFile = Dir(h.Address)
If MyFile = "" Then
MsgBox h.Name ' adresse du lien
MsgBox ActiveCell.Address ' adresse de la cellule
ActiveCell.Clear  'supprime le lien
End If
Next
End Sub

0

Ca ressemble en effet a ce que je recherche merci beaucoup.

Si je souhaite que la cellule sans lien change de police / format plutôt que le contenu sois effacé de la cellule, il faut que je change la ligne "ActiveCell.Clear" ?

Edit: J'ai modifié par ActiveCell.Interior.Color = RGB(255, 0, 0), cependant ca passe la cellule qui est active quand je lance la macro, et non la cellule ou le lien hypertexte est mort.

0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > SpaceNoodles
Modifié le 24 nov. 2022 à 11:37

comme ceci:

Sub test()
Dim h As Hyperlink, MyFile
For Each h In ActiveSheet.Hyperlinks
MyFile = Dir(h.Address)
If MyFile = "" Then
Worksheets("Feuil1").Range("A1:A100").Find(What:=h.Address).Select 'plage à adapter
ActiveCell.Clear  'supprime le lien
ActiveCell.Interior.Color = RGB(255, 0, 0)
End If
Next
End Sub

voilà

@+

1
SpaceNoodles > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
24 nov. 2022 à 13:23

Merci encore, mais j'ai un problème d'exe 91.. :/

"Variable objet ou variable de bloc With non définie"

0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > SpaceNoodles
Modifié le 24 nov. 2022 à 18:41

As-tu adapté le nom de la feuille ainsi que la plage de recherche?

0
SpaceNoodles > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
24 nov. 2022 à 19:03

Oui, j'ai modifié le nom de la feuille au nom de la feuille a laquelle je voulais que ça s'applique, et la plage aussi 

J'ai modifié le "Feuil1" par "synthese" (qui est le nom de ma feuille) et si la plage c'est bien le "Range" j'ai juste mis ("A6:A1000") ce qui correspond à mon tableau pour le moment 

0