Excel VBA et Liens Hypertextes

Rouday

XLDnaute Nouveau
Bonjour à tous,

Je programme en VBA sur Excel 2010.
Mon fichier est une liste des 75000 chemins d'accès, noms de fichiers et liens vers les dossiers.
J'ai créé une macro simple pour créer des liens hypertextes :
Code:
Sub mettre_liens()
    Dim fin
    Dim nRow
    
    For nRow = 5 To Range("B4").End(xlDown).Row
        With Sheets("Contenu de répertoire")
             If .Cells(nRow, 4).Value <> "" Then
               .Hyperlinks.Add ActiveSheet.Range("B" & nRow), ActiveSheet.Range("D" & nRow).Value
               .Hyperlinks.Add ActiveSheet.Range("D" & nRow), ActiveSheet.Range("D" & nRow).Value
               .Hyperlinks.Add ActiveSheet.Range("E" & nRow), ActiveSheet.Range("E" & nRow).Value
            End If
        End With
        
        Next
        
    MsgBox "Remplissage liens terminé !", vbInformation, "Opération terminée"
        
End Sub

Ce pendant, la macro plante en pleine exécution sans aucune raison apparente. une fois elle plante à la 23516è ligne, une fois à la 34321è ligne ou 43278è ligne. Bref j'ai un message d'erreur qui apparait :
Code:
Erreur d'exécution 1004 : erreur définie par l'application ou l'objet
Ce que je ne comprends pas, c'est qu'elle effectue ce dont j'ai besoin mais plante au bout d'un moment :(
Auriez vous une idée sur l'origine du problème ?
Merci
 

Staple1600

XLDnaute Barbatruc
Re : Excel VBA et Liens Hypertextes

Bonsoir à tous

Rouday (Bienvenue sur le forum)
Essaie avec ces modifs
Sub mettre_liens()
Dim fin As Long
Dim nRow As Long

For nRow = 5 To Range("B4").End(xlDown).Row
With Sheets("Contenu de répertoire")
If .Cells(nRow, 4).Value <> "" Then
.Hyperlinks.Add ActiveSheet.Range("B" & nRow), ActiveSheet.Range("D" & nRow).Value
.Hyperlinks.Add ActiveSheet.Range("D" & nRow), ActiveSheet.Range("D" & nRow).Value
.Hyperlinks.Add ActiveSheet.Range("E" & nRow), ActiveSheet.Range("E" & nRow).Value
End If
End With

Next

MsgBox "Remplissage liens terminé !", vbInformation, "Opération terminée"

End Sub
 

Rouday

XLDnaute Nouveau
Re : Excel VBA et Liens Hypertextes

Bonsoir à tous

Rouday (Bienvenue sur le forum)
Essaie avec ces modifs
Sub mettre_liens()
Dim fin As Long
Dim nRow As Long

For nRow = 5 To Range("B4").End(xlDown).Row
With Sheets("Contenu de répertoire")
If .Cells(nRow, 4).Value <> "" Then
.Hyperlinks.Add ActiveSheet.Range("B" & nRow), ActiveSheet.Range("D" & nRow).Value
.Hyperlinks.Add ActiveSheet.Range("D" & nRow), ActiveSheet.Range("D" & nRow).Value
.Hyperlinks.Add ActiveSheet.Range("E" & nRow), ActiveSheet.Range("E" & nRow).Value
End If
End With

Next

MsgBox "Remplissage liens terminé !", vbInformation, "Opération terminée"

End Sub

Merci Staple1600, j'ai essayé mais ça ne marche pas non plus. J'ai essayé également de mettre en Option Explicit mais rien à faire, c'est vraiment étrange :(
 

Modeste geedee

XLDnaute Barbatruc
Re : Excel VBA et Liens Hypertextes

Bonsour®
Re

En relisant ton premier message, cela a fait Tilt!

Ce n'est ni étrange ni bizarre mais prévu par Microsoft ;)
Limitations Excel
Liens hypertexte dans une feuille de calcul66 530 liens hypertexte
source (voir ici )

:rolleyes:
Heu... ??? mon coté mouche du coche...
:confused: Quelle utilité de créer 75000 liens dont certains ne seront probablement jamais ou peu utilisé ???
:cool:
pour quoi ne pas générer dynamiquement les liens utiles uniquement lorsque l'on en a le besoin ???
l'adresse URL n'est jamais qu'un string...
 
Dernière édition:

Rouday

XLDnaute Nouveau
Re : Excel VBA et Liens Hypertextes

Bravo Stape1600 !
Je ne savais pas qu'il y avait de telles subtilités saperlipopette !
Je vais devoir décomposer le fichier !
Merci de cette résolution si rapide !
Re

En relisant ton premier message, cela a fait Tilt!

Ce n'est ni étrange ni bizarre mais prévu par Microsoft ;)
Limitations Excel
Liens hypertexte dans une feuille de calcul66 530 liens hypertexte
source (voir ici )
 

Rouday

XLDnaute Nouveau
Re : Excel VBA et Liens Hypertextes

En effet, je vais m'orienter vers une requete plutot dynamique pour générer les liens en fonction des besoins. Pour info il s'agit d'un fichier servant de base de données à plus de 20000 employés d'où la nécessité de capitaliser un grand nombre de dossiers ;)
Bonsour®

:rolleyes:
Heu... ??? mon coté mouche du coche...
:confused: Quelle utilité de créer 75000 liens dont certains ne seront probablement jamais ou peu utilisé ???
:cool:
pour quoi ne pas générer dynamiquement les liens utiles uniquement lorsque l'on en a le besoin ???
l'adresse URL n'est jamais qu'un string...