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 :

Créer un lien hypertexte vers une feuille nouvellement créée


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut Créer un lien hypertexte vers une feuille nouvellement créée
    Bonjour,

    Déprime totale, cela fait plus de 2 heures que j’essai de créer un lien hypertexte….

    Voila le problème,
    J’ai créé une macro capable de créer une nouvelle feuille et de renommer directement cette feuille.
    Pour renommer cette feuille, elle va lire une liste :
    - Feuille1
    - Feuille2
    Va compter le nombre de feuille créer et va incrémenter la nouvelle feuille du style :
    (la liste ne sert pas qu’a cela, donc je la garderai !! je prends de l’avance sur vos ?)
    « Feuille » & compteur

    Une fois cette feuille créer, je voudrais que d'une page X constante j'ai automatiquement un lien vers cette nouvelle feuille.

    voici le code en question :
    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 Creer_Page()
    
    Dim Cel_Registre As Range
    Dim compteur As Integer
        
    Set Cel_Registre = Worksheets("Registre").Range("B6")
        
    compteur = 1
    
    While Cel_Registre.Offset(compteur) <> ""
    compteur = compteur + 1
    Wend
      
        Sheets.Add
        ActiveSheet.Name = "REGISTRE" & compteur
    
        
    Cel_Registre.Offset(compteur, 1) = "REGISTRE" & compteur
    Cel_Registre.Offset(compteur, 1).Hyperlinks.Add Anchor:=Selection, SubAddress:="REGISTRE" &compteur , TextToDisplay:="REGISTRE" & compteur
    Le problème vient de la ligne code rouge.

    Merci d'avance pour votre aide.

    PS: Oui ce code doit vous sembler archaique

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Essai cela.
    C'était essentiellement un probleme d'identification des feuilles

    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
     
     
    Sub Creer_Page()
     
    Dim Cel_Registre As Range
    Dim compteur As Integer
     
    Set Cel_Registre = Worksheets("Registre").Range("B6")
     
    compteur = 1
     
    While Cel_Registre.Offset(compteur) <> ""
    compteur = compteur + 1
    Wend
     
        Sheets.Add
        ActiveSheet.Name = "REGISTRE" & compteur
     
    lien = Sheets("REGISTRE" & compteur).Name
    Cel_Registre.Offset(compteur, 1).Hyperlinks.Add Anchor:=Cel_Registre.Offset(compteur, 1), Address:="", SubAddress:=lien & "!A1", TextToDisplay:=lien

  3. #3
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour BOU59000,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    plg = Cel_Registre.Offset(compteur, 1).Address
    ActiveSheet.Hyperlinks.Add Anchor:=Range(plg), Address:="", _
    SubAddress:=ActiveSheet.Name & "!" & plg, TextToDisplay:="REGISTRE" & compteur
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  4. #4
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Désolé pour mon temps de réponse assez long mais je suis assez occupé
    Tout d'abord merci pour vos réponses si rapide

    Les codes fournis permettent de créer un lien hypertexte sur la page nouvellement créer.
    En fait, j'ai créé une macro qui génère cette nouvelle page et la nomme avec un paramètre fixe "Nouvelle_Page_" & compteur avec c'incrémenter le nom de cette page au fur et a mesure que j'en crée.

    En plus de ces X pages nouvellement créées, je voudrais qu'il y ait un lien hypertexte de ces pages vers une page "Sommaire" par exemple. Sommaire serait en fait un recueil de lien hypertexte vers les différentes pages "Nouvelle_Page_" & compteur.

    Je ne sais pas si je me fais comprendre? (c'est pas toujours évident d'expliquer quelquechose que l'on a sous les yeux a des personnes qui n'ont justement pas le fichier Excel sous les yeux )

    Merci d'avance pour vos réponses

  5. #5
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour BOU59000,

    suite à "Sheets.Add" mettre la commande suivante et modifier "Range("B2"), " par la cellule de ton choix,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveSheet.Hyperlinks.Add Anchor:=Range("B2"), Address:="", SubAddress:= _
            "Sommaire!A1", TextToDisplay:="Sommaire"
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  6. #6
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Tout d'abord merci pour ta réponse et désolé d'être si long a répondre.
    J'ai relu une de mes phrases et oui je me suis mal exprimé.

    Je veux créer une nouvelle feuille qui s'appelle par exemple "X" & Compteur afin d'obtenir X1, X2,.... X299.
    Le nom de ces feuilles n'est donc pas fixe, il évolue en fonction du nombre de fois ou j'aurai lancé ma macro de création de feuille.

    Dans mon classeur, j'ai une feuille "Sommaire", je veux qu'a chaque fois que je crée une nouvelle feuille X & Compteur, Ma page "Sommaire" se voit attribuer un lien vers cette nouvelle page X & Compteur.

    Ma page sommaire sera donc une page composée au final d'un nombre (compteur) de lien vers chacune des pages X & compteur.

    Merci encore pour votre aide et désolé de vous faire galérer.


  7. #7
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour BOU59000, et à tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub AjoutdeFeuilleX()
    derLigne = Sheets("Sommaire").Range("A65536").End(xlUp).Row + 1
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "X" & derLigne - 1
    Sheets("Sommaire").Activate
    ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & derLigne), Address:="", SubAddress:= _
            "'X" & derLigne - 1 & "'!A1", TextToDisplay:="'X" & derLigne - 1 & "'!A1"
    End Sub
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  8. #8
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Sa fonctionne du tonnerre!!!!!!!!!



    MERCI!!!!!

  9. #9
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut liens hypertexe VBA - non reconnu par XL 2019
    Bonjour à tout le forum.
    J'ai un soucis depuis que je suis passé sur excel 2019 pro.
    Avec 2013 pro, j'ai créée avec l'aide du forum une application de planning.
    Sous 2013 pro, tout fonctionne parfaitement.
    Sous 2019 pro, j'ai un soucis avec un code vba, dans le module "fonction_et_sous programme".
    losrque que je navigue entre les onglets et que je reviens sur l'onglet "G" j'ai un débogage sur cette ligne de code
    VB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' Insertion lien hypertexte
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
            SubAddress:=Cible, TextToDisplay:=NouveauNom
    je ne comprends pas pourquoi, vue que sous 2013 tout allait bien. Le code ci-dessus est un extrait du code suivant :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub CumulTempsMensuel()
    t0 = Timer
    ' Accélération par inhib events
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ' Effacement liste agents et temps
    Sheets("G").Range("B6:C100").ClearContents
    ' Construction liste agents
    Nagents = Application.WorksheetFunction.CountA(Sheets("Parametre").Range("H4:H100"))
    For N = 1 To Nagents
        NouveauNom = Sheets("Parametre").Range("H" & 3 + N)
        IndexAGT = Sheets("Parametre").Range("J" & 3 + N)
        Sheets("G").Range("B" & 5 + N).Select
        Cible = "'" & "AGT " & IndexAGT & "'!$D$5"
        ' Insertion lien hypertexte
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
            SubAddress:=Cible, TextToDisplay:=NouveauNom
    Next N
    ' transfert tableau planning dans array
    tablo = Range("D6:QL36")
    ' Calcul des temps par agent
    For Agent = 1 To Nagents                                            ' Pour tous les agents
        NomAgent = LCase(Cells(Agent + 5, 2))
        Durée = 0
        For Jour = 1 To 31                                              ' Pour tous les jours
            For Sites = 1 To 90                                         ' Pour tous les sites
                Nom = tablo(Jour, 5 * Sites - 3)                        ' Colonne du nom
                If LCase(Nom) = NomAgent Then                           ' Si c'est l'agent concerné
                    Tdeb = tablo(Jour, 5 * Sites - 3 + 2)               ' Recup temps de début
                    Tfin = tablo(Jour, 5 * Sites - 3 + 4)               ' Recup temps de fin
                    If Tfin <= Tdeb Then Tfin = Tfin + 1                 ' Si fin < début on rajoute 24H
                    Durée = Durée + Tfin - Tdeb                         ' Ajout du temps à la durée
                End If
            Next Sites
        Next Jour
        If Durée * 24 > 0 Then
            Cells(Agent + 5, 3) = Durée * 24                            ' on affiche que s'il y a un temps
        End If
    Next Agent
    ' Retour events
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    Application.StatusBar = "Temps de calcul page G : " & Round(1000 * (Timer - t0), 0) & "ms"
    End Sub

    Si quelqu'un pouvait m'aider, ou avoir un début de piste pour modifier ce code ...
    Je vous joint mon fichier.
    Merci d'avance, a tous ceux qui liront mon post, et qui pourront m'aider.
    Fichiers attachés Fichiers attachés

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai survolé votre code mais il y a quelque chose qui m'interpelle. C'est l'objet Selection alors que vous êtes dans une boucle et que je ne vois pas la sélection bouger. Cela signifierait que vous faites x fois la même opération dans la même cellule ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' Insertion lien hypertexte
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
            SubAddress:=Cible, TextToDisplay:=NouveauNom
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Membre du Club
    Homme Profil pro
    Responsable RH
    Inscrit en
    Octobre 2016
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable RH
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2016
    Messages : 253
    Points : 46
    Points
    46
    Par défaut
    Bonjour Philippe et merci pour la réponse.
    Pour être franc, ce code a été fait avec une personne d'un autre forum. Donc je ne sais pas trop.
    Tout ce que je sais, c'est qu'avec XL 2013 tout fonctionne correctement et qu'avec XL 2019 le code provoque un débogage

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/02/2013, 21h44
  2. créer un lien hypertexte sous une image de fond
    Par Ouija33 dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 24/10/2007, 16h34
  3. Créer un lien hypertext vers le lecteur CD
    Par SilverHawk35000 dans le forum VBA Word
    Réponses: 1
    Dernier message: 13/07/2007, 13h58
  4. [VBA-E]Copier un lien hypertexte d'une feuille à une autre
    Par DomBourti dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/04/2006, 17h01
  5. Comment créer un lien hypertexte avec une liaison OLE Excel ?
    Par vieuxsinge dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 08/12/2005, 17h16

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