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 dans un public sub


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut Macro dans un public sub
    Rebonjour,

    j'ai un pti soucis avec un Public Sub.
    En fait dans ce dernier j'ai 10 macros qui s'exécutent l'une après l'autre.
    Seulement mon soucis se situe dans la première macro:
    je vous explique:

    cette macro que je vais appeler lili doit vérifier certaine conditions en l'occurrence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if range("a1").value < range("b1").value then msgbox("erreur")
    if range("a1").value < range("b2").value then msgbox("erreur")
    if range("a2").value < range("b1").value then msgbox("erreur")
    if range("a2").value < range("b2").value then msgbox("erreur")
    if range("a2").value < range("a1").value then msgbox("erreur")
    if range("b2").value < range("b1").value then msgbox("erreur")
    if au moins une des cellules est Empty then msgbox("erreur")
    Sachant qu'à chaque msg d'erreur il faut arrêter l'exécution des macros suivantes dans le public sub. (il fo donc un )

    En gros tant que l'une des conditions au moins citées ci dessus n'est pas vérifiée le public sub ne s'éxécute pas.

    pouvez vous améliorez cette macro?

    Un coup de main serait souhaitable de votre part
    d'avance merci

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Tu declares ta premiere macro en tant que fonction renvoyant un boolean
    False si il y a une erreur, true si c'est ok

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    function macro1
     
    if range("a1").value < range("b1").value then
          macro1=false
          exit sub
    end if 
    if range("a1").value < range("b2").value then
          macro1=false
          exit sub
    end if 
    if range("a2").value < range("b1").value then 
          macro1=false
          exit sub
    end if 
    if range("a2").value < range("b2").value then 
          macro1=false
          exit sub
    end if 
    if range("a2").value < range("a1").value then
          macro1=false
          exit sub
    end if 
    if range("b2").value < range("b1").value then
          macro1=false
          exit sub
    end if 
    if au moins une des cellules est Empty then 
          macro1=false
          exit sub
    end if 
     
    macro1=true
     
    end function


    et dans l'appel de tes macros tu fais quelque chose comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim test As Boolean
     
    test = Macro1
     
    If test = True Then
     
        macro2
        macro3
        macro4
     
    End If

  3. #3
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Merci jérôme pour la pertinence de tes réponses même si j'ai pas encore vérifier si ça marche.

    comment fait-on pour écrire cette condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if au moins une des cellules est Empty
    Merci bcp
    on apprend des choses;

    Autre chose à ma connaissance, les ne sont pas permises dans les

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    j'ai validé trop vite. En effet c'est exit function qu'il faut mettre

    pour les empty tu fais comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if range("a1").value < range("b1").value or range("a1").value ="" then
          macro1=false
          exit sub
    end if

  5. #5
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    Moi ce que je n'aime pas trop c'est
    Citation Envoyé par casavba
    pouvez vous améliorez cette macro?
    ca me donne l'impression d'un "VOus pouvez bosser pour moi ?"

    mais bon je planche dessus tout de même

  6. #6
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Merci jérôme

    C vrai mordrhim je me suis mal exprimé;
    je corrige:

    Pouvez_vous SVP m'aider à améliorer cette macro?

    encore DSL.

    ça te va comme ça.

  7. #7
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    SVP; quelqu'un sait comment écrire cette condition:

    si au moins une cellule de la plage A1:B2 est vide then erreur.

    J'ai fait ce code mais le pbm c que je veux qu'un seul msgbox une fois qu'une cellule(ou deux ou trois voire 4) est vide et non 1(ou 2 ou 3ou 4) msgbox.
    Donc je crois pas qu'il faut utiliser for each.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub ggg()
    Dim C As Range
    For Each C In Range("A1:B2")
    If C.Value = "" Then MsgBox ("err")
    Next C
    End Sub

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    oui, le système est bon, juste qu'une cellule vide ne donne pas d'erreur, et que tu peu ajouter...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If C.Value = "" Then MsgBox ("Il y a une cellule vide dans la plage") : exit sub
    A+

  9. #9
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Merci, jérôme et leforestier

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

Discussions similaires

  1. [AC-2013] remplacer le nom d'un formulaire par une variable dans un Public Sub
    Par GuyDuLac dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2014, 17h23
  2. Utilisation de recordset dans une Public Sub
    Par Tintou dans le forum Access
    Réponses: 6
    Dernier message: 07/08/2007, 17h08
  3. Réponses: 2
    Dernier message: 07/08/2007, 09h35
  4. Réponses: 12
    Dernier message: 01/03/2007, 11h07
  5. Macro dans excel permettant de voir si un fichier est ouvert
    Par VirginieGE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2004, 07h51

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