Lien hypertexte via VBA
Résolu
mathieu
-
mathieu -
mathieu -
Bonjour,
je cherche à automatiser par VBA la création des liens hypertextes pour la ligne 1 à partir de la colonne P.
Sur chaque feuille le nombre de cellules non vides après P1 est variable
c'est à travers derco que je détermine ce nombre de cellules
derco = conum_coalpha(ActiveSheet.Range("XFD1").End(xlToLeft).Column)
donc j'ai écrit ce code mais il plante sur la définition de la zone. l'objectif étant que la fonction hyperlink soit initiée pour chaque cellule avant de passer à la feuille suivante
Dim Lien
Lien = "X:\QEHS\QA_DOC_FE\QA_FOURNISSEURS\7_INCOMING\Certificats Produits chimiques\" & Left(Range("A1"), 8) & " " & Range("P1") & " " & Mid(Range("A1"), 10) & ".pdf"
zone = ActiveSheet.Range("P1") & ":" & Range(derco & 1).Select ' >>> ici ça plante
Dim sh As Worksheet
Dim cell As Range
For Each sh In ActiveWorkbook.Sheets
sh.Activate
For Each cell In zone
ActiveSheet.Hyperlinks.Add Anchor:=zone, Address:=Lien
Next cell
Next sh
j'ai essayé en définissant juste P1 et ça fonctionne, la boucle sur chaque feuille fonctionne aussi
si vous pouviez me donner un coup de main
je cherche à automatiser par VBA la création des liens hypertextes pour la ligne 1 à partir de la colonne P.
Sur chaque feuille le nombre de cellules non vides après P1 est variable
c'est à travers derco que je détermine ce nombre de cellules
derco = conum_coalpha(ActiveSheet.Range("XFD1").End(xlToLeft).Column)
donc j'ai écrit ce code mais il plante sur la définition de la zone. l'objectif étant que la fonction hyperlink soit initiée pour chaque cellule avant de passer à la feuille suivante
Dim Lien
Lien = "X:\QEHS\QA_DOC_FE\QA_FOURNISSEURS\7_INCOMING\Certificats Produits chimiques\" & Left(Range("A1"), 8) & " " & Range("P1") & " " & Mid(Range("A1"), 10) & ".pdf"
zone = ActiveSheet.Range("P1") & ":" & Range(derco & 1).Select ' >>> ici ça plante
Dim sh As Worksheet
Dim cell As Range
For Each sh In ActiveWorkbook.Sheets
sh.Activate
For Each cell In zone
ActiveSheet.Hyperlinks.Add Anchor:=zone, Address:=Lien
Next cell
Next sh
j'ai essayé en définissant juste P1 et ça fonctionne, la boucle sur chaque feuille fonctionne aussi
si vous pouviez me donner un coup de main
2 réponses
-
bonjour
Dans derco tu dis avoir le nombre de cellules non vides.
donc si derco vaut 9 ,dans Range(derco & 1).Select la valeur de ton range sera 91
range n'accepte que des coordonnées du type "A2"
de plus Range(derco & 1).Select, comme son nom l'indique, sélectionne une cellule , mais ne renvoie pas sa valeur. Il faudrait écrire Range(derco & 1).Value ou même Range(derco & 1) tout simplement.
Par ailleurs si zone doit être la définition d'une plage; il faudrait juste :
zone= "P1:" & "P" & derco (si j'ai bien tout compris!)
A+
edit: ou plutot ça:
plage ="P1:" & "P" & derco
zone = range( plage ) -
j'ai trouvé ce qui n'allait pas, je tenais absolument à mettre un range (derco & 1) mais du coup il me sortait la valeur de la dernière colonne occupée alors que je voulais l'adresse de cette colonne
en écrivant ceci :
For Each cell In Range("P1" & ":" & derco & 1)
plus de soucis, mes liens hypertexte se font sur toutes les cases à partir de P1