Je me demandais si des références relatives à des cellules étaient des
arguments valables ds la méthode Hyperlinks.Add.
Je tente à l'aide d'une macro de "reformater" une liste de favoris se
trouvant ds la feuil1 vers la feuil2. Et à un moment donné je veux créer
ds une cellule de feuil2 un hyperlien à l'aide du contenu d'autres
cellules qui sont ds la feuil1.
J'utilise pour celà des références relatives à l'aide de la propriété
Offset, reférences contenues ds des variables.
A l'étape de la création de l'hyperlink j'ai le message d'erreur suivant
:
Erreur d'exécution '5' :
Argument ou appel de procédure incorrect
qui renvoie à la ligne :
ActiveSheet.Hyperlinks.Add Anchor:=Reception3, Address:=Reference4,
TextToDisplay:=Reference3, ScreenTip:=Reference4
où Reception3 et ReferenceN sont les variables définies par Offset comme
expliqué ci-dessus.
J'ai essayé avec différentes synthaxes, notemment ds la définition des
arguments de Hyperlinks, je ne trouve pas l'erreur.
Pour étude vous trouverez ci-dessous copie du script et table
d'équivalence des références utilisées.
Le script :
Sub Test1()
'
' Activation de la cellule A2 de la feuille 2.
Worksheets("Feuil2").Activate
Range("A2").Activate
'
' Déclaration de toutes les variables.
Dim Reference1 As Object, Reception1 As Object
Dim Reference2 As Object, Reception2 As Object
Dim Reference3 As Object, Reception3 As Object
Dim Reference4 As Object
'
' Initialisation des variables de base
Set Reference1 = Worksheets("Feuil1").Range("A2")
Set Reception1 = Worksheets("Feuil2").Range("A2")
'
' Boucle : jusqu'a ce que Reference1 soit Null
Do Until Reference1 = Null
' Copie de Reference1 vers Reception1
Reference1.Copy Destination:=Reception1
' Définition de Reference2 et Reception2
Set Reference2 = Reference1.Offset(0, 1)
Set Reception2 = Reception1.Offset(0, 1)
' Copie de Reference2 vers Reception2
Reference2.Copy Destination:=Reception2
' Définition de Reference3 et Reception3
Set Reference3 = Reference1.Offset(0, 2)
Set Reception3 = Reception1.Offset(0, 2)
' Définition de Reference4 pour paramètrage de l'hyperlien
Set Reference4 = Reference3.Offset(1, 0)
' Création de l'hyperlien dans Reception3
ActiveSheet.Hyperlinks.Add Anchor:=Reception3, Address:=Reference4,
TextToDisplay:=Reference3, ScreenTip:=Reference4
' Redéfinition de Reference1 et Reception1
Set Reference1 = Reference3.Offset(2, -2)
Set Reception1 = Reception3.Offset(1, -2)
'Sinon :
Loop
MsgBox ("Fin des modifications")
End Sub
Table d'équivalence :
(valable avant redéfinition des variables de bases)
Les variables contenant "Reference" renvoient à feuil1.
Les variables contenant "Reception" renvoient à feuil2.
Reference1 = cellule A2 contenant la valeur d'un champ "Catégorie"
Reception1 = cellule A2 recevant la valeur d'un champ "Catégorie"
Reference2 = cellule B2 contenant la valeur d'un champ "Sous-catégorie"
Reception2 = cellule B2 recevant la valeur d'un champ "Sous-catégorie"
Reference3 = cellule C2 contenant le nom du site désigné par l'URL
Reception3 = cellule C2 où doit être créé l'hyperlien
Reference4 = cellule C3 contenant l'URL du site
A noter donc que les contenus de Reference3 et Reference4 sont fusionnés
ds l'hyperlink de Reception3.
A noter aussi que les adresses de Reference2, Reception2, Reference3,
Reception3 et Reference4 sont basées respectivement sur Reference1 et
Reception1, elles même rédéfinies après création de l'hyperlien pour
passer au favoris suivant, du fait que les données de feuil1 et de
feuil2 n'ont pas le même "pas".
Merci d'avance de toutes suggestions et bonne fin de Dimanche.
KiWin
--
Attention !! Un virus ds KaZaA :
http://www.secuser.com/alertes/2002/benjamin.htm
Ton probleme vient peut-etre de ta déclaration comme Objet de Reference3
voici une solution qui fonctionne :
j-p
----------------
Sub test()
dim source as string
dim posit as string
posit = ActiveSheet.Range("b1").Address
Source = "C:\Mes documents\Classeur1.xls"
With Worksheets(1)
.Hyperlinks.Add .Range(posit), Source, TextToDisplay:=Range(posit).Value
End With
End Sub