IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier une cellule contenant un lien hypertexte d'un fichier à un autre?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Copier une cellule contenant un lien hypertexte d'un fichier à un autre?
    Bonjour à tous,
    j'ai créé une macro qui me copie des données d'un fichier à un autre, sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Cells(a,b)=Feuil1.Cells(x,y)
    .

    Or,lorsque sur ma feuille1 la donnée de ma cellule est du texte avec un lien hypertexte pointant vers un fichier,seul le texte est copié et je perds mon lien hypertexte.
    J'aimerais conserver le lien également,mais je ne sais pas le faire (je suis débutant).Comment conserver également ce lien?
    Merci pour vos suggestions,
    t

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 360
    Points
    34 360
    Par défaut
    bonjour, après tes cells, regarde du côté de .value, .formula, .formulaR1C1, tu devrait trouver ton bonheur.
    Je pense aussi que selection.copy et .pastespecial devrait t'être utiles

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    essaie avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Feuil2.Cells(a,b).select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= Feuil1.Cells(x,y).value
    A+

  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    J'obtiens une erreur au niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Cells(a,b).Select
    (la méthode select a échoué).
    D'ou cela peut-il venir?

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    J'ai essayé une autre méthode (après avoir identifié la méthode me permettant de copier mon lien hypertexte grâce à l'analyse d'un copier/coller effectué lors de l'enregistrement d'une macro) mais j'obtiens toujours une erreur au même niveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub essai()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
     
    Set FL1 = ThisWorkbook.ActiveSheet
    Set FL2 = Workbooks("B.xls").Worksheets("Feuil1")
     
    FL1.Cells(1, 1).Select
    Selection.Copy
    FL2.Cells(1,1).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
     
    End Sub
    L'erreur étant ici (même si je change FL2 par le chemin complet Workbooks("B.xls").Worksheets("Feuil1")).

  6. #6
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour

    si je fais ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub essai()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
     
    Set FL1 = ThisWorkbook.ActiveSheet
    Set FL2 = Workbooks("Classeur3.xlsm").Worksheets("Feuil1")
     
    FL1.Cells(1, 1).Copy FL2.Cells(1, 1)
     
    'FL1.Cells(1, 1).Select
    'Selection.Copy
    'FL2.Cells(1, 1).Select
    'Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
     
    End Sub
    ça fonctionne chez moi

    si tu veux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FL2.Cells(1, 1).Select,
    tu dois avant différencier ton classeur de l'onglet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("B.xlx").activate
    Sheets("Feuil1").cells(1,1).select
    ou écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Goto FL2.Cells(1, 1)
    Salutations
    fred65200

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Sub rémaniée et testée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub copierHyper()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    'Pour le test.......
    Dim a, b, x, y
    a = 9: b = 3
    x = 10: y = 4
    '-------------------
    'Il faut que les 2 classeurs soit ouverts
    Set FL1 = Workbooks("Classeur1").Worksheets("Feuil1")
    Set FL2 = Workbooks("Classeur2").Worksheets("Feuil1")
     
    FL2.Cells(a, b).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=FL1.Cells(a, b)
     
    End Sub
    A+

  8. #8
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonjour,
    Sub rémaniée et testée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub copierHyper()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    'Pour le test.......
    Dim a, b, x, y
    a = 9: b = 3
    x = 10: y = 4
    '-------------------
    'Il faut que les 2 classeurs soit ouverts
    Set FL1 = Workbooks("Classeur1").Worksheets("Feuil1")
    Set FL2 = Workbooks("Classeur2").Worksheets("Feuil1")
     
    FL2.Cells(a, b).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=FL1.Cells(a, b)
     
    End Sub
    A+
    Salut,
    je fais exactement la même chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub essai()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
     
    Set FL1 = Workbooks("A.xls").Worksheets("Feuil1")
    Set FL2 = Workbooks("B.xls").Worksheets("Feuil1")
     
    FL1.Cells(1, 1).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=FL2.Cells(1, 1)
     
     
    End Sub
    Mais j'ai toujours la même erreur que précédemment!

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Il me semble que tu à inversé les FL1/FL2
    Mais si c'est le bon sens, essaye en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FL2.Activate
    FL2.Cells(a, b).Select
    Tu à certainement une erreur d'activation de classeur car chez moi ca fonctionne impec, mais dans la sub que je propose je copie du classeur1 vers Classeur2.
    EDIT:
    Tu doit copier de A vers B ou de B vers A ?

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je pense (pas testé) que tu dois d'abord placer l'hyperlink dans une variable, afin de n'avoir que le texte de l'adresse, puis recréer ton hyperlink dans l'autre classeur. Ce qui devrait donner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub essai()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
     
    Set FL1 = Workbooks("A.xls").Worksheets("Feuil1")
    Set FL2 = Workbooks("B.xls").Worksheets("Feuil1")
     
    Adres = FL1.Cells(1, 1).Value
    FL2.Cells(a, b).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=Adres
     
    End Sub
    Et cette solution me paraîtrait plus logique...
    Tu dis
    A+

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour ouskel'n'or
    J'ai testé la fonction proposée et je t'assure qu'elle fonctionne tel quel.
    Tu peu la tester.
    A+
    EDIT:
    rectification poste précédant..
    si c'est le bon sens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FL1.Activate
    FL1.Cells(a, b).Select

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello LeForestier,
    Je te crois sur parole, mais comme drthodt disait avoir une erreur, je n'ai pas testé. Par contre, suis d'accord (après relecture) pour l'invertion FL1/FL2
    A+

  13. #13
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Il me semble que tu à inversé les FL1/FL2
    Mais si c'est le bon sens, essaye en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FL2.Activate
    FL2.Cells(a, b).Select
    Tu à certainement une erreur d'activation de classeur car chez moi ca fonctionne impec, mais dans la sub que je propose je copie du classeur1 vers Classeur2.
    EDIT:
    Tu doit copier de A vers B ou de B vers A ?
    Je copie du A vers le B.

    J'ai essayé la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fl1.Cells(1,1).Copy Fl2.Cells(1,1)
    mais là j'obtiens bien: une copie du texte, texte qui apparaît bien en bleu et souligné mais qui n'est pas un lien hypertexte (quand je clique ensuite rien en se passe).

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    As-tu essayé mon code ?

  15. #15
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    As-tu essayé mon code ?
    Salut,
    j'ai fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub essai()
     
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim Adres As Integer
     
     
    Set FL1 = Workbooks("A.xls").Worksheets("Feuil1")
    Set FL2 = Workbooks("B.xls").Worksheets("Feuil1")
     
    Adres = FL1.Cells(1, 1).Value
    FL2.Cells(1, 1).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=Adres
     
     
    End Sub
    J'obtiens une erreur "incompatibilité de type" a ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Adres = FL1.Cells(1, 1).Value
    J'ai déclaré adres en integer,quel type faut-il lui attribuer?

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    T'a surement un excel différent des autres ??
    Si le lien copier s'étale sur plusieurs colonnes il faut cliquer sur la première
    Depuis le début tout fonctionne, voir mon Zip
    A+
    EDIT; je suis persuadé que depuis le début tu crois que toute la ligne du lien est active car
    Ca fonctionne aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Selection.Copy
        Windows("Hyper2.xls").Activate
        Range("C6").Select
        ActiveSheet.Paste
    Fichiers attachés Fichiers attachés

  17. #17
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    je crois que nous avons des versions d'Excel différentes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub copierHyper()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    'Pour le test.......
    Dim a, b, x, y
    a = 9: b = 3
    x = 10: y = 4
    '-------------------
    'Il faut que les 2 classeurs soit ouverts
    Set FL1 = Workbooks("Hyper1.XLS").Worksheets("Feuil1")
    Set FL2 = Workbooks("Hyper2.XLS").Worksheets("Feuil3")
    'FL2.Activate
    'FL2.Cells(a, b).Select
    'ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=FL1.Cells(a, b)
    FL1.Cells(a, b).Copy FL2.Cells(x, y) 
    ' fonctionne et copie AUSSI le lien, pas seulement la mise en forme
    End Sub
    Fonctionne très bien le lien Hypertexte est copié
    Dans le classeur de LeForestier, l'adresse du lien de FL1 n'est pas renseigné , elle ne peut donc pas être copié.

    Cordialement

    fred65200

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par drthodt Voir le message
    J'ai déclaré adres en integer,quel type faut-il lui attribuer?
    Qu'est-ce qu'il y a dans ta cellule, un string, non ? Alors tu le laisses en variant et ça devrait fonctionner.
    Dim adres
    Bon, je vais tester...
    A+

    Edit
    Testé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub essai()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim adres
        Set FL1 = Workbooks("Liste pour fusion.xls").Worksheets("Feuil2")
        Set FL2 = Workbooks("Classeur2").Worksheets("Feuil1")
        adres = FL1.Cells(2, 9).Value
        ActiveSheet.Hyperlinks.Add Anchor:=FL2.Cells(1, 1), Address:=adres
    End Sub
    Bonne soirée

    Edit (re)
    Je me disais qu'on pouvait simplifier et effectivement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub essai()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
        Set FL1 = Workbooks("Liste pour fusion.xls").Worksheets("Feuil2")
        Set FL2 = Workbooks("Classeur2").Worksheets("Feuil1")
        ActiveSheet.Hyperlinks.Add Anchor:=FL2.Cells(1, 1), Address:=FL1.Cells(2, 9).Value
    End Sub
    C'est évident ! On va toujours chercher midi à 14 heures...

  19. #19
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir le fil

    je persiste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FL1.Cells(a, b).Copy FL2.Cells(x, y) 
    ' fonctionne et copie AUSSI le lien, pas seulement la mise en forme
    cordialement
    fred65200

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Peut-être bien... (je n'ai pas testé mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveSheet.Hyperlinks.Add Anchor:=FL2.Cells(1, 1), Address:=FL1.Cells(2, 9).Value
    fonctionne aussi... et c'est pour moi un confort intellectuel que de redéfinir le lien

Discussions similaires

  1. [XL-2010] Lien hypertexte dans une cellule contenant déjà du texte
    Par Ginette54 dans le forum Excel
    Réponses: 6
    Dernier message: 31/05/2014, 13h32
  2. Réponses: 0
    Dernier message: 21/05/2012, 11h32
  3. Zoom sur une image contenant des liens hypertexte
    Par Eric C dans le forum Powerpoint
    Réponses: 6
    Dernier message: 26/04/2008, 09h53
  4. problème lors de la selection d'une cellule avec un lien hypertexte
    Par jamelie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/12/2007, 10h16
  5. détecter si une cellule comporte un lien hypertexte
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/12/2006, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo