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 :

PB association de macro [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Par défaut PB association de macro
    Re bonjour tout le monde.

    Je me permets de revenir vers vous car il y a un point que je ne comprends pas dans le vba Excel.
    le PB:
    j'ai creer une macro qui affiche ou non un certains caractere dans la cellule A1 si il n'y a rien et inversement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Test_vide()
    If Not IsEmpty(Range("A1")) Then
        With Range("A1")
        .Range("A1") = ""
        End With
    Else: IsEmpty (Range("A1"))
        With Range("A1")
        .Range("A1") = "CD"
        End With
    End If
    End Sub
    Ensuite j'ai une macro "double-clic" qui appel une autre macro ("test_vide")lorsque je double clic sur la cellule A1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    'condition : si l'intersection de la cible et de la plage A12:A30 n'est pas vide
    'autrement dit, si le double clic se fait dans la plage A12:A30
    If Not Application.Intersect(Target, Range("A12:A30")) Is Nothing Then
    Call Creer_choix   'appelle la macro Créer_choix
    Cancel = True 'évite le mode édition lié au double clic
    End If 'fin de la condition
     
    End Sub
    Le probleme est ça ne marche pas regulierement. En effet, le probleme vient du fameux "private sub"...
    Je voudrais donc convertir cette macro en "sub" afin que je puisse mettre ces 2 macros dans n'importe quel fichier excel sans me battre a chaque fois avec les "module", worlsheet",etc.

    Ma question est donc la suivante:
    Comment faire pour que je puisse "mettre en relation ces 2 macros dans une meme "feuille1" par exemple?
    Clairement, je veux juste pouvoir ouvrir mon fichier excel/cliquer sur le bouton "Macros" (en haut a gauche) et y inserer mes deux macros pour que je puisse à l'aide du double-clic (macro "before_double_clic") activer la macro "Test_vide"...

    J'espere avoir été assez claire.
    n.b:je me doute qu'il y a un truc avec les private sub et autres, malheuresement je suis plus que novice en VBA donc je ne comprends pas ça...

    Merci d'avance pour votre aide

    Cordialement

  2. #2
    Membre confirmé
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Par défaut
    Je comprend pas trop ton problème et je trouve très bizare ces 3 lignes de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With Range("A1")
        .Range("A1")=""
    End With
    M'enfin...si tu remplace 'Private' par 'Public' ca ne marche pas?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Par défaut
    Bonjour Chipss,

    En fait je commence a peine le VBA (a vrai dire depuis ce matin...) et je me base par rapport a des exemples que j'ai dans un livre et les adaptent.

    Je peux comprendre du coup que ces 3 lignes de code ne soient pas très "jolie" disons... mais bon cela fonctionne comme ça donc pour l'instant je laisse tel quel.

    Sinon remplacer 'Private' par 'public' ne fonctionne pas...

    En fait, ce que je ne comprends pas:
    1)Je clic sur le bouton "macro" (en haut a gauche)
    2)je mets le nom de ma macro "test_vide" et la crée et valide
    3)quand je reviens dans mon onglet "macro" la macro "test_vide" est présente et je peux l'activer (d'ailleurs pourquoi se met-elle dans "module4" et non-pas dans "feuille1"?)
    4)Je reclic sur le bouton "macro" (toujours en haut à gauche)
    5)je mets le nom de la macro, la crée, et valide (avec juste sub ça ne fonctionne pas, ni avec private, ni avec public...)
    6)quand je reviens dans mon onglet "macro", elle n'apparait pas(il faut que je visualise le code de la feuille1 pour la voir).
    Ce que je voudrait, c'est qu'elle apparaisse dans l'onglet "macro" (car je pense que du coup elle pourrait appeler ma macro "Test_vide"...).

    J'espere avoir été assez clair...

    Et merci d'avance pour tes commentaires.

    Cordialement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Par défaut
    Re Bonjour Chipss !

    Bon je suis vraiment désolé mais je n'avais pas modifié la plage de cellule dans la macro "appelante".... j'ai honte dsl....

    Par contre, du coup que je mettes private sub, public sub ou juste sub cela fonctionne...bizarre je comprends pa.
    De plus, meme si cela fonctionne , pourquoi est-ce qu'elle n'apparait jamais dans mes macros?
    Enfin, pourquoi ma macro "testvaleurzero" est dans "general" et ma macro "befauredoubleclic" est dans "worksheet"?

    encore une fois desolé pour le premier coup et pour mes questions probablement "idiote" mais ça me pose veritablement probleme...

    Merci encore pour ton temps passé a m'expliquer...

    Cordialement

    n.b;je joints une piece jointe afin d'etre plus clair.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Par défaut
    Hmm beforedblclick est une gestion d'evenement, je suis pas un expert la dedans mais je crois c'est normal que ce soit dans 'Worksheet' mais bon toute facon c'est pas très important.

    Ce que je jne comprend pas ce quel est ton réel probleme? Dans ta macro Beforedblclick le Call ne march pas c'est ca?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Par défaut
    Si si maintenant ça marche! !!

    C'est jute que je ne comprend pas pourquoi c'est pas dans mes macro..mais comme tu dis c'est pas grave tant que ça marche!

    Par contre, une dernière question après promis je te laisse tranquille
    Lorsque je change la valeur de la cellule (je passe de A1 à A10 par exemple!)

    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
    17
    18
    19
    20
    21
    22
    23
    Sub Test_valeur_zero()
    If Range("A10") = 0 Then
        With Range("A10")
        .Range("A10") = 1
        End With
    Else
        Range("A10") = 1
        With Range("A10")
        .Range("A10") = 0
        End With
    End If
    End Sub
     
    Sub worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    'condition : si l'intersection de la cible et de la plage A10 n'est pas vide
    'autrement dit, si le double clic se fait dans la plage A10
    If Not Application.Intersect(Target, Range("A10")) Is Nothing Then
    Call Test_valeur_zero   'appelle la macro Créer_choix
    Cancel = True 'évite le mode édition lié au double clic
    End If 'fin de la condition
     
    End Sub
    Donc la cellule cellule qui n'est pas en mode edition au double clic est la cellule A10 (ce qui parait logique tu me diras....).
    Ce qui l'est moins, c'est que cette cellule ne change pas de valeur (ni 1 ni 0) elle reste vide..., et c'est la cellule A19 qui prend la valeur de 1 (et qui d'ailleurs ne reviens pas à 0 au second double-clic...).

    Je suis preneur si tu a une explication a ça (car en plus je dois appliquer ces 2 macro à des plage de données donc je te laisse imaginer ce que ça fais !)
    D'ailleurs ça ne fonctionne pas non plus lorsque que je l'applique sur un tableau déja fais (aucune réaction de la cellule hormis le fait que le mode edition au double clic ne fonctionne plus.....).

    Merci encore une fois pour ton aide, (meme si ça commence à etre un peu tiré par les cheveux.....).

    Cordialement

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

Discussions similaires

  1. comment associer une macro à excel ?
    Par rudboy86 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/05/2008, 12h02
  2. associer une macro à un fichier
    Par diddou14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/04/2008, 11h27
  3. problème d'association de macro a un bouton de ma commandbar
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/07/2007, 00h49
  4. [VBA Excel] Associer N macros à N boutons suite à un événement
    Par Vorillyan dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/11/2006, 09h46
  5. [VBA-E] Associer une macro à une cellule
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/04/2006, 14h50

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