Liens hypertexte entre cellules + enregistrer des données entre 2 cellules

2testpbexcel.xlsx (18.98 Ko)

Bonjour à tous,

Je me retrouve face à 3 problèmes qui m'empêchent d'avoir le rendu que je souhaiterais obtenir. Il s'agit de faire des liens entre cellules dont une qui est un menu déroulant, d'incrémenter des nouvelles données en fonction d'un choix de menu déroulant, je vous explique tout quand le document excel joint je pense que ce sera plus clair. Je vous remercie d'avance pour votre précieuse aide

Elo

Bonjour Elo !

Pour ton problème n°1, je te propose la macro suivante (à coller dans un module)

Sub Créer_cases_avec_lien()
Dim selectionC As Range
Dim ligneselectionC As Integer
Dim colonneselectionC As Integer
Dim nom As String

 Worksheets("BASE").Activate
For Each selectionC In Range("A:A")

If selectionC <> "" Then
ligneselectionC = selectionC.Row
colonneselectionC = selectionC.Column
nom = Cells(ligneselectionC, colonneselectionC + 1).Value
' 50 et 15 définissent largeur et hauteur
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 15, 50, 15).Select
With Selection
.Top = Cells(ligneselectionC, colonneselectionC).Top
.Left = Cells(ligneselectionC, colonneselectionC).Left
.Characters.Text = nom
.Interior.Color = RGB(75, 172, 198)
.Name = selectionC.Value
.OnAction = "'clic_box " & Chr(34) & nom & Chr(34) & "'"

End With
End If
Next selectionC

End Sub

Sub clic_box(nom As String)

Worksheets("infographie").Activate
Range("B2") = nom

End Sub

Pour les questions suivantes, il faudrait savoir sous quelle forme tu vas enregistrer tes données

Bonjour ZeChris,

Tu es un génie !!! ça marche parfaitement et c'est exactement ce que je voulais comme rendu, je suis bluffée et vais mettre ton code sous scellé dans un coffre fort !! Reste à ma responsabilité de ne pas tout faire cafouiller quand je vais le transposer sur mon vrai tableau. Comme je m'y connais pas en VBA, pourrais-tu me dire à quoi correspond la largeur et la hauteur de 50 et 15 ? Si je ne m'abuse, si je change la place de la cellule de destination, il faudra que j'adapte cette ligne : Range("B2") = nom, c'est bien ça?

Pour les questions suivantes, mes données seront enregistrées sous format texte. Comme mes cellules ne font référence à aucun tableau préexistant, j'imagine que le problème viens de là. Le mieux serait de faire un code avec bouton qui pour tout nouvel enregistrement dans la feuille infographie les données s'implémentent directement dans la feuille `Base. En fait, je ne voulais pas faire de va et viens inutile entre les feuilles base et infographie et enregistrer des informations directement depuis la feuille infographie en fonction du nom sélectionné en B2

Merci infiniment de ton aide et d'avoir passé du temps sur mon problème

Avec plaisir. Merci pour ton retour, cela fait très plaisir. Je suis très content que ma solution te convienne. Je t'invite à voter pour elle si tu veux bien.

La largeur et la hauteur correspondent aux cases que je crée.

J'ai pas trop expliqué de ma macro, désolé. Je vais la reposter avec un peu plus d'explications.

Pour la suite, je pense avoir à peu près cerné ton besoin, je te poste une proposition dans la soirée

Allez, revoila mon code avec quelques explications. Je reconnais que quand on n'y connait rien, c'est pas trop évident

'Créer cases avec lien et Clic box sont à mettre dans un module

Sub Créer_cases_avec_lien()
Dim selectionC As Range
Dim ligneselectionC As Integer
Dim colonneselectionC As Integer
Dim nom As String

' j'ouvre la feuille "Base"
Worksheets("BASE").Activate
' pour chaque case de la colonne A
For Each selectionC In Range("A:A")
' si elle n'est pas vide alors
If selectionC <> "" Then
' mes variables ligneselectionC et colonneselectionC correspondent 
' aux lignes et colonnes de ma case selectionC
ligneselectionC = selectionC.Row
colonneselectionC = selectionC.Column
' ma variable nom correpond à ce qu'il y a écrit la case à droite de selectionC
' (même ligne, numéro de colonne +1 : en VBA on inverse numéro de ligne et numéro de colonne)
nom = Cells(ligneselectionC, colonneselectionC + 1).Value
' je crée un rectangle : 50 et 15 définissent largeur et hauteur
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 15, 50, 15).Select
' ce rectangle :
With Selection
' je place sa partie haute en haut de la cellule selectionC
.Top = Cells(ligneselectionC, colonneselectionC).Top
' je place sa partie gauche à gauche de la cellule selectionC
.Left = Cells(ligneselectionC, colonneselectionC).Left
' le texte qui s'affiche est la variable "nom" (que j'ai récupérée plus haut dans mon code)
.Characters.Text = nom
' je défini sa couleur avec un code RGB
.Interior.Color = RGB(75, 172, 198)
' et son nom
.Name = selectionC.Value
' enfin quand je clique dessus, j'envoie à ma fontion "cli box" la variable "nom"
.OnAction = "'clic_box " & Chr(34) & nom & Chr(34) & "'"

End With
End If
' et je passe à la prochaine cellule
Next selectionC

End Sub

 ' ma fontion clic box récupère la valeur "nom"
Sub clic_box(nom As String)
'elle ouvre la feuille infographie 
Worksheets("infographie").Activate
' et colle la variable "nom" en case B2
Range("B2") = nom

End Sub

je te propose ce fichier, tu me diras si c'est ce que tu recherche.

Bonne soirée !

Salut ZeChris,

C'est parfait, merci infiniment pour avoir pris le temps de tout détailler, je pourrais ainsi le reproduire en comprenant un peu mieux ce que je fais.

Pour le 2ème problème l'idée était que je puisse enregistrer sans repasser par la feuille base, donc c'est nikel encore une fois ça marche à la perfection, merci beaucoup!

Je vais profiter encore un peu de ton expertise :

J'ai vu que je pouvais insérer un objet texte microsoft word ( insérer > texte > objet > document microsoft word) et quand je clique dessus un document word s'ouvre. Je trouve ça plutôt pratique car mes collègues à l'origine écrivaient les informations des élèves dans un document word, enregistré par élève. J'imagine que tu devine la suite ! : a l'image de ton bouton enregistrer, penses-tu que l'on puisse enregistrer un objet document word par nom d'élève en B2 sur la feuille infographie et quand on sélectionne un autre élève, un objet document word vierge s'affiche ?

Si tu n'a pas le temps ce n'est pas grave avec ce que tu m'a proposé j'ai déjà de quoi faire un super doc !!

Merci bonne journée !

Bonjour

Merci pour ton retour qui fait très plaisir. J'ai déjà fait un truc qui ressemble un peu à ça.

J'avais préparé un doc qui pouvait s'exporter en PDF. En Word, je suis pas sûr que ça marche.

Aujourd'hui et demain je suis pris, mais j'essaye de te répondre assez vite.

Super merci pour tout

Allez, j'ai eu un peu de temps finalement ce soir.

je te propose ceci, un onglet que tu façonne comme tu veux, tu y implémente tes infos, et hop tu l'exporte en PDF.

Désolé, je sais pas faire d'export vers Word. Tu me diras ce que tu en pense.

Salut Zechris,

Je culpabilise de te faire travailler si tard !!!La proposition que tu m'a envoyée est super intéressante dans le sens où ça me faire réfléchir à d'autres façon de faire, en plus je peux voir tes codes et eventuellement les réadapter à mon fichier d'origine, après tout c'est très bien aussi un PDF.

Faut que je potasse tout ça mais je pense avoir, grâce à toi, beaucoup d'éléments pour faire un chouette document. Si j'ai d'autres questions je n'hésiterais pas à faire appel à nouveau à tes compétences !!

Bonne journée et merci encore de ton aide précieuse

Encore une fois merci pour ton retour, ça fait plaisir de voir que mon travail a été apprécié.

Sinon, t'inquiète, j'ai des horaires de travail très décousus, du coup j'ai du temps libre tard le soir.

N'hésite pas à revenir vers moi si tu as des questions (et à m'envoyer un message privé si tu vois que je réponds pas sur ce sujet).

Bonne soirée

Rechercher des sujets similaires à "liens hypertexte entre enregistrer donnees"