Hyperlink : pointe vers onglet même nom que shape/txtbox

Bonjour a tous,

Je cherche une solution, grâce a un formulaire je crée une forme et un onglet. L'onglet porte le nom des caractères inscrits dans la textbox et dans la forme est aussi écrit ce texte.

Je n'arrive cependant pas à créer le lien entre la nouvelle forme créée et l'onglet. La création du lien doit se faire dans un autre module que celui qui crée l'onglet et la forme.

Si besoin je peux joindre un fichier

Merci d'avance

Kitesurf

15hyperlink.xlsm (107.55 Ko)

Voila mon fichier,

Dans le module "finish" j'ai laisser ce que j'ai fais en bac en commentaire mais cela ne fonctionne pas...

Je souhaiterai que lorsque j'appuie sur le bouton finish, le lien hypertexte se créer mais je galère... (Relation entre la nouvelle forme créée et le nouvel onglet).

Kitesurf

11hyperlink.xlsm (107.55 Ko)

Quelqu'un pour une petite aide ?

Bonjour Kitesurf, bonjour le forum,

Bientôt! Bientôt!

Comme j'ai utilisé un bout de code provenant du Web, ça fonctionne.

Il me reste à remettre tes préférences.

Joseph

Bonjour Joseph,

Merci de m'aider c'est super !! J'ai pas arrêté de chercher sur le net mais je n'ai rien trouvé ou du moins je n'ai pas réussi à l'adapter convenablement

Si tu peux me joindre ta source je serai curieux d'une part de voir pourquoi je n'ai pas réussi à adapter (si j'avais déjà vu la source) et d'autre part si je n'avais pas trouver cette source pourquoi

Je t'en suis fort reconnaissant, à bientôt

Kitesurf

Bonjour Kitesurf, bonjour le forum,

J'ai ajouté UserForm_Initialize pour que le curseur se place dans le textbox automatiquement.

Je te laisse tricoter le "fine touch", comme disent les anglais.

Private Sub UserForm_Initialize()
    Me.TextBox1.SetFocus
End Sub

Private Sub CommandButton2_Click()
Dim L As Single, T As Single, H As Single, W As Single
Dim Shp As Shape
Dim NouvelPage As String  '' petit changement ici

If TextBox1.Text = "" Then
    MsgBox "Please Select a Product", vbExclamation, "Message Erreur"
Else
    ActiveSheet.Unprotect ("1995")
    With Worksheets("Main Sheet")
        Set Shp = .Shapes.AddShape(msoShapeRoundedRectangle, 525, 45, 89.5, 24.5)
        With Shp
'            .Fill.ForeColor.RGB = RGB(204, 255, 204)
'            .Line.ForeColor.RGB = RGB(0, 0, 0)
            .Name = "Forme"
            .TextFrame.Characters.Text = Me.TextBox1
            .TextFrame.HorizontalAlignment = xlHAlignLeft
            .TextFrame.Characters.Font.ColorIndex = xlAutomatic
            .TextFrame.Characters.Font.FontStyle = "Bold"
            .TextFrame.VerticalAlignment = xlVAlignCenter
            .TextFrame.HorizontalAlignment = xlHAlignCenter
            .Locked = True
        End With
    End With

        'Paramètre Texte
    With Selection.Font
        .Name = "Calibri" '<-- police
        .Size = 12 '<-- taille
        .Bold = True '<-- mise en gras
    End With

    Sheets("PATTERN").Copy After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = TextBox1

    NouvelPage = "'" & Me.TextBox1 & "'!A1"    '' petit changement ici > les deux lignes
    Worksheets("Main Sheet").Hyperlinks.Add Anchor:=Shp, Address:="", SubAddress:=NouvelPage, ScreenTip:=" Page " & Me.TextBox1

    Unload Me

    Sheets("Main Sheet").Select

        'Unhide shape new product (Done with Record Macro)
    ActiveSheet.Shapes.Range(Array("Horizontal Scroll 96")).Select
'    ActiveSheet.Shapes.Range(Array("Group 104")).Visible = msoTrue
    Application.CommandBars("Selection").Visible = False

'    ActiveSheet.Protect ("1995")

End If
End Sub

Joseph

Re-bonjour Joseph,

Merci pour les ajouts c'est top !

Mais malheureusement cette solution ne fonctionne pas Le lien se créer mais sur l'onglet "Pattern" et non sur le dernier onglet créer correspondant à la forme... Et comme je l'ai évoqué j'aimerai que cet ajout de lien se place dans la partie Module "Finish". Je m'explique,

Je créer une nouvelle production :

- Apparition d'une forme à un endroit précis de la feuille principale et d'un onglet correspondant. Ça ok j'ai fais

(Sur ce fichier on ne le voit pas mais sur le réel, une boite apparaît avec la forme dedans, à coter de la forme se situe deux boutons (Move & Finish)

- L'utilisateur appui sur un bouton "Move" pour ranger sa forme à une certaine partie de la feuille (pas visible ici car confidentiel) Ça ok j'ai fais => Move permet de déprotéger la feuille il peut déplacer sa forme

- Une fois ranger il appui sur le bouton finish => création du lien hypertexte + verrouillage de la feuille et disparition de la "boite" de contrôle. Là il me manque la création du lien hypertexte de la forme créer à l'onglet créer...

=>> Le problème ici est que si l'on fait intervenir la mise en place du lien hypertexte dans le userform et pas dans le module "finish" on ne peut plus la bouger, dès que l'on clique dessus on arrive sur le lien hypertexte (même après avoir appuyé sur Move)

Je sais c'est assez complexe si tu n'as pas très bien compris ma demande je peux reformuler

Merci

Kitesurf

Bonjour Kitesurf, bonjour le forum,

Désolé de l'oubli du lien sur le nom de l'onglet créé.

C'est un peu de cela quand je parlais de "Fine touch"

J'ai modifié le code de mon post précédent ... c'est testé et fonctionnel! Même le texte de l'infobulle du shape suit.

Le seul hic!, qu'il reste, est la longueur du shape si tu tapes un nom long dans le TextBox.

Mais je crois que tu pourras maîtriser ce point. Sinon, je te donnerais un coup de main.

Joseph

Re-bonjour Joseph,

Arf pas de soucis Ca m'aide déjà vachement bien, pas de soucis pour le nom j'ai fais pour que tous les noms s'adaptent dans la forme prédéfinie :p

Bon je vais essayer de me creuser la tête demain matin...... et après-midi Pour pouvoir avoir la création du lien hypertexte après le click sur finish. J'ai essayer 2/3 bricoles sans parvenir à quelque chose ce soir, demain est un autre jour

Merci pour tout Joseph, je t'en suis reconnaissant ! Tu m'as fais avancé dans ma galère. Je te tiens au courant sur mon avancée.

Kitesurf

Bonjour Kitesurf, bonjour le forum,

Pour le Groupe 104, la ligne est désactivée au bas de mon code, car j'avais supprimé le shape par mégarde et ça me donnait une erreur.

' ActiveSheet.Shapes.Range(Array("Group 104")).Visible = msoTrue

J'ai repris ton fichier d'origine et le Groupe 104 s'insère bien par dessus (ou autour) du nouveau bouton (shape) créé.

Je ne sais pas encore à quoi sert Groupe 104, car le bouton a déjà l'hyperlien activé avant de cliquer sur Finish.

Le bouton Move n'est pas actif. Il n'a pas encore de code lié.

Joseph

Bonjour Joseph,

Oui j'avais juste rectifié ducoup ! Voila comme tu l'as dis c'est la "boite" autour de la nouvelle shape creee.

Le bouton Move permet de déplacer la shape dans un endroit voulu de la feuille (Unprotect sheet + Hypertexte pas encore fait) comme ca on peut déplacer la forme comme on le veut, sinon les nouvelles prod se superposent toujours au même endroit.

Le bouton finish permet l'ajout du lien hypertexte et la protection de la feuille, une fois la shape déplacée.

C'est pourquoi j'aimerai mettre l'ajout du lien hypertexte lorsque j'appuie sur le bouton Finish, sinon pour déplacer la shape quand je suis en mode "Move" je dois passer par un clic droit sinon ca m'emmène directement sur l'onglet, alors que je souhaite juste déplacer la forme à cet instant.

Ma difficulté maintenant c'est de passer la ligne d'ajout hyperlien dans le module finish (car il y a des variables)

Kitesurf

C'est re-moi

J'avais un problème avec la police (pas moyen de la modifier) j'ai rectifié :

        'Paramètre Texte
        Shp.Select

With Selection.Font

        .Size = 12
        .Color = RGB(255, 255, 255)
        .Name = "Calibri"
        .Bold = True

    End With

Kitesurf

Re,

J'ai reussi a faire ce que je voulais mais pas à attribuer une variable correctement à ma forme pour la réutiliser pour faire le lien hypertexte, je re ouvre un post car c'est la regle ici

Merci Joseph encore !!

Bonjour Kitesurf, bonjour le forum,

Tiens, c'est fonctionnel.

Dans le Module1, j'ai ajouté des variables publiques.

J'ai modifié le code du UserForm, entre autres pour nommer les shapes = Forme & Me.textbox1, car on ne peut pas avoir 2 shapes avec le même nom dans la même feuille.

Tant que tu n'as pas cliqué sur Finish, le lien hypertexte n'est pas actif. Après oui, ça fonctionne bien.

Au besoin de tests, j'ai désactivé certaines lignes ActiveSheet.Protect. Elles seront à réactiver au goût.

Il restera le déplacement (ou classement) des shapes (boutons) à l'aide de Move.

Ne sachant pas comment tu veux placer les shapes (boutons) dans la feuille Main Sheet, je te laisse ce bout là.

Je peux aider au besoin ... c'est amusant

Joseph

Re Joseph

Malheureusement ce n'est pas la bonne solution Je l'ai testée un peu plus tôt... Elle te creer une deuxieme forme derrière celle que tu as au préalable creer avec le userform, donc de ce fait lorsque tu déplace la forme

C'est horrible, ce que je voudrais cest définir ma Var de forme, dans le userform attribuer ma Var a la forme tout juste créée. Puis donner l'adresse de "Anchor" a ma Var.. Mais rien n'y fait

Je continue à creuser de mon coter

Bonjour Kitesurf, bonjour le forum,

Là, je n'ai rien compris

Est-ce que tu veux dire qu'en déplaçant la forme Groupe 104, que la forme bleue nouvellement créée suive comme si c'était la même jusqu'au moment où on clique sur Finish ?

Joseph

Re Jospeh,

Après vérification c'était moi qui me trompait oulalala il est temps de quitter Excel !!

Voila ce qui me manquait quand je declarais mes variables :

With Worksheets("Main Sheet")

End With

Juste de preciser With et end with

Tout fonctionne très bien ! Bon merci, je saurai la prochaine fois j'aurai pu chercher des heures ... Mais pourquoi doit on passer par With enfait (Je debute en VBA je connais pas encore tout) ?

Merci Joseph tu me sauves d'une crise de nerf

Kitesurf

Bonjour Kitesurf, bonjour le forum,

On passe par With .... end with, très souvent pour alléger le code et en faciliter la lecture, au lieu d'écrire à chaque ligne

Worksheets("Main Sheet").blabla

Worksheets("Main Sheet").coucou

Worksheets("Main Sheet").ohla

Worksheets("Main Sheet").name

Il y a sûrement d'autres raisons. Là, il nous faudrait MFerrand, le grand gourou du cercle des grands gourous, pour nous expliquer tous les cas de figure.

Moi je ne suis bien ignare. Je n'ai aucune formation autre que celle empirique et pas de mémoire. Je dois chercher à nouveau à chaque fois qu'il y a un délais de plus de trois minutes.

Joseph

Bonjour Joseph,

Dacc merci

Oui j'ai pu voir qu'il était très bon

A la prochaine.

Kitesurf

Rechercher des sujets similaires à "hyperlink pointe onglet meme nom que shape txtbox"