Excel convertir hypertexte en texte

Résolu
Titachon -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je travaille avec Excel 2003.

Mon problème est le suivant, je récupère de vieux fichiers excel pour alimenter une base de données. Sur quelques 1900 lignes un lien hypertexte renvoie a une photo. Le lien hypertexte a été transformé pour s'afficher comme "1". Pour pouvoir rentrer mes données dans la nouvelle base je dois importer le nom du fichier au format texte. Comment faire pour le retrouver automatiquement?

Je précise que je ne connais absolument rien a visual basic et j'ai bien peur de devoir passer par là, si besoin pourriez vous m'expliquer le principe en détail

Merci

Thomas

7 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    En fait, sans VBA, faut tout se taper à la main......

    Avec VBA :
    - ouvrir le classeur,
    - en faire une copie (enregistrer sous) et TRAVAILLER SUR LA COPIE!!!
    DANS LA COPIE DU CLASSEUR :
    - taper ALT+F11
    - Insertion/Module
    - Copire/Coller ce code :
    Sub AfficheNomCompletLienHypertexte()
    Dim Lign As Long, DrLig As Long
    Dim Col As Byte
    Dim NomDuLien As String
    
    Col = 1 '==> A adapter : n° de la colonne contenant vos liens hypertextes
    With Sheets("Feuil1") '==> A adapter le nom de la feuille contenant vos liens
        DrLig = Columns(Col).Find("*", , , , xlByColumns, xlPrevious).Row
        For Lign = 1 To DrLig
            If .Cells(Lign, Col).Hyperlinks.Count = 1 Then
                NomDuLien = .Cells(Lign, Col).Hyperlinks(1).Address
                .Cells(Lign, Col).Hyperlinks.Delete
                .Cells(Lign, Col).Clear
                ActiveSheet.Hyperlinks.Add Anchor:=.Cells(Lign, Col), Address:=NomDuLien, TextToDisplay:=NomDuLien
            End If
        Next Lign
    End With
    End Sub

    - !!! ADAPTER tout de suite ce qui doit l'être (colonne + nom de la feuille)
    - Fermer l'éditeur VBE
    - Taper ALT+F8, sélectionner "AfficheNomCompletLienHypertexte" puis cliquer sur exécuter.
    Normalement vont apparaitre les chemins complets des fichiers liés hypertextement...
    Il y aura certainement des manipulations de caractères à effectuer pour n'obtenir que les noms des fichiers, mais testez déjà ceci.
    SUR UNE COPIE DE VOTRE FICHIER!!!!!!!!!!!!!
    1
  2. Bruce Willix Messages postés 12376 Date d'inscription   Statut Contributeur Dernière intervention   2 638
     
    Le lien hypertexte a été transformé pour s'afficher comme "1"

    => Ca veut dire qu'il est affiché "1" dans la celulle et que lorsque vous cliquez dessus, la photo s'ouvre ?
    0
  3. Titachon
     
    Oui c'est exactement ça.

    Par contre les liens sont cassés depuis longtemps. Les fichiers sont regroupés avec des noms uniques dans un seul répertoire la seule chose qui m'intéresse c'est de récupérer le nom du fichier pour pouvoir tout refaire.
    0
  4. Titachon
     
    OK J'ai déjà fait la copie je fait des tests depuis ce matin... Effectivement je pense pas que j'aurais trouvé tout seul!!!

    Je teste ça tout de suite et vous tiens au courant. En attendant merci!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Titachon
     
    Après avoir adapté la formule avec bon numéro de colonne et de feuille (colonne Y et feuille 20). Le lancement de la macro donne le code d'erreur

    Erreur d'exécution '1004':

    Erreur définie par l'application ou par l'objet

    En cliquant sur débogage on me renvoie a la ligne

    DrLig = Columns (Col).Find("*", , , , xlByColumns, xlPrevious).Row
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Manque un point devant Columns... Comprends pas il est bien rpésent chez moi quand j'ai testé...
      Bon pas grave.
      J'en profite pour te soumettre deux solutions :
      Solution 1 : Affiche le chemin d'accès complet du lien hypertexte :
      Sub AfficheNomCompletLienHypertexte()
      Dim Lign As Long, DrLig As Long
      Dim Col As Byte
      Dim AddresseDuLien As String
      
      Col = 1 '==> A adapter : n° de la colonne contenant vos liens hypertextes
      With Sheets("Feuil1") '==> A adapter le nom de la feuille contenant vos liens
          DrLig = .Columns(Col).Find("*", , , , xlByColumns, xlPrevious).Row
          For Lign = 1 To DrLig
              If .Cells(Lign, Col).Hyperlinks.Count = 1 Then
                  AddresseDuLien = .Cells(Lign, Col).Hyperlinks(1).Address
                  .Cells(Lign, Col).Hyperlinks.Delete
                  .Cells(Lign, Col).Clear
                  ActiveSheet.Hyperlinks.Add Anchor:=.Cells(Lign, Col), Address:=AddresseDuLien, TextToDisplay:=AddresseDuLien
              End If
          Next Lign
      End With
      End Sub

      Solution 2 : Affiche le nom du fichier du lien hypertexte :
      Sub AfficheNomFichierLienHypertexte()
      Dim Lign As Long, DrLig As Long
      Dim Col As Byte
      Dim NomDuLien As String, AddresseDuLien As String
      
      Col = 1 '==> A adapter : n° de la colonne contenant vos liens hypertextes
      With Sheets("Feuil1") '==> A adapter le nom de la feuille contenant vos liens
          DrLig = .Columns(Col).Find("*", , , , xlByColumns, xlPrevious).Row
          For Lign = 1 To DrLig
              If .Cells(Lign, Col).Hyperlinks.Count = 1 Then
                  AddresseDuLien = .Cells(Lign, Col).Hyperlinks(1).Address
                  NomDuLien = StrReverse(Left(StrReverse(AddresseDuLien), InStr(StrReverse(AddresseDuLien), "/") - 1))
                  .Cells(Lign, Col).Hyperlinks.Delete
                  .Cells(Lign, Col).Clear
                  ActiveSheet.Hyperlinks.Add Anchor:=.Cells(Lign, Col), Address:=AddresseDuLien, TextToDisplay:=NomDuLien
              End If
          Next Lign
      End With
      End Sub
      0
  7. Titachon
     
    Désolé j'ai toujours la même erreur...

    Par contre pour le coup du point c'est de ma faute... Comme je suis obligé de passer d'un PC a un autre (j'ai internet sur un et excel sur l'autre) je me suis planté dans la copie de l'erreur...

    Par contre pas d'erreur possible dans la copie de la macro car je fais un copier coller sur un fichier texte puis transfert par clef usb
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Ne mettrais tu point : Col = Y ???
      Si oui remplace par : Col = 25
      0
  8. Titachon
     
    Merci beaucoup je ne savais pas qu'en VB les colonnes étaient repertoriées avec des nombres.

    Tout Marche!

    Un gros gros merci!
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      De rien.
      Bonne fêtes de fin d'année.
      A+
      0