IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Détection modification cellule après insertion lien hypertexte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 656
    Par défaut Détection modification cellule après insertion lien hypertexte
    Bonjour,

    Si dans la cellule active, je récupère un lien hypertexte, le contenu de la cellule "change" mais je n'arrive pas à le détecter !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Not Intersect(Target, Range("hypertexte")) Is Nothing Then
            With ActiveCell.Font
                .Size = 8
                .Name = "arial"
            End With
        End If
    Le problème est qu'à l'introduction d'un lien hypertexte, la police passe en taille 10 et je n'arrive pas à la faire repasser en taille 8 (dans la mise en forme conditionnelle, il semble qu'il ne soit pas possible de modifier le nom de la police de caractère ni sa taille d'où ce bout de code)

    Merci pour vos lumières,
    Cordialement,
    jpma75

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cet article t'apportera peut-être la solution Modifier la mise en forme de police pour les liens hypertexte

    Sinon, pour détecter la modification d'une valeur dans une cellule, c'est la procédure événementielle Worksheet_Change, ou encore Workbook_SheetChange et il suffit alors de créer une fonction personnalisée qui vérifie si la cellule modifiée contient un lien hypertexte.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 656
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    De mon côté, il semble que Worksheet_change ne détecte pas de changement d'état de la cellule si je fais un clic droit/lien hypertexte (et que je sélectionne un fichier ou un répertoire).
    J'ai donc ajouté ce qui suit et qui ne fonctionne pas mieux !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub worksheet_change(ByVal Target As Range)
        If Not Intersect(Target, Range("hypertexte")) Is Nothing Then
            With ActiveCell.Offset(-1, 0).Font
                .Size = 4
                .Name = "arial"
            End With
        End If
    End Sub
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        If Not Intersect(Target, Range("hypertexte")) Is Nothing Then
            With ActiveCell.Font
                .Size = 4
                .Name = "arial"
            End With
        End If
    End Sub
    Cordialement

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    il semble que Worksheet_change ne détecte pas de changement d'état de la cellule si je fais un clic droit/lien hypertexte (et que je sélectionne un fichier ou un répertoire).
    Alors, par acquit de conscience, j'ai effectué la même opération Clic droit sur une cellule quelconque de la feuille où se trouve la procédure événementielle, Lien et sélection d'un document et je te confirme que l'événement a bien été intercepté.

    Voici le code de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
      MsgBox Target.Value
    End Sub
    Je lis dans ton code Range("hypertexte"). As-tu une cellule ou une plage nommée hypertexte ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    1- Le code est-il placé dans le module de la feuille correspondante?
    2- Y a t'il un Range nommé (par le menu Formules/Gestionnaire de nom (ou Définir un nom)) "hypertexte?
    3- Que vient faire ActiveCell.Offset(-1, 0) dans la procédure Worksheet_Change?
    Ce code signifie que, par exemple, lorsque tu insères un lien hypertexte en A2, tu changes la police de A1.
    C'est ce que tu souhaites?

    Sinon, ce code, placé dans le module de la feuille (clic droit sur l'onglet de la feuille/visualiser le code), fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub worksheet_change(ByVal Target As Range)
        If Not Intersect(Target, Range("hypertexte")) Is Nothing Then
            With Target.Font
                .Size = 4
                .Name = "arial"
            End With
        End If
    End Sub

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 656
    Par défaut
    Bonjour,

    Réponse à Philippe :

    Dans le Range nommé "hypertexte" (où se trouvent différentes valeurs telles que "Doc", "Info", etc, sélectionnables par menu déroulant (validation de données) :
    - Je sélectionne une valeur > l'événement est bien détecté (sans surprise)
    - Je fais un clic droit sur une cellule vide et insère un lien hypertexte, l'évènement est bien détecté et il inscrit le nom du fichier lié (sans tenir compte des restrictions du menu déroulant... mais pas grave, c'est pour un test !)
    - Je sélectionne une valeur, par exemple "Doc", je fais un clic droit pour insérer le lien hypertexte, et ça ne détecte pas l'évènement !

    Cela confirme donc ma préoccupation,


    Réponse à Pijaku :

    1- Le code est-il placé dans le module de la feuille correspondante ?
    Oui
    2- Y a t'il un Range nommé (par le menu Formules/Gestionnaire de nom (ou Définir un nom)) "hypertexte?
    Oui
    3- Que vient faire ActiveCell.Offset(-1, 0) dans la procédure Worksheet_Change ?
    Oups, j'avais ajouté un offset pour un Range où le changement d'état de la cellule était détecté avec ENTER !
    Ce code signifie que, par exemple, lorsque tu insères un lien hypertexte en A2, tu changes la police de A1.
    C'est ce que tu souhaites?
    Oui, mais effectivement pas pour ce Range.

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/05/2016, 16h57
  2. [XL-2007] Remplissage de cellules Automatique d'aprés un Lien Hypertexte
    Par misticks dans le forum Excel
    Réponses: 5
    Dernier message: 12/10/2014, 10h50
  3. Réponses: 21
    Dernier message: 20/11/2009, 23h46
  4. [Tk] insertion lien hypertext
    Par gerald2545 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 09/01/2006, 19h48
  5. [Excel] Comment savoir si la cellule contient un lien hypertexte ?
    Par Millenod dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 16/12/2004, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo