Copier un lien hypertexte d'une cellule à une autre

Fermé
VM - Modifié par VM le 12/07/2014 à 20:08
Patrice33740 Messages postés 8561 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 15 mars 2025 - 15 juil. 2014 à 11:39
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 !
A voir également:

3 réponses

Patrice33740 Messages postés 8561 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 15 mars 2025 1 779
15 juil. 2014 à 11:39
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
Patrice33740 Messages postés 8561 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 15 mars 2025 1 779
13 juil. 2014 à 09:58
Bonjour,

Tout simplement :
  Worksheets("Habitants").[F2].Copy _
    Destination:=Worksheets("Recap Habitants").[F2]
0
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
Patrice33740 Messages postés 8561 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 15 mars 2025 1 779
13 juil. 2014 à 15:34
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
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
Patrice33740 Messages postés 8561 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 15 mars 2025 1 779
13 juil. 2014 à 21:27
re,

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

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

La ligne 10 ?

... merci !
0