Ouvrir plusieurs liens hypertextes (fichier PDF) en une seule fois

Bonjour,

Tout d'abord merci d'avance au personnes qui vont me lire et qui vont avoir la gentillesse de réfléchir à mon problème.

J'ai pas mal surfé sur ce forum notamment sur les sujets similaires au mien, mais je n'y trouvais pas de réponse.

J'ai une base de donnée de près de 100 000 lignes, ma colonne D contient un lien hypertexte par cellules qui renvoi à un fichier PDF sur mon disque dur (j'ai donc 100 000 liens hypertextes).

Je voudrais gagner du temps en ouvrant 50 PDF d'un coup (au lieu de cliquer sur chaque lien un par un...).

J'ai donc fait le code VBA suivant (grâce à internet bien-sûr, je ne m'y connais pas du tout en VBA) :

Sub Test()

Dim i As Integer

For i = 2 To 51

DeclencheLien Range("D" & i)

Next i

End Sub

Sub DeclencheLien(Cellule As Range)

'Vérifie si la cellule contient un lien

If Cellule.Hyperlinks.Count = 0 Then

MsgBox "Il n'y a pas de lien hypertexte dans la cellule " & Cellule.Address

Else

'Déclenche le lien

Cellule.Hyperlinks(1).Follow NewWindow:=True

End If

End Sub

Sauf que le problème c'est qu'il ne reconnait pas les liens hypertexte contenus dans les cellules. Je ne comprends absolument pas pourquoi.

Les liens fonctionnent parfaitement si je clique dessus, mais pas avec la macro.

Donc soit il y a une erreur dans ma macro, soit il y a un détail qui m'échappe et qui fait que mon laptop ne reconnait pas le lien (emplacement trop long ? Caractère spéciale du nom du fichier à éviter ? Fichier PDF trop lourd ?....)

Voilà, ça fait 3 jours que je cherche la solution, donc si quelqu'un à la gentillesse de m'aider, je lui en serait très très reconnaissant.

PS : j'ai pas réussi à importer un exemple, vous trouverez une image illustrative ci-joint.

Bien cordialement

tableau links

Bonjour Techsup,

Utiliser uniquement le code suivant:

Sub Lien()
Dim HL as Hyperlink
For each HL In ActiveSheet.Range("D1:D50").Hyperlinks
On Errror resume Next
HL.Follow NewWindow:=true
Next

Ici pour l'exemple la plage est D1 à D50.

Faire varier cette plage (par une boucle) pour ouvrir d'autres liens dans la feuille.

Bons tests, bonne continuation.

Bonjour,

A votre place j'utiliserai un userform pour indiquer une ligne de départ et de fin pour l'ouverture des PDF

comme çà vous pourrez tester si l'ouverture de 50pdf en même temps est trop longue il suffira de réduire.

Un exemple pour test. avec un userform et le code d'ouverture des pdf.

Private Sub CommandButton1_Click()
Dim numdepart As Long
Dim numfin As Long
numdepart = TextBox1.Value
numfin = TextBox2.Value

Range(Cells(numdepart, 4), Cells(numfin, 4)).Select
For Each Cell In Selection
ThisWorkbook.FollowHyperlink Cell.Hyperlinks.Item(1).Address, , True
Next
Unload Me
End Sub

Bonjour Techsup,

Utiliser uniquement le code suivant:

Sub Lien()
Dim HL as Hyperlink
For each HL In ActiveSheet.Range("D1:D50").Hyperlinks
On Errror resume Next
HL.Follow NewWindow:=true
Next

Ici pour l'exemple la plage est D1 à D50.

Faire varier cette plage (par une boucle) pour ouvrir d'autres liens dans la feuille.

Bons tests, bonne continuation.

Merci beaucoup pour votre réactivité et pour le temps que vous m'accordez.

Malheureusement, cela ne fonctionne toujours pas. Rien ne se passe lorsque je lance la macro, pas même un message d'erreur.

Je ne comprends pas.

Bonjour,

A votre place j'utiliserai un userform pour indiquer une ligne de départ et de fin pour l'ouverture des PDF

comme çà vous pourrez tester si l'ouverture de 50pdf en même temps est trop longue il suffira de réduire.

Un exemple pour test. avec un userform et le code d'ouverture des pdf.

Private Sub CommandButton1_Click()
Dim numdepart As Long
Dim numfin As Long
numdepart = TextBox1.Value
numfin = TextBox2.Value

Range(Cells(numdepart, 4), Cells(numfin, 4)).Select
For Each Cell In Selection
ThisWorkbook.FollowHyperlink Cell.Hyperlinks.Item(1).Address, , True
Next
Unload Me
End Sub

Je vous remercie grandement pour votre aide.

J'ai pris votre fichier pour y mettre mes liens, et lorsque je lance la macro, cela affiche un message d'erreur '9' sur la ligne ci-dessous.

Vous savez peut-être d'où cela provient ?

Merci beaucoup d'avance.

erreur

A nouveau,

En fait ce code ne t'affichera pas de message d'erreur. On Error est là pour éviter que s'il n'y a pas de lien dans la plage cherchée.

Un lien soit appelé.

Sinon. Pour tout lien trouvé la ligne HL.Follow….. le lancera.

Après sans exemple du type de lien créé, il est difficile de tester ou est le blocage.

Sub Lien()
Dim HL as Hyperlink
For each HL In ActiveSheet.Range("D1:D50").Hyperlinks
On Error resume Next
HL.Follow NewWindow:=true
Next

A nouveau,

En fait ce code ne t'affichera pas de message d'erreur. On Error est là pour éviter que s'il n'y a pas de lien dans la plage cherchée.

Un lien soit appelé.

Sinon. Pour tout lien trouvé la ligne HL.Follow….. le lancera.

Après sans exemple du type de lien créé, il est difficile de tester ou est le blocage.

Sub Lien()
Dim HL as Hyperlink
For each HL In ActiveSheet.Range("D1:D50").Hyperlinks
On Error resume Next
HL.Follow NewWindow:=true
Next

Merci, désolé si je ne cerne pas du premier coup l'idée derrière le code, c'est un peu mes début en VBA

J'ai mis en pièce jointe un exemple de fichier avec le code que tu m'as indiqué. Peut-être (et même certainement) que je l'ai mal placé.

Tu peux peut-être y jeter un p'tit coup d'oeil ?

Merci infiniment

20openlinks.7z (1.00 Mo)

Je vous remercie grandement pour votre aide.

J'ai pris votre fichier pour y mettre mes liens, et lorsque je lance la macro, cela affiche un message d'erreur '9' sur la ligne ci-dessous.

Vous savez peut-être d'où cela provient ?

Merci beaucoup d'avance.

Avez-vous enregistré le fichier sur votre PC avant de lancer le userform ?

Je vous remercie grandement pour votre aide.

J'ai pris votre fichier pour y mettre mes liens, et lorsque je lance la macro, cela affiche un message d'erreur '9' sur la ligne ci-dessous.

Vous savez peut-être d'où cela provient ?

Merci beaucoup d'avance.

Avez-vous enregistré le fichier sur votre PC avant de lancer le userform ?

Oui, et le message d'erreur persiste : Erreur d'execution '9'

Je vois avec votre fichier test.

La question était mal posée ? vos cellules n'ont pas de liens hypertextes mais ont des formules qui créé un lien hypertexte

ce n'est pas du tout la même chose.

Je vois avec votre fichier test.

La question était mal posée ? vos cellules n'ont pas de liens hypertextes mais ont des formules qui créé un lien hypertexte

ce n'est pas du tout la même chose.

Ooh vraiment désolé.. je ne l'ai pas précisé car je pensais que c'était la même chose

Merci c'est bon à savoir.

Mais c'est quand même faisable ducoup ?

A nouveau,

Réalise tes liens Hypertext par VBA en copiant en valeur les données de ta colonne C dans la colonne E.

Par une boucle

Passe par Hyperlinks.Add Anchor = Range("Dx)

Address = Range("Cx")

Tu as ainsi un lien hypertext non formulé accessible ensuite pour ton besoin en colonne E

Correction

C'est en colonne E qu'il faut inscrire le nouveau lien Hypertext. L'ancien peut être gardé en colonne D

Passe par Hyperlinks.Add Anchor = Range("Ex)

Suite,

Donc une macro comme:

Sub NewLien()
Cible="D:\Data-Room_Design_31_12_2019\2. Drawings\"
For Lig = 1 to Nbre
ActiveSheet.Hyperlinks.Add Anchor:=Range("E" & Lig), Address:=Cible & Range("C" & Lig)
Next Lig

Puis tu utilises ensuite cette colonne pour ton lancement multiple avec la macro en 1ier post

Bons tests, bonne continuation.

Suite,

Donc une macro comme:

Sub NewLien()
Cible="D:\Data-Room_Design_31_12_2019\2. Drawings\"
For Lig = 1 to Nbre
ActiveSheet.Hyperlinks.Add Anchor:=Range("E" & Lig), Address:=Cible & Range("C" & Lig)
Next Lig

Puis tu utilises ensuite cette colonne pour ton lancement multiple avec la macro en 1ier post

Bons tests, bonne continuation.

C'est parfait ! Ça fonctionne parfaitement !

Merci infiniment à vous deux, X Cellus et Xmenpl !

Bonne continuation à vous !

Bonjour,

La version avec userform dont le code est corrigé pour l'ouverture des Liens composés par formule.

Bonjour,

La version avec userform dont le code est corrigé pour l'ouverture des Liens composés par formule.

TEST1-ouverture-pdf-multi-bis.xlsm

Merci beaucoup Xmenpl

Ça fonctionne parfaitement !

Bien à vous

Et pour le cas ou cela interresse d'autres membres du forum

Une version avec les deux boutons

  • Ouverture de liens Hypertexte attribués à une cellule.
  • Ouvertures de liens Hypertexte composés par formule dans un cellule.

Vous aurez ainsi sous le coude les Deux codes à utiliser.

Rechercher des sujets similaires à "ouvrir liens hypertextes fichier pdf seule fois"