Copier un lien hypertexte d'une cellule à une autre

VM -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un fichier excel avec plusieurs onglets. Un des onglets est "Habitants" et l'autre "Récap Habitants". Dans l'onglet "Habitants" dans certaines cellules j'ai un lien hypertexte m'envoyant vers une autre feuille excel contenant les details de cet "Habitant".

J'ai actuellement une macro qui me permet d'avoir dans mon onglet "Recap Habitants" tous les details de l'onglet "Habitants", à chaque fois que j'ai un nouvel habitant je peux via ma macro rapporter tous les details dans l'onglet "Recap Habitants".

Par contre je ne sais pas quel code mettre dans ma macro pour que celle-ci me copie dans l'onglet "Recap habitants" également le lien hypertexte qu'il pourrait y avoir dans certaines cellules de l'onglet "Habitants".

pour faire simple
onglet "Habitants" cellule F2 = il y a un lien actif
quand j'utilise ma macro je voudrais
onglet "Recap Habitants" cellule F2= le lien & qu'il soit = ment actif

Merci beaucoup !

3 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Voici le même code (avec des lignes moins longues):
    Option Explicit
    Sub VM()
    Dim o As Range    'Origine
    Dim d As Range    'Destination
    Dim t As Boolean  'Test
    
      'dernière cellule utilisée en colonne 1 de Habitants
      Set o = Worksheets("Habitants").Columns(1) _
              .Find("*", , , , , xlPrevious)
      'première cellule libre en colonne 1 de Recap Habitants
      Set d = Worksheets("Recap Habitants").Columns(1) _
              .Find("*", , , , , xlPrevious).Offset(1)
      
      Do While o.Row >= 10
        'tester la colonne F
        t = o.Offset(0, 5).Value <> ""
        If t Then
           'copier la ligne
           o.EntireRow.Copy d
           'cellule de destination suivante
           Set d = d.Offset(1)
        End If
        'cellule d'origine suivante
        Set o = o.Offset(-1)
        'supprimer la ligne précédente (si elle vient d'être copiée)
        If t Then o.EntireRow.Offset(1).Delete
      Loop
    
    End Sub
    1
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Tout simplement :
      Worksheets("Habitants").[F2].Copy _
        Destination:=Worksheets("Recap Habitants").[F2]
    
    0
    1. VM
       
      Bonjour Patrice

      Merci pour votre réponse. J'ai essayé mais j'avais un message d'erreur, alors j'ai chipoté un petit peu (je ne suis pas à l'origine de la macro) , voici ce que j'ai essayé

      'Recap habitants copy
      Sheets("Habitants").Select

      i = Range("A65536").End(xlUp).Row

      'check every line starting from the bottom
      For ligne = i To 10 Step -1
      'test if previous ligne is bigger
      If Range("F" & ligne).Value <> "" Then
      'Supprimer la ligne
      Rows(ligne).Select
      Selection.Copy
      Sheets("Recap Habitants").Select
      Range("A" & Range("A65536").End(xlUp).Row + 1).Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
      Sheets("Habitants").Select
      End If
      Next

      Sheets("Habitants").Select
      i = Range("A65536").End(xlUp).Row

      'check every line starting from the bottom
      For ligne = i To 10 Step -1
      'test if previous ligne is bigger
      If Range("F" & ligne).Value <> "" Then
      'Supprimer la ligne
      Rows(ligne).Select
      Selection.Delete

      End If
      Next

      Sheets("Habitants").Select
      i = Range("A65536").End(xlUp).Row

      'check every line starting from the bottom
      For ligne = i To 10 Step -1
      'test if previous ligne is bigger
      If Range("F" & ligne).Value <> "" Then
      'copier lien hypertexte
      Rows(ligne).Select
      Selection.Copy_ Destination:=Worksheets("Recap Habitants")

      j'avais donné comme exemple la cellule F2, mais le lien peut se trouver dans n'importe quelle cellule de la colonne F

      J'ai la macro qui fonctionne tout est copié mais le lien n'est pas actif dans l'onglet "Recap Habitants
      Peut être une grande évidence pour vous ???...

      Merci d'avance !
      0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour VM,

    J'aurais écrit ceci :
    Option Explicit
    Sub VM()
    Dim o As Range    'Origine
    Dim d As Range    'Destination
    Dim t As Boolean  'Test
    
      'dernière cellule utilisée en colonne 1 de Habitants
      Set o = Worksheets("Habitants").Columns(1).Find("*", , , , , xlPrevious)
      'première cellule libre en colonne 1 de Recap Habitants
      Set d = Worksheets("Recap Habitants").Columns(1).Find("*", , , , , xlPrevious).Offset(1)
      
      Do While o.Row >= 10
        'tester la colonne F
        t = o.Offset(0, 5).Value <> ""
        If t Then
           'copier la ligne
           o.EntireRow.Copy d
           'cellule de destination suivante
           Set d = d.Offset(1)
        End If
        'cellule d'origine suivante
        Set o = o.Offset(-1)
        'supprimer la ligne précédente (si elle vient d'être copiée)
        If t Then o.EntireRow.Offset(1).Delete
      Loop
    
    End Sub
    0
    1. VM
       
      Patrice
      Merci. Votre suggestion est à mettre à quel niveau de la macro ? J'ai un message Erreur de compilation attendu fin d'instruction

      Bon aprèm
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      re,

      ce code à la place de ta macro !!
      (attention à copier l'intégralité de la ligne 10)
      0
    3. VM
       
      Bonsoir Patrice

      Je ne peux pas lire l'intégralité de votre réponse.

      La ligne 10 ?

      ... merci !
      0