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 :

Concaténer deux cellules en vue de créer une cellule hyperlink


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Par défaut Concaténer deux cellules en vue de créer une cellule hyperlink
    Bonjour à tous,

    si je sais extraire les valeurs d'une cellule hyperlink, je suis, après des heures de recherches et autant d'essais infructueux, incapable réaliser l'opération inverse.

    Dans la pratique, mon tableau Excel comporte 3 colonnes :

    A - Marque
    B - Modele
    C - Lien_Site

    Il s'agit d'un exemple. Pour des raisons de confidentialité, je ne peux communiquer le contenu réel.

    Résultat souhaité :

    B --> cellule hyperlink avec texte de B et lien de C.

    A tout hasard, j'ai bidouillé ma macro d'extraction en la modifiant comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub concatenation
    Dim Cell As range
    On Error Resume Next
     
    'Cellule Modele
    For Each Cell In range("B1:B" & range("B65536").End(xlUp).Row)
     
    Cell.Hyperlinks(1).Address = Cell.Offset(0, 0)
    Cell.Hyperlinks(2).Address = Cell.Offset(0, 1)
     
    Next Cell
     
    End Sub
    Bien entendu, cela ne fonctionne pas.

    J'ai besoin d'un coup de main, car je ne me vois pas concaténer 4000 entrées manuellement.

    Merci d'avance de toute aide.


    Cordialement
    Pascal

  2. #2
    Membre éprouvé
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Par défaut
    Bonjour,

    Je comprend pas vraiment ce que vous voulez faire. Vous souhaitez crée les liens hypertextes dans B à partir de l'info dans C ?

    Avec ce code vous devriez pouvoir faire cela

    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
    Sub concatenation()
        Dim Cell As Range
        On Error Resume Next
     
        With Sheet2
     
            For Each Cell In .Range("B1:B" & Range("B65536").End(xlUp).Row)
     
                .Hyperlinks.Add Cell, Cell.Offset(0, 1), , , Cell.Value
     
            Next Cell
     
        End With
     
    End Sub
    A+

    John

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,

    Si j'ai bien compris, le but est de garder le texte qu'il y a dans la colonne B et ajouter un lien hypertexte, dont l'adresse se situe en colonne C.
    J'ai fait un rapide essai avec l'enregistreur de macro. Ceci permet de mettre un lien hypertexte sur la cellule B4 sans modifier la valeur de cette cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Hyperlinks.Add Anchor:=Range("B4"), Address:="C:\le chemin vers mon fichier"
    A adapter à ton code

    Pour info, j'ai fait le test pour savoir comment modifier le texte à afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\le chemin vers mon fichier", TextToDisplay:="un texte"
    C'est la propriété TextToDisplay qui permet de faire cela. Si tu n'y mets pas de texte, cela garde le texte initial de la cellule.

  4. #4
    Membre confirmé
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Par défaut
    Bonjour à tous,

    pris par d'autres occupations, je n'ai pas eu le temps de consulter les réponses à mon appel d'aide avant aujourd'hui. Merci déjà de vos réponses.

    Citation Envoyé par riaolle
    Si j'ai bien compris, le but est de garder le texte qu'il y a dans la colonne B et ajouter un lien hypertexte, dont l'adresse se situe en colonne C.
    C'est exactement ça.

    Dans cet exemple de travail, j'aurais en cellule A1 la marque du constructeur.
    En B1, le modèle.
    En C1, un lien vers le site du constructeur qui pointe sur ce modèle.

    @John
    Merci pour le code. Malheureusement, il ne fonctionne pas. Il va falloir que je fasse différents essais, mais pourquoi "With Sheet2" ?

    @riaolle
    Avant de me lancer dans du code VBA, j'utilise systématiquement l'enregistreur de macro. Cela peut donner une bonne base à développer éventuellement.

    Là où je bloque, c'est justement qu'en utilisant cet éditeur, je suis obligé de mettre du texte, alors que le lien change à chaque ligne. Avec près de 4000 enregistrements, c'est un travail de titan.

    Je vais tester votre solution et vous tiendrai au courant.

    En tout merci encore et désolé de ne pas avoir pu répondre plus tôt.

    Cordialement
    Pascal

  5. #5
    Membre confirmé
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Par défaut
    Re-bonjour,

    les solutions butent sur le fait que si je garde bien le texte de la cellule B1, l'adresse hyperlink qui se trouve en C1 n'est pas reprise. Au lieu de cela, l'adresse dans le lien hypertext en B1 pointe vers le classeur .xlxs et non vers la page web désirée (celle en C1).

    Je continue à chercher.

    Cordialement

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,

    mais pourquoi "With Sheet2" ?
    C'est que John a probablement travaillé sur la feuille "Sheet2" pour écrire la procédure. C'est évidemment à adapter à la structure de ton classeur
    Pour comprendre la syntaxe With ... End with : https://docs.microsoft.com/en-us/dot...with-statement
    Dans mon exemple, j'avais laissé ActiveSheet, car c'est ce que donne l'enregistreur de macro. Il faut l'adapter si tu travailles sur plusieurs feuilles. Mais si tu travailles sur une seule feuille, il n'y a pas trop de risques.

    Par rapport au code que tu nous présentes au début, tu pourras intégrer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Hyperlinks.Add Anchor:=Range("B4"), Address:="C:\le chemin vers mon fichier"
    En adaptant avec ta boucle => remplacer le B4 par la cellule de la boucle et "C:\le chemin vers mon fichier" par la valeur dans la colonne C. Tu pourras utiliser Offset comme tu le fais déjà.

  7. #7
    Membre confirmé
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Par défaut
    Re,

    merci du conseil.

    J'avais bien modifié Sheet2 en Sheet1. Malheureusement, du moins pour l'instant, la solution de John ne fait rien. Je continue à tester.

    Cordialement
    Pascal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de modélisation UML en vue de créer une base de donnée.
    Par passant13 dans le forum Diagrammes de Classes
    Réponses: 9
    Dernier message: 09/02/2020, 15h30
  2. créer une macro pour comparer deux cellules d'une même colonne
    Par barbie-9 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/05/2012, 19h28
  3. Réponses: 7
    Dernier message: 23/05/2005, 10h12
  4. Créer une vue avec des requêtes UNION ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/04/2005, 12h37
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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