Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2011, 21h00   #1
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 4
Points : 4
Par défaut Lien hypertexte dans cellule variable

Bonjour à tous,

Je tente de créer un bout de macro qui demande de sélectionner un fichier, puis qui extrait son chemin pour le mettre sous forme de lien hypertexte dans une cellule.

Pour l'instant j'ai :
Code :
1
2
3
4
5
6
 
Dim CheminPJ As String
Chemin = Application.GetOpenFilename
With Worksheets(1)
    .Hyperlinks.Add .Range("C38"), Chemin
End With
Et ça marche très bien.

Le problème, c'est qu'en réalité je voudrais écrire non pas dans la cellule C38, mais dans la cellule qui est un cran à coté de ma cellule active.

J'ai donc essayer :
Code :
1
2
3
4
5
 
ActiveCell.Offset(0, 1).Activate
With Worksheets(1)
    .Hyperlinks.Add .ActiveCells, Chemin
End With
Mais ça ne marche pas.
J'imagine que .Hyperlinks.Add ne fonctionne qu'avec Range, mais comment faire alors?
glc29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 21h20   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
With Worksheets(1)
    .Hyperlinks.Add ActiveCell.Offset(0,1), Chemin
End With
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 21/12/2011, 21h22   #3
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

J'utilise "Offset" pour me décaler verticalement et/ou horizontalement :

Code :
1
2
3
Dim Chemin As String
Chemin = Application.GetOpenFilename
Hyperlinks.Add ActiveCell.Offset(0, 1), Chemin 'un cran à droite de la cellule active
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2011, 22h31   #4
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 4
Points : 4
Merci,

effectivement ça fonctionne.

Cependant le lien est "invisible". Je sais qu'il est dans la cellule car le curseur devient main lors du survol.
En quand je clique dessus rien ne se passe

vous sauriez pourquoi?

au survol de la cellule, une bulle affiche l'adresse du fichier excel dans lequel on est, au lieu du fichier sélectionné
glc29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 23h12   #5
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Renseigne le paramètre "TextToDisplay" de la méthode "HyperLinks.Add"
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 09h00   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tu ne t'es pas emmêlé quelque part dans tes variables ? Dans ton premier exemple, il y a du cheminPJ et du chemin. Ça devrait marcher sinon.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h07   #7
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 4
Points : 4
Ok pour le nom de la variable et TextToDisplay.

J'ai peut-être oublié de préciser qu'en réalité cette macro se fait dans deux sub différentes.

Dans le sub d'un premier bouton j'ai
Code :
1
2
3
4
Private Sub Bp_PieceJointe_Click()
 
Dim CheminPJ As String
CheminPJ = Application.GetOpenFilename
et dans le bouton valider du formulaire, qui permet d'ecrire tous les infos dans la feuille excel, j'ai

Code :
1
2
3
With Worksheets(1)
    .Hyperlinks.Add ActiveCell.Offset(0, 1), CheminPJ, , , CheminPJ
End With
J'ai testé en mettant tout dans le premier sub, et ça marche. Mais je voudrais que si l'utilisateur appuie sur annuler dans mon formulaire, rien ne s'écrit sur la feuille. Donc je dois absolument séparer cette macro. Vous voyez ce que je veux dire?
glc29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h12   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Essaie en précisant la feuille :

Code :
1
2
3
4
5
Dim Chemin As String
Chemin = Application.GetOpenFilename
With Sheets("Feuil1")
    .Hyperlinks.Add ActiveCell.Offset(0, 1), Chemin  'un cran à droite de la cellule active
End With
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h14   #9
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tu déclares CheminPJ en variable globale
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h17   #10
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 4
Points : 4
ça ne change rien.
Par contre j'ai remarquer que quand il s'arrete à
Code :
    .Hyperlinks.Add ActiveCell.Offset(0, 1), CheminPJ, , , CheminPJ
il m'indique CheminPj=vide
Se-pourrait-il que la variable CheminPJ ne passe pas d'un sub à l'autre?
glc29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h23   #11
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
C'est ce que je te disais dans le message précédent. Une variable définie dans une sub ou une function n'est pas accessible à l'extérieur.
Tu dois faire en haut de ton userForm
Code :
Public CheminPJ As String
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2011, 10h24   #12
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Dans le code du bouton de validation, utilise le code suivant à condition que CheminPJ soit défini comme variable publique de type Variant ou passée comme paramètre :

Code :
1
2
3
4
If CheminPJ = False Then Exit Sub
With Worksheets(1)
    .Hyperlinks.Add ActiveCell.Offset(0, 1), CheminPJ, , , CheminPJ
End With
Note que "TextToDisplay" est par défaut égal à l'adresse; précise-le si tu veux un autre libellé.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h55   #13
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 4
Points : 4
heu, je n'ai jamais déclarer une variable public! Peux-tu m'indiquer comment faire s'il te plait?
Merci
glc29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h57   #14
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Mes messages ne s'affichent pas ou quoi ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 11h07   #15
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 36
Points : 4
Points : 4
Salut ZebreLoup !
Effectivement il y a ûrement eu un problème de synchonisation ou un truc de ce genre, je viens de recevoir tes messages que maintenant!

C'était bien un pb de variable public
ça marche à merveille maintenant.

Merci à tous et bonne journée
glc29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h46.


 
 
 
 
Partenaires

Hébergement Web