Lancer action sur simple clic

Yopub

XLDnaute Junior
Bonjour le forum
Fort des réponses apportées il y a peu, je continue mon premier programme sérieux.
Je bloque sur un nouveau point. Tant sur la technique que sur la compréhension du fonctionnement.
Je voudrais activer une feuille à partir d'une cellule précise.
La condition étant que le contenu (Agent1) de la cellule (B4) correspond au nom de la feuille.
J'en suis là actuellement, car je suppose qu'il faut introduire une variable :

Private Sub Worksheet_Activate()
Dim Agent1 As String
Agent1 = ActiveSheet.Range(B, 4).Value
If Not Intersect(Target, Range(B, 4)) Is Nothing Then
Sheets(Agent1).Activate
End If
End Sub

Évidemment cela ne fonctionne pas (erreur 1004). En plus je ne comprend pas le "If not intersect".
:confused: Peut-on m'expliquer ?

Cela réparé et compris, j'aimerai étendre ce principe à plusieurs cellules dont le contenu correspond à chaque fois au nom d'une feuille.
:confused:Suffit-il de faire un copier/coller de la première macro, en adaptant la référence de la cellule et en nommant une nouvelle variable "Agent2" par exemple ?

Pour l'instant j'ai opté pour un simple clic -Private Sub Worksheet_Activate()-
:confused:Si je décide de lancer la macro sur un double clic, puis-je seulement modifier la 1ère ligne sans modifier le reste, avec ceci ?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

J'espère avoir été clair dans mes propos.
Sinon, dites moi ce qu'il vous manque comme info.
Merci !
 

Pierrot93

XLDnaute Barbatruc
Re : Lancer action sur simple clic

Bonjour Yopub, Michel:)

petite réflexion au passage... pourquoi utiliser du vba et une "mécanique" relativement lourde, alors que des liens hypertexte rempliraient la même fonction...

bon après midi
@+
 

JNP

XLDnaute Barbatruc
Re : Lancer action sur simple clic

Bonjour le fil :),
Plutôt d'accord avec Pierrot ;)...
Mais bon :p :
Private Sub Worksheet_Activate()
Dim Agent1 As String
Agent1 = ActiveSheet.Range(B, 4).Value
If Not Intersect(Target, Range(B, 4)) Is Nothing Then
Sheets(Agent1).Activate
End If
End Sub

Évidemment cela ne fonctionne pas (erreur 1004). En plus je ne comprend pas le "If not intersect".
:confused: Peut-on m'expliquer ?
Quand on prends des morceaux un peux partout sans les comprendre, ça ne peux guère marcher :rolleyes:...
Code:
Private Sub Worksheet_Activate()
est une procédure qui se déclenche à l'activation de la feuille et qui ne "passe" au code aucune donnée :rolleyes:...
Code:
If Not Intersect(Target, Range(B, 4)) Is Nothing Then
Target est issu d'un bout de code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ou
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
qui respectivement, attribue à Target la cellule qui vient d'être sélectionnée ou qui vient d'être modifiée :p...
Donc obligatoirement, ça plante :rolleyes:...
Enfin, Intersect fait l'intersection des zones de cellules, donc le code se traduirait ainsi :
Code:
Si l'intersection de Target et de B4 (sauf que la bonne syntaxe est Range("B4")...) n'est pas rien alors :
Bon courage :cool:
 

Yopub

XLDnaute Junior
Re : Lancer action sur simple clic

Bonjour MJ13, Pierrot93 et JNP, bonjour le forum.
Merci pour les éclairages. 5 points :
1) intersect me parle mieux maintenant,
2) j'ai noté la syntaxe avec Range et l'ai modifié, maintenant j'ai une erreur d'objet !
3) si je prends des "morceaux", c'est tout simplement que j’apprends sur le tas. Ce n'est pas pour rien que je demande autant d'explications que d'exemples. Je ne cherche pas à reproduire mais à comprendre. Mais faut bien un début !
4) Quant à la notion d'hypertexte, je n'y ai pas songé car j'ignorais que l'on pouvait s'en servir dans ce cas. Si c'est moins lourd, je prends. Comment cela fonctionne-t-il ?
5) Pour MJ13, la question du fichier est-elle liée à son emplacement pour écrire la macro, ou pour donner un exemple en pièce jointe ?
Quelque soit ces points, j'apprécie et remercie la rapidité et l'attention que vous avez portés à mes questions.
 

Yopub

XLDnaute Junior
Re : Lancer action sur simple clic

Je fus trop prompt à la réponse du point 4 sur le lien hypertexte. Je viens d'essayer, c'est vraiment tout simple, et je garde cela en mémoire.
Toutefois cela ne peut fonctionner dans mon cas (enfin je crois), car ce fichier est amené à perdre ses feuilles en automne. Je plaisante, mais c'est vrai !
En septembre j'efface les feuilles de l'année scolaire passée, et j'en crée de nouvelles. Ces feuilles prennent le nom des cellules de référence de la feuille de référence. C'est pourquoi le lien hypertexte ne tient plus puisque le lien a été rompu à un moment donné.
Il y a aussi la possibilité de créer des boutons transparents au-dessus des cases de référence. Mais j'ai peur que cela alourdisse trop (25 boutons en perspective).
Qu'en pensez-vous ?
 

JNP

XLDnaute Barbatruc
Re : Lancer action sur simple clic

Re :),
les liens Hypertextes peuvent aussi être construits d'une façon indirecte (un exemple ICI).
L'avantage est que, si j'ai bien compris, lorsque "tes feuilles tomberont", l'adressage indirect ne sera pas remplacé par des #REF!#, mais patientera juqu'au printemps pour être mis à jour :p...
Bonne journée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 022
Membres
104 006
dernier inscrit
CABROL