Liens hypertexte entre cellules + enregistrer des données entre 2 cellules
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 !!!
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