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

Excel Discussion :

Lien vers une autre cellule et recopiage du texte contenu dans la cellule où se trouve le lien hypertexte


Sujet :

Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut Lien vers une autre cellule et recopiage du texte contenu dans la cellule où se trouve le lien hypertexte
    Bonjour à tous,
    Dans la cellule A1 de la « Feuil1 », j’ai un code client du type « 52001 ».
    Serait-il possible de mettre en place sur cette cellule un lien hypertexte, qui me permettre d’accéder directement à la cellule H1 de la « Feuil2 » du même classeur et qu'en même temps EXCEL 2013 inscrive dans cette même cellule H1 le contenu de la cellule A1.
    Cela est certainement possible en VBA, mais avec une fonction, j’ai un gros doute.
    Cependant, j’espère me tromper.
    D’avance, merci beaucoup.
    Bon après-midi toujours aussi ensoleillé que les jours précédents.
    bolide7

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour,

    Piur la mise en place du lien hypertexte, tu fais comme d'hab' (via insertion).

    Pour la mise à jour de la valeur, tu vas travailler avec un bête code style:

    Private Sub Worksheet_Activate()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Range("h1").Value = Sheets("Feuil1").Range("A1").Value
    End Sub
    Dès que tu auras appuyer sur ton lien hypertexte, il te transportera dans ta feuille 2 avec actualisation de la valeur de H1

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour QuestVba,
    C’est exactement ce que je souhaite avoir : Me transporter avec le lien jusqu’à la cellule H1 et que le contenu de la cellule de départ A1 se recopie dans la cellule d’arrivée H1.
    Je te remercie beaucoup pour ta proposition, qui hélas est dans un langage que je ne pratique pas et que je maîtrise encore moins.
    Afin de "refermer une porte", pourrais-tu me confirmer que mon doute (solution possible uniquement en VBA) se vérifie ?
    Merci beaucoup pour ta réponse et ton aide.
    Très bonne nuit.
    bolide7

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour QuestVba,
    Bonjour à tous,

    Comme ta fonction correspond exactement à ce que je souhaite faire et comme à priori il n’y a pas de solution avec une fonction classique, pour ce week-end, j’ai décidé de me lancer dans ce langage que je ne maîtrise pas, le VBA, ou plus exactement dans le recopiage d’une fonction en VBA.
    Avant de passer à plus compliqué et après un peu de lecture sur la toile, j’ai donc tenté l’expérience avec ta petite fonction.
    J’ai dû rater quelque chose, car cela ne marche pas.

    Afin de corriger ma manipulation voilà dans le détail ce que j’ai fait :
    - Je me suis positionné sur la cellule A1 de la « Feuil1 » où j’ai mon code client « 52001 ».
    - J’ai cliqué sur « Visual Basic » dans l’onglet « Développeur ».
    - J’ai ensuite placé ta fonction sans les chiffres « 1 » et « 2 » dans « Afficher le code ».
    - J’ai refermé la fenêtre puis la page « Visual Basic ».
    - J’ai cliqué sur le lien que j’avais pris soin d’insérer dans la cellule « A1 ».
    - Le lien m’envoie bien sur la cellule H1 de la « Feuil2 », mais ne recopie pas le code client.

    Sans succès, j’ai essayé d’autres méthodes.
    Que faut-il faire pour que la fonction VBA fonctionne ?

    D’avance, merci beaucoup.
    bolide7

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour à tous,
    Malgré de nombreux essais, je n'ai pas réussi à isoler l'origine du problème.
    Autrement dit, je ne sais pas où ma manipulation foire.
    D'avance merci pour votre aide.
    Bon dimanche à tous.
    bolide7

  6. #6
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour,

    Voici :
    • Ton début est OK ...
    • Microsoft Visual Basic
    • Dble clic sur Feuil2 (Microsoft Excel Objets)
    • Choisir Worksheet (en haut à gauche partie droite écran)
    • Choisir Activate (en haut à droite partie droite écran)
    • Coller "Range("h1").Value = Sheets("Feuil1").Range("A1").Value"

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour QuestVba,
    C’est sympa de revenir vers moi pour me dépanner.
    Merci beaucoup pour tes précisions qui m’ont permis de réaliser ce que je souhaitais.

    Comme la cellule d’arrivée H1 est en réalité une cellule fusionnée, je me suis permis de modifier ta formule.
    Par contre, et même si cela marche, je ne sais pas si j’ai bien fait.
    Dois-je laisser dans ta formule H1 ou mettre la cellule fusionnée H1:I2 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("H1:I2").Value = Sheets("Feuil1").Range("A1").Value
    End Sub
    Par la suite, comme je souhaite que ta formule s’applique à chacune des cellules de la plage A1:A400, après avoir insérer un lien hypertexte sur chacune des cellules de cette plage vers la cellule fusionnée H1:I2, j’ai modifié ta formule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("H1:I2").Value = Sheets("Feuil1").Range("A1:A400").Value
    End Sub
    Mais comme tu t’en doute, chaque cellule de la plage m’envoie dans la cellule fusionnée H1:I2, mais en y inscrivant le contenu de la cellule A1 et non le contenu de la cellule sur laquelle j’ai cliqué.
    Sans succès, j’ai essayé quelques autres modifications.
    Quelle est la formule adaptée pour chacune des cellules de la plage A1:A400 ?
    Je ne sais pas si cela peut avoir une conséquence sur ta nouvelle proposition, mais certaines cellules de la plage A1:A400 ne sont pas renseignées (elles sont vides).

    D’avance, merci beaucoup.
    Bonne journée.
    bolide7

  8. #8
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour,

    Je te propose une autre approche.

    Tu pourrais partir du code suivant à placer dans ta feuil1. Il va détecter la cellule modifiée dans la plage A1:A400 et aller mettre cette valeur dans H1 (Feuil2).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal target As Range)
    Set Plage = Sheets("Feuil1").Range("A1:A400")
    If Not Intersect(target, Plage) Is Nothing And target.Count = 1 Then
    new_value = target.Value
    Sheets("Feuil2").Range("h1").Value = new_value
    End If
    End Sub

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour QuestVba,

    J’ai essayé ta formule et cela ne marche pas.
    Cela est certainement dû à ma mise en œuvre de ta fonction, que je fais mal.
    Au bout de 2 heures et après avoir effectué de nombreux essais, j’ai découvert que je plaçais ta formule comme la fois précédente sur la « Feuil2 », alors que tu avais pris soin de préciser qu’il fallait l’insérer dans la « Feuil1 ».
    Une fois mon erreur rectifiée, c’est impeccable, ça marche.
    Incroyable les choses que peuvent être faites avec le langage VBA.

    Par contre, à l’enregistrement de mon classeur, j’ai eu un message de Monsieur Bill GATES :
    « Les fonctionnalités suivantes ne peuvent pas être enregistrées dans des classeurs sans macro.
    Projet VB.
    Pour enregistrer un fichier avec ces fonctionnalités, cliquez sur NON, puis sélectionnez un type de fichier prenant en charge les macros dans la liste Type de fichier.
    Pour continuer à enregistrer en tant que classeur sans macro cliquez sur OUI. »
    C’est quoi un type de fichier prenant en charge les macros ?
    Que dois-je faire ?

    J’ai un deuxième problème à régler avec ce langage VBA que je découvre.
    Comme, il est fort ressemblant à ce premier sujet, je te propose de poursuivre sur cette même discussion.
    Dans un premier classeur « Chiffre d’affaires », sur la feuille nommée « Tableau des clients » en colonne A (plage A8:A497) j’ai le code client, et en colonne D (plage D8497) j’ai le nom du client.
    Dans un deuxième classeur « Code client », les feuilles ont pour nom les codes client de la colonne A du premier classeur.
    Je souhaiterai qu’en cliquant sur le nom d’un client dans la plage D8497 du classeur « Chiffre d’affaire », EXCEL place mon curseur sur la cellule fusionné M1:O2 de la feuille qui porte le nom du code de ce client dans le classeur « Code client ».
    Je souhaite seulement un positionnement du curseur en M1:O2 et non un recopiage du code client (comme avec ma précédente demande).
    J’espère avoir été clair.

    Pour terminer, pourrais-tu m’expliquer comment positionner cette deuxième formule, car sur la feuille « Tableau des clients », je vais déjà avoir ta première fonction en VBA, qui concerne les cellules de la colonne A ?

    D’avance, merci beaucoup pour toutes tes explications faites et à venir.
    Très bonne journée.
    bolide7

  10. #10
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour, bolide7,

    Par contre, à l’enregistrement de mon classeur, j’ai eu un message de Monsieur Bill GATES :
    « Les fonctionnalités suivantes ne peuvent pas être enregistrées dans des classeurs sans macro.
    Projet VB.
    Pour enregistrer un fichier avec ces fonctionnalités, cliquez sur NON, puis sélectionnez un type de fichier prenant en charge les macros dans la liste Type de fichier.
    Pour continuer à enregistrer en tant que classeur sans macro cliquez sur OUI. »
    C’est quoi un type de fichier prenant en charge les macros ?
    Que dois-je faire ?
    Tu dois utiliser, pour une prise en charge des macros, une extension de type *.xlsm (classeur excel) ou *.xltm (modèle excel)

    Pour ta 2e demande, un peu plus tard .... un travail d'enfer m'attend mais j'arrive.

  11. #11
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Re-,

    tu peux essayer ceci. Pour différencier de ta première macro, tu pourrais choisir que le lien se fait si tu double clic sur une cellule de la colonne A. Je te mets les 2 fichiers en PJ pour le test (tout mis dans c:\essai)

    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
    16
    17
    18
    19
    20
    21
    Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
     
      'Pour info je fais message que double clic
      MsgBox "Vous avez double cliqué sur la cellule " & Target.Address
      Cancel = True
     
     
    On Error Resume Next
    Windows("Code client.xlsm").Activate
    ' Si une erreur est renvoyée, fichier non ouvert
    If Err.Number <> 0 Then
      'j'ouvre le fichier
        ChDir "C:\Essai"
        Workbooks.Open Filename:="C:\Essai\Code client.xls"
    End If
    On Error GoTo 0
     
    Sheets(Target.Value).Select
     
    End Sub
    Fichiers attachés Fichiers attachés

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour QuestVba,
    A couchage plus tôt, message à une heure plus correcte !
    Ca fait vraiment plaisir de voir que tu as pris le temps de reconstituer mes 2 fichiers.
    Merci beaucoup pour cette démarche vraiment très professionnelle.
    Ce couchage précoce m’oblige à différer ma réponse.
    Je reviens vers toi demain soir avec un message plus détaillé.
    Tu peux compter sur moi.
    En attendant encore grand merci.
    bolide7

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour QuestVba,
    Comme promis me revoilà.

    OK et merci pour cette première réponse.
    Il faut enregistrer le fichier avec l’extension « .xlsm » au lieu de « .xlsx ».
    Par contre, je ne comprends pas pourquoi les 2 fichiers que tu as faits sont avec une extension normale « .xls ».
    Pourquoi tes 2 fichiers n’ont pas l’extension « .xlsm » ?

    D’autre part, je me suis certainement mal exprimé car dans les 2 fichiers joints :
    - Un double clic sur le code client (colonne A) m’envoie sur la cellule fusionnée M1:02 du second classeur après un message d’avertissement « Vous avez double cliqué sur la cellule ».
    - Un double clic sur le nom du client (cellule D) m’envoie également sur la cellule fusionnée M1:O2 du second classeur après un message d’avertissement « Vous avez double cliqué sur la cellule ». Il apparaît alors un message d’erreur « Erreur d’exécution ‘9’ L’indice n’appartient pas à la sélection. », ce qui ne doit pas être normal.

    En effet, dans mes précédents messages, je souhaitais qu’un lien sur le code client (colonne A) m’envoie sur la cellule fusionnée M1:O2 de la « Feuil2 » du même classeur et y recopie le code client : C’était ma première demande.
    De plus, je souhaitais qu’un lien sur le nom du client (colonne D) m’envoie sur la cellule M1:O2 de la feuille du second classeur, dont le nom est le code client (notifiée dans la colonne A) du classeur « Chiffre d’affaires ».

    Par ailleurs, j’ignorais qu’avec le langage VBA on pouvait éviter de voir apparaître le lien à l’écran (texte en bleu et souligné) et que l’on pouvait remplacer ce lien par un double clic.

    Le message d’information « Vous avez double cliqué sur la cellule » présente-t-il un autre intérêt que de me confirmer ce que je viens de faire (double cliquer) et de me faire faire un clic supplémentaire sur OK ?

    Dans la négative et comme ta formule doit être modifiée, serait-il donc possible de remplacer le lien hypertexte par un double clic et de supprimer le message d’information « Vous avez double cliqué sur la cellule » ?

    Autrement dit, je souhaite :
    - Qu’un double clic sur le code client (colonne A), mais sans message d’information « Vous avez double cliqué sur la cellule », m’envoie sur la cellule fusionnée M1:O2 de la « Feuil2 » du même classeur et y recopie le code client.
    - Qu’un double clic sur le nom du client (colonne D), mais également sans message d’information, place mon curseur sur la cellule M1:O2 de la feuille du second classeur, dont le nom est le code client (notifiée dans la colonne A) du classeur « Chiffre d’affaires ».

    Même si j’ai été beaucoup trop long, j’espère avoir été plus clair cette fois-ci.
    D’avance, merci beaucoup.
    Excellente journée.
    bolide7

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 670
    Points : 147
    Points
    147
    Par défaut
    Bonjour QuestVba,
    Mon double problème n'étant toujours pas résolu, je reviens de nouveau vers toi.
    Te serait-il possible de m'apporter une proposition, qui permettrait de clore cette discussion ?
    D'avance, merci beaucoup.
    Bonne journée.
    bolide7

  15. #15
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Hello,

    Voici une modification essentielle

    Donc, pour avoir facile:

    1. Remis lien hypertexte en colonne A
    2. Dble clic actif en colonne D


    La macro est la suivante :

    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
    16
    17
    18
    19
    Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' Repérage dble clic en colonne D
    If Not Application.Intersect(Target, Range("D:D")) Is Nothing Then
     
    On Error Resume Next
    Windows("Code client.xlsm").Activate
    ' Si une erreur est renvoyée, fichier non ouvert
    If Err.Number <> 0 Then
      'j'ouvre le fichier
        ChDir "C:\Essai"
        Workbooks.Open Filename:="C:\Essai\Code client.xls"
    End If
    On Error GoTo 0
     
    Sheets(Target.Value).Select
     
    End If
     
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Lien vers une autre page
    Par tina25 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 23/02/2008, 17h53
  2. [9i] Test d'un lien vers une autre BD
    Par dheud dans le forum SQL
    Réponses: 3
    Dernier message: 08/10/2007, 10h50
  3. Lien vers une autre page Web
    Par taaaz1964 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 15/09/2007, 14h49
  4. comment diriger un lien vers une autre base de donnee
    Par blueice dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 11/07/2007, 13h13
  5. Lien vers une autre page puis qui selection d'un elt d'une listbox
    Par avogadro dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 12/08/2006, 13h03

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