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 :

Lien depuis une cellule vers une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Points : 37
    Points
    37
    Par défaut Lien depuis une cellule vers une macro
    Bonjour à tous.

    Comment faire un lien depuis une cellule vers une macro ?

    Voilà mon problème :

    Je veux que, dans une colonne donnée, il n'y ait que 2 valeurs possibles : A transmettre; Déjà transmis. J'ai donc réglé ce problème avec Données, Validation pour obtenir une liste déroulante automatique sur mes cellules.

    Quand c'est "à transmettre" qui est dans la cellule, c'est affiché en rouge et en gras, sinon quand c'est "déjà transmis", c'est en normal et en vert. Ce problème, je l'ai réglé avec une mise en forme conditionnelle toute simple.




    Néanmoins, le gros du problème c'est pour changer cette valeur (A transmettre;Déjà transmis).



    La manip est la suivante, avec Données Validation :

    1. Clic sur la cellule à modifier
    2. Attente de l'apparition du curseur de liste sur le côté de la cellule (quelques centièmes de secondes, mais c'est quand même de l'attente !)
    3. Clic sur le curseur de liste
    4. Déroulement de la liste contenant A transmettre, Déjà transmis
    5. Clic sur l'option voulue
    Fin : la valeur de la cellule est changée

    Mon but c'est de modifier cette manip pour n'obtenir plus qu'une seule étape :
    1. Clic sur la cellule à modifier
    Fin : la valeur de la cellule est changée.

    J'ai donc fait une macro qui change le contenu avec un If, tout simple. Mon but est donc de créer un lien hypertexte vers cette macro, sur la cellule.

    Savez-vous comment faire, ou sinon, comment faire autrement pour obtenir mon résultat ?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 259
    Points : 337
    Points
    337
    Par défaut
    Bonjour 512banque,
    tu peux mettre ce code dans l'évènement de feuille (clic droit sur onglet/visualiser le code, et y coller ce qui suit)

    dès le double-clic dans la cellule, la valeur change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Range("E1:E100"), Target) Is Nothing Then 'zone à adapter
        Target = IIf(Target = "A transmettre", "Déjà transmis", "A transmettre")
        Cancel = True
    End If
    End Sub
    De plus, si tes cellules ("E1:E10") sont formatées identiquement, si la cellule est vide, la valeur sera automatiquement "A transmettre" par double-clic

  3. #3
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    En utilisant l'évenement selectionchange

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        If Target.Value = "Choix 1" Then
            Target.Value = "Choix 2"
        Else
            Target.Value = "Choix 1"
        End If
     
    End If
     
    End Sub

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    Merci pour vos réponses rapides

    jfontaine, est-ce que cela signifie qu'il faut que je crée une macro pour chaque cellule pour laquelle je veux fonctionner ainsi ? Le seul pb également c'est qu'il faut que je sorte de la cellule puis que j'y revienne..

    mapeh, ça marche nickel avec le double clic, mais existe-t-il un moyen pour sélectionner le rang en entier plutôt que d'avoir à adapter la zone ?

    Merci encore.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 259
    Points : 337
    Points
    337
    Par défaut
    Re-,
    dans zone à adapter, tu peux évidemment sélectionner toute la colonne

    remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Range("E1:E100"), Target) Is Nothing Then
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Columns("E:E"), Target) Is Nothing Then

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Points : 37
    Points
    37
    Par défaut merci
    magnifique, je suis comblé

    Merci encore

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

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Pb copier une valeur d'une textbox vers une cellule
    Par whykiki dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2007, 11h49
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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