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 :

Appel d'une macro VBA directement d'une cellule [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Appel d'une macro VBA directement d'une cellule
    Bonsoir,

    Je cherche à appeler une macro directement d'une cellule, est-ce possible?

    Merci de vos lumières

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Pas clair, un peu plus de précisions.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    J'ai un fichier extrait d'une base de donnée (60000 lignes).
    Il me faut faire un calcul complexe sur toutes ces lignes dans une nouvelle colonne (calcul existant dans un macro).
    Je veux donc insérer un colonne avec pour chaque ligne un appel à cette macro.
    En option : si je pouvais envoyer des paramètres ce serait encore mieux.
    J'espère avoir été plus claire.
    merci

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Sans ton code, ça sera difficile de deviner

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    J'ai une macro principale qui me fait ma mise en page, mes tri, mes Filtres et insertion de colonne de calcul.
    Le macro qui suit ne peut-être directement écrite dans une cellule, je comptais insérer une colonne "E" et mettre un appel de cette macro et copier cette appel sur toute les lignes.
    En option : transformer ma macro en fonction et envoyer les valeurs des 2 colonnes précédentes.
    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 VPA()
     
    Dim Resultat As Long
    Dim lpFort As Long, lpFaible As Long
     
    lpFaible = Ranger("C2")                'C2 = -7842
    lpFaible = lpFaible And 65535
     
    lpFort = shr(Ranger("D2"), 16)       'D2 = 18861
     
    Resultat = lpFort Or lpFaible          
    Range("E2").FormulaR1C1 = Resultat         '=> E2=1236132190
     
    End Sub
     
     
    Public Function shr(ByVal Value As Long, Shift Value As Byte) As Long
        shr = Value
        If Shift > 0 Then
             shr = Int (shr * (2 ^ Shift))
        End If
    End Function
    Merci

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Par exemple (j'ai pris en paramètre les cellules de la colonne C)
    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
    Sub VPA(Rng As Range)
    Dim Resultat As Long
    Dim lpFort As Long, lpFaible As Long
     
    lpFaible = Rng.Value 'C2 = -7842
    lpFaible = lpFaible And 65535
     
    lpFort = shr(Rng.Offset(0, 1).Value, 16) 'D2 = 18861
     
    Resultat = lpFort Or lpFaible
    Rng.Offset(0, 2).Value = Resultat '=> E2=1236132190
     
    End Sub
     
    Sub test()
    Dim c As Range
     
    For Each c In Range("C2:C100")
       Call VPA(c)
    Next c
    End Sub

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Super,
    J'ai juste corrigé l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rng.Offset(0, 2).Value = Resultat '=> E2=1236132190
    Hormis cela c'est exactement ce que je voulais.
    Merci mercatog

    Bonne nuit

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Effectivement, une coquille du copier/ coller
    Corrigée

    Bonne nuit

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

Discussions similaires

  1. [Toutes versions] Passer la main à une macro VBA à partir d'une macro Excel4
    Par AgentF13 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/04/2014, 23h19
  2. [XL-2010] Création d'une macro événement feuille depuis une macro VBA
    Par phoenellion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2013, 12h57
  3. Comment se connecter à une base Oracle à partir d'une macro VBA?
    Par spaukensen dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/10/2008, 12h15
  4. [VBA-E]demarrer une macro a partir d'une certaine date
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/01/2007, 21h35
  5. [VBA-E]Lancer une macro sur changement de valeur cellule ?
    Par jeremiegrenoble dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2006, 14h22

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