Lien hypertexte

Yohan05

XLDnaute Occasionnel
Bonjour le forum,

Une petite question : j'utilise un code VBA pour copier plusieurs cellules dans un autres classeur, seulement la variable y est une information avec un lien hypertexte et l'information est bien copiée mais pas le lien.

Comment faire pour copier la valeur de la cellule et le lien Hypertexte? voici ci-dessous le code employé pour l'instant :

y = Sheets("Factures").Range("B5").Value

.Range("A65536").End(xlUp).Offset(1, 0).Value = y

Merci de votre aide...
 

kjin

XLDnaute Barbatruc
Re : Lien hypertexte

Bonjour,
Je viens juste de répondre à la même question
Si tu écris "value", tu inscris la valeur renvoyée par la formule
Essaie
Code:
y = Sheets("Factures").Range("B5").Formula
.Range("A65536").End(xlUp).Offset(1, 0).Formula = y
A+
kjin
 

Odesta

XLDnaute Impliqué
Re : Lien hypertexte

Bonjour
Apres quelques recherches dans l'aide (assez confuse, il faut l'avouer)

lien = Sheets("Factures").Range("B5").Hyperlinks(1).Address 'le "1" est important !

vous donnera le chemin du lien,
il ne vous reste plus qu'a faire un
.Hyperlinks.Add .Range( ... ), lien

Cordialement
Olivier
 

Odesta

XLDnaute Impliqué
Re : Lien hypertexte

Bonsoir

Donc, l'explication, c'est que le lien hypertext n'est pas contenu dans la cellules, c'est une propriété. Pour récupérer cette propriété, il faut utiliser la méthode citée plus haut, et il faut ensuite la réinjecté dans la cellule demandée. (on peut le faire d'un coup, mais j'aime bien travailler par étapes, plus compréhensibles)

J'espère avoir été suffisamment claire, sinon je recommence
Olivier
 

Yohan05

XLDnaute Occasionnel
Re : Lien hypertexte

Voici le code complet de la macro :
Sub Bouton3_Clic()
Dim NomFeuil As String
Dim Ws As Worksheet

y = Sheets("Factures ").Range("B5").Hyperlinks(1).Address
t = Sheets("Factures ").Range("B5").Value


x = Sheets("Factures ").Range("E5").Value
c = Date

Sheets("Factures ").Range("Z1").Value = DateValue(Sheets("Factures ").Range("C5").Value & " " & Sheets("Factures ").Range("D5").Value)

Z = Sheets("Factures ").Range("Z1").Value

Application.ScreenUpdating = False
Set Ws = ThisWorkbook.Sheets("Factures ")

NomFeuil = Range("F5").Value
' "H:\GESTION DE PRODUCTION\Analyse\Gestion des achats.xls"

Workbooks.Open Filename:="H:\GESTION DE PRODUCTION\Analyse\Gestion des factures.xls"



With ActiveWorkbook.Sheets(NomFeuil)
.Range("D65536").End(xlUp).Offset(1, 0).Value = x
.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:= _
y, TextToDisplay _
:=t
.Range("B65536").End(xlUp).Offset(1, 0).Value = Z
.Range("C65536").End(xlUp).Offset(1, 0).Value = c

End With



ActiveWorkbook.Save
ActiveWindow.Close

MsgBox ("Les factures sont encodées")

Ws.Range("C5:F5").ClearContents 'efface
Application.ScreenUpdating = True

ThisWorkbook.Close savechanges:=False
Application.Quit
End Sub

J'essaye de comprendre ton explication mais je n'y arrive pas...
Peux-tu m'aider...

Merci
 

Yohan05

XLDnaute Occasionnel
Re : Lien hypertexte

Tout fonctionne sans lien hypertexte et avec le lien hypertexte modifié comme cela, cela ne fonctionne pas la macro bloque sur :

Range("A65536").End(xlUp).Offset(1, 0).Select

Je ne comprend pas comment copier un lien hypertexte créer sur le fichier de départ et l'insérer dans la colonne A au bon endroit.

Merci de ton aide...
 

Odesta

XLDnaute Impliqué
Re : Lien hypertexte

L'erreur vient du fait que la feuille n'est pas activée. Le Select ne marche donc pas.

Voici ce qu'il faut mettre à la place :

Cells.Hyperlinks.Add Anchor:=Sheets(NomFeuil).Range("A65536").End(xlUp).Offset(1, 0), Address:=y
 

Odesta

XLDnaute Impliqué
Re : Lien hypertexte

Je suis novice dans VBA donc je ne comprends pas non plus "espion" sorry

Alors, un simple clic droit sur le "y", il y a dans le menu contextuelle, en bas, 'ajouter un espion'. Il suffit de faire OK, puis une page apparait sous ton code, qui montre une ligne avec 'y'.

Tu lance le programme, il va planter. Tu fais dégeugage, et la, tu aura la valeur de 'y' dans l'onglet espion.
 

kjin

XLDnaute Barbatruc
Re : Lien hypertexte

Bonjour,
Je pense que se sera plus facile comme cela.
Ce n'est pas faute de le répèter
Code:
Sub Bouton3_Clic()
Dim addLien As String, sLien As String, NomFeuil As String
Dim vdate As Date, Montant As Double
    
addLien = Range("B5").Hyperlinks(1).Address
sLien = Range("B5").Hyperlinks(1).TextToDisplay
Montant = Range("E5")
vdate = DateValue(Range("C5") & " " & Range("D5") & " 2010")
NomFeuil = Range("F5")

Application.ScreenUpdating = False
Workbooks.Open Filename:="E:\Kk\Temp\classeur1.xls"
With Sheets(NomFeuil)
    .Activate
    dl = .Range("A65536").End(xlUp).Row + 1
    .Cells(dl, 1).Hyperlinks.Add .Cells(dl, 1), addLien, , , sLien
    .Cells(dl, 2) = vdate
    .Cells(dl, 3) = Date
    .Cells(dl, 4) = Montant
End With

ActiveWorkbook.Save
ActiveWindow.Close

MsgBox ("Les factures sont encodées")
Range("C5:F5").ClearContents
ThisWorkbook.Close savechanges:=False 'pourquoi effacer avant alors ?
Application.ScreenUpdating = True

Application.Quit

End Sub
A noter que tu n'as mis aucun contrôle d'erreur (feuille inexistante, cellule vides...d'où bug probable un jour ou l'autre)
A+
kjin
 

Discussions similaires

Réponses
7
Affichages
553
Réponses
2
Affichages
343

Statistiques des forums

Discussions
312 857
Messages
2 092 865
Membres
105 545
dernier inscrit
pourmanger