XL 2013 Modification en nombre des intitulés des liens hypertexte

  • Initiateur de la discussion Initiateur de la discussion Victor21
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Victor21

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous.

Ceux d'entre vous qui me connaissent savent que je suis une brêle en VBA, et ma demande ne peut à ma connaissance être résolue que par code.
Dans le fichier joint, deux cas, soit colonne B, soit les colonnes D à x.
Je souhaite, tout en conservant les liens hypertexte existants (tous différents) :
- Colonne B, ne conserver que les noms des pays
- Colonnes D à x ( ici, c'est G) ne conserver que les nombres (sous forme de nombres).
Un p'tit coup de mains d'un codeur de passage me serait très utile : 2 800 liens à modifier manuellement, c'est Loooong 😉
D'avance, merci.
 

Pièces jointes

Solution
Bonjour @Victor21,

Heureux de pouvoir te venir (éventuellement) en aide. La macro ci-dessous fait le job sur 'Feuil1' mais tu peux facilement changer pour que cela le fasse sur ActiveSheet (si c'est du latin pour toi, dis le 🙂 )
VB:
Sub ModifierTexteLiens()

    Dim h As Hyperlink  ' le lien hypertexte en cours d'examen
    Dim pos As Integer  ' la position de la parenthèse dans le texte affiché
    Dim txt As String   ' le texte affiché du lien
    With ThisWorkbook.Sheets("Feuil1")
        For Each h In .Hyperlinks
            txt = h.TextToDisplay
            pos = InStr(1, h.TextToDisplay, "(")
            ' parenthèse ouvrante trouvée
            If pos > 0 Then
                ' si le lien est en colonne B (2)...
Bonjour @Victor21,

Heureux de pouvoir te venir (éventuellement) en aide. La macro ci-dessous fait le job sur 'Feuil1' mais tu peux facilement changer pour que cela le fasse sur ActiveSheet (si c'est du latin pour toi, dis le 🙂 )
VB:
Sub ModifierTexteLiens()

    Dim h As Hyperlink  ' le lien hypertexte en cours d'examen
    Dim pos As Integer  ' la position de la parenthèse dans le texte affiché
    Dim txt As String   ' le texte affiché du lien
    With ThisWorkbook.Sheets("Feuil1")
        For Each h In .Hyperlinks
            txt = h.TextToDisplay
            pos = InStr(1, h.TextToDisplay, "(")
            ' parenthèse ouvrante trouvée
            If pos > 0 Then
                ' si le lien est en colonne B (2)
                If h.Range.Column = 2 Then
                    ' préparation du nouveau texte
                    txt = Left(txt, pos - 2)
                Else ' si autre colonne
                    txt = Replace(Replace(Right(txt, Len(txt) - pos), "(", ""), ")", "")
                End If
                ' réinitialisation du texte d'affichage du lien
                h.TextToDisplay = txt
            End If
        Next h
    End With
End Sub

Cordialement
 

Pièces jointes

Bonjour Patrick,

Plusieurs codes sont possibles, voici une solution :
VB:
Sub TexteLien()
Dim h As Hyperlink, x$, i%
For Each h In [A4].CurrentRegion.Hyperlinks
    x = h.TextToDisplay
    If h.Parent.Column = 2 Then
        For i = 0 To 9
            x = Replace(x, i, "")
        Next i
        x = RTrim(Replace(Replace(x, "()", ""), "-", ""))
    Else
        For i = Len(x) To 1 Step -1
            If Not IsNumeric(Mid(x, i, 1)) Then x = Left(x, i - 1) & Mid(x, i + 1)
        Next i
    End If
    h.TextToDisplay = x
Next h
End Sub
A+
 

Pièces jointes

Bonsoir le forum
Bonsoir Victor21, Hasco & job75

Je ne devrais pas le dire mais j'ai une petite préférence pour le code de job75 qui n'efface pas les données d'attachement aux pays (Andorre(Espagnol ou Français)).
@job75 - D'ailleurs à ce propos, et vu mon niveau de Vba, je ne comprends pas comment le distinguo est fait pour les données qui se trouvent entre parenthèses ? J'arrive parfois à me "dépatouiller" mais là je ne comprends rien de rien que ce soit pour la 1ère donnée qui est conservée, la seconde (numérique) qui est supprimée et la 3 ème suppression qui n'est pas entre parenthèses ???? Pourriez-vous, s'il vous plaît, m détailler tout cela ?
D'avance merci et bonne fin de dimanche.
@+ Eric c
 
Je ne devrais pas le dire mais j'ai une petite préférence pour le code de job75 qui n'efface pas les données d'attachement aux pays (Andorre(Espagnol ou Français)).
Ce n'était pas la demande. De toute façon ces données sont conservées dans l'infobulle du lien
Votre demande est une autre demande.

Je ne devrais pas le dire
Alors ne le dites pas. Surtout pas de cette façon qui pue le non dit.

bonne soirée
 
Bonjour Eric C,
je ne comprends pas comment le distinguo est fait pour les données qui se trouvent entre parenthèses ?
Contrairement à Hasco je n'utilise pas les parenthèses pour repérer les positions.

Pour la colonne B je supprime tous les chiffres de 0 à 9 ainsi que la paire de parenthèses ().

Pour les autres colonnes je concatène les chiffres.

A+
 
Re le fil

@job : merci pour l'explication, je comprends mieux la façon de faire.
@ Hasco - Désolé de vous avoir froissé, ce n'était pas dans mes intentions et je ne pensais pas que cela eut pu être interprété tel quel.
@+ Eric c
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour