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 :

Lancement de macro depuis une variable "non réinitialisable"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2023
    Messages : 2
    Par défaut Lancement de macro depuis une variable "non réinitialisable"
    Bonjour

    Je voudrais lancer à partir d'une macro principale des petites macros externes si et seulement une cellule correspondante est cochée.
    (Dans Excel, il y a une colonne mentionnant les noms de macros et une colonne avec des cellules à cocher par un x).
    Or cette macro en VBA Excel 2019 ne fonctionne que pour lancer la première macro (validée par la coche x) mais ne permet en aucun cas de lancer les macro suivantes. Comme si la variable nommacro ne peut etre réinitialisée !!
    Si vous avez une solution? je vous en remercie grandement, Cordialement,


    Sub lancemacro()
    Dim nommacro As String

    For l = 26 To 34
    nommacro = Cells(l, 11).Text
    If Cells(t, 10).Value = "x" Then Application.Run nommacro
    Next l

    Range("a1").Select
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour
    j'ai essayé ceci , en mettant les données dans les premières lignes et colonnes de la feuille Excel, ca fonctionne.

    Bonne Journée.


    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
    Sub lancemacro()
    Dim nommacro As String
    For l = 1 To 4
    nommacro = Cells(l, 2).Text
    If Cells(l, 1).Value = "x" Then Application.Run nommacro
    Next l
    Range("a1").Select
    End Sub
    Sub macro1()
    MsgBox "macr01"
    End Sub
    Sub macro2()
    MsgBox "macr02"
    End Sub
    Sub macro3()
    MsgBox "macr03"
    End Sub
    Sub macro4()
    MsgBox "macr04"
    End Sub

  3. #3
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    le pb était là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For l = 26 To 34
    nommacro = Cells(l, 11).Text
    If Cells(t, 10).Value = "x" Then Application.Run nommacro
    Next l
    Donc :
    1. ajoute en tête de module un option explicit et déclare toutes tes variables
    2. utilise des noms un peu plus longs pour y voir plus clair...


  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2023
    Messages : 2
    Par défaut
    Merci. Cela fonctionne.
    (cela ne vient pas de l'erreur de variable l,t car j'avais simplifié la macro avant de la posté (et certainement fait une erreur entre temps). Car en fait je tronque une partie du texte de la cellule pour récupérer le nom de macro.)
    J'ai refais les tests dans ma macro principale avec la troncature de texte pour récupérer le nom exact de la macro et cela fonctionne bien.
    Désolé de mon post, je ne sais pourquoi.

    Par contre quand je lance la macro principale pas à pas (F8), je vois l'affichage de la valeur de la variable nommacro seulement à sa première définition.
    Apres une itération de la boucle, l'affichage ne se fait plus et affiche rien quand je passe la souris sur Nommacro.

    Est-ce peut-être du fait que j'ai rajouté dernièrement
    Application.Calculation = xlCalculationManual
    pour que la macro aille plus rapidement.
    Je ne sais

    Merci pour vos interventions (a-diard, tete de chat), désolé
    vincent

  5. #5
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Re

    Apres une itération de la boucle, l'affichage ne se fait plus et affiche rien quand je passe la souris sur Nommacro.
    Je ne sais
    Peut-être aussi que que pendant l'appel de la macro il s'est passé des choses.
    n'oublie pas que est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Cells(l, 1).Value
    Si entre temps tu as ouvert un classeur, activé une feuille... la feuille active a pu changer.
    Remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkBook.Sheets("Feuil1").Cells(l, 1).Value
    où Feuil1 est le nom de ta feuille...

Discussions similaires

  1. executer des macros depuis une macro
    Par lolo93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2008, 10h29
  2. VBA : ouvrir une macro depuis une autre BDD
    Par crovette51101 dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/05/2007, 08h09
  3. Ecrire du texte depuis une variable dans une vue
    Par Vlad_Oliv dans le forum MFC
    Réponses: 1
    Dernier message: 09/01/2007, 17h28
  4. [HTML] boucle sur une variable et non pas un tableau
    Par delma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/11/2006, 15h03
  5. [VBA-E] Appel de fonction/procédure depuis une variable
    Par truman dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/05/2006, 16h20

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