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 :

Macro au conditionnel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2017
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 55
    Par défaut Macro au conditionnel
    Aidez moi à réaliser sous Ecxel 2007 des relevés de notes scolaires à travers la formule suivante:
    =Si(ESTTEXTE(A1);Executer Macro1 en page1; Sinon Executer Macro2 en page1; Si(ESTTEXTE(A2);Executer Macro1 en page2; Sinon Executer Macro2 en page2; Si(ESTTEXTE(A3);Executer Macro1 en page3; Sinon Executer Macro2 en page3; ... Si(ESTTEXTE(A50);Executer Macro1 en page50; Sinon Executer Macro2 en page50))

    Merci d'avance

  2. #2
    Membre averti Avatar de ylemasson
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    Bonjour

    Je pense qu'un peu plus d'explications ne serait pas de trop ..

    Citation Envoyé par ancien1957 Voir le message
    Aidez moi à réaliser sous Ecxel 2007 des relevés de notes scolaires à travers la formule suivante:
    =Si(ESTTEXTE(A1);Executer Macro1 en page1; Sinon Executer Macro2 en page1; Si(ESTTEXTE(A2);Executer Macro1 en page2; Sinon Executer Macro2 en page2; Si(ESTTEXTE(A3);Executer Macro1 en page3; Sinon Executer Macro2 en page3; ... Si(ESTTEXTE(A50);Executer Macro1 en page50; Sinon Executer Macro2 en page50))

    Merci d'avance

  3. #3
    Membre actif
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2017
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 55
    Par défaut Reformulation "Macro au conditionnel"
    Je voudrais taper la formule suivante sous Excel 2007:
    =Si la cellule H1 contient du texte, alors sélectionner la cellule A1 puis exécuter la macro1 (dans la cellule A1) sinon exécuter la macro2 ; Si la cellule H2 contient du texte, alors sélectionner la cellule A2 puis exécuter la macro1 (dans la cellule A2) sinon exécuter la macro2 ; Si la cellule H3 contient du texte, alors sélectionner la cellule A3 puis exécuter la macro1 (dans la cellule A3) sinon exécuter la macro2 ; ....Si la cellule H50 contient du texte, alors sélectionner la cellule A50 puis exécuter la macro1 (dans la cellule A50) sinon exécuter la macro2 .

    Merci d'avance.

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par ancien1957 Voir le message
    Je voudrais taper la formule suivante sous Excel 2007:
    =Si la cellule H1 contient du texte, alors sélectionner la cellule A1 puis exécuter la macro1 (dans la cellule A1) sinon exécuter la macro2 ; Si la cellule H2 contient du texte, alors sélectionner la cellule A2 puis exécuter la macro1 (dans la cellule A2) sinon exécuter la macro2 ; Si la cellule H3 contient du texte, alors sélectionner la cellule A3 puis exécuter la macro1 (dans la cellule A3) sinon exécuter la macro2 ; ....Si la cellule H50 contient du texte, alors sélectionner la cellule A50 puis exécuter la macro1 (dans la cellule A50) sinon exécuter la macro2 .

    Merci d'avance.
    Bonjour,

    Ton explication n'est vraiment pas claire : une macro ne peut-être lancée que par un évènement !
    Peux-tu nous donner le code VBA de la macro1 et celui de la macro2 ?
    Est-ce lors de la saisie d'un texte dans une des cellules de la colonne A que tu voudrais lancer l'exécution d'une de ces macros ?

  5. #5
    Membre actif
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2017
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 55
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,

    Ton explication n'est vraiment pas claire : une macro ne peut-être lancée que par un évènement !
    Peux-tu nous donner le code VBA de la macro1 et celui de la macro2 ?
    Est-ce lors de la saisie d'un texte dans une des cellules de la colonne A que tu voudrais lancer l'exécution d'une de ces macros ?
    Dès que je saisis du texte dans la cellule H1, il faudrait que ma macro s’exécute en A1.
    En fait, la macro1 exécute un tableau dans lequel il y a 6 colonnes et 50 lignes (avec bien sur du texte dans ce tableau) tandis que la macro2 supprime tout le tableau (Format et texte) c'est-à-dire que la page redevient vierge.

    Merci à vous.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par ancien1957 Voir le message
    Dès que je saisis du texte dans la cellule H1, il faudrait que ma macro s’exécute en A1.
    En fait, la macro1 exécute un tableau dans lequel il y a 6 colonnes et 50 lignes (avec bien sur du texte dans ce tableau) tandis que la macro2 supprime tout le tableau (Format et texte) c'est-à-dire que la page redevient vierge.

    Merci à vous.
    Toujours pas certain d'avoir compris...
    Dès que je saisis du texte dans la cellule H1, il faudrait que ma macro s’exécute en A1

    la macro1 exécute un tableau dans lequel il y a 6 colonnes et 50 lignes Ca veut dire quoi, exécuter un tableau?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ancien1957 Voir le message
    Dès que je saisis du texte dans la cellule H1
    Il faut utiliser une macro évènementielle Worksheet_Change
    https://msdn.microsoft.com/fr-fr/lib.../ff839775.aspx

    en la commençant par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Address <> "$H$1" Then Exit Sub
    Pour que le reste de la macro ne s'exécute que si c'est la cellule H1 qui a été modifiée.
    https://msdn.microsoft.com/fr-fr/lib.../ff837625.aspx

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu pourrais t'orienter vers l'évènement CHANGE de la feuille concernée, avec un SELECT CASE pour tester la cellule modifiée. De multiples exemples existent sur les forums et dans la faq

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    ...
    ...
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ancien1957 Voir le message
    =Si(ESTTEXTE(A1);Executer Macro1 en page1; Sinon Executer Macro2 en page1;
    Tu prends le problème à l'envers : ce n'est pas dans la formule qu'il faut mettre le test mais dans la macro.
    Lancer la macro quel que soit l'état de la cellule et, dans cette macro, tester l'état des cellules concernée pour lancer tel ou tel action.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il faut utiliser une macro évènementielle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Address = "$H$1" Then
     
      End If
    End Sub
    Evite les exit sub: il ne peut y avoir qu'une seule sortie de sub ou de function si tu veux éviter les ennuis.

    Ceci dit, je t'ai déjà donné la solution lundi...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ca irait plus vite d'envoyer directement tout le cahier des charges puis de laisser travailler les larbins pour rien, tant qu'on y est...

    Surtout que je ne vois plus tellement le rapport avec la question de départ.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2003] Macro Copie conditionnelle
    Par mout94 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2010, 17h26
  2. [XL-2007] Macro + forme conditionnelle
    Par chakev dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/04/2010, 17h55
  3. [XL-2003] Création Macro VBA conditionnelle
    Par choudoudou15 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2009, 13h45
  4. Macro autoexec conditionnelle
    Par mooh91 dans le forum Access
    Réponses: 4
    Dernier message: 09/05/2007, 19h49
  5. Excel - macro (format conditionnel - run-time error 1004)
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/09/2006, 19h18

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