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 :

message avant l'éxécution de la macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut message avant l'éxécution de la macro
    Bonjour atous ,

    j'ai une macro d'ans une userfrorm qui , crée une feuille a apartire des données d'une autre feuille, et dans mon userform , j'ai un "TextBox " qui permetr a l'utilisateur de donnée un nom a la nouvele feuille, et comme la macro récupere les donnée avant de créer la feuille, donc si l'utilisateur ne tape pas le nom de la feuille dans le TextBox , la macro s'éxécute a moitie , et elle m'envoi un message d'erreur, et sa affecte la feuille de la source.

    mon code :
    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
    Sub CréerEtat()
    Dim Liste, i, NbreColonne
    'vérifier si le nom de l'état est bie renseigné
    If TextBox1.Text = "" Then
    MsgBox "Veuillez saisir le nom de l'état SVP"
    End If
     
    NomEtat = TextBox1.Text
    FL1.Cells.EntireColumn.Hidden = False 'mis en remarque pour tester
    Liste = ";"
    For i = 0 To Me.ListBox2.ListCount - 1
        Liste = Liste & Me.ListBox2.List(i) & ";"
    Next
    Application.ScreenUpdating = False
    NbreColonne = Range("IV1").End(xlToLeft).Column
        For i = 1 To NbreColonne
            If InStr(Liste, ";" & FL1.Cells(1, i) & ";") = 0 Then
                FL1.Columns(i).EntireColumn.Hidden = True
            End If
        Next
       'FL1.PrintOut
    '   Call SupprimerFeuille(Worksheets("EtatSelection"))
        FL1.Select
        FL1.Copy After:=Worksheets("FichierCentral")
        'Sheets("FichierCentral (2)").Select
        Sheets("FichierCentral (2)").Name = NomEtat
        Worksheets(NomEtat).Select
        Call sup_col_vides
        'DoEvents ' laisser les temps pour l'impression
        FL1.Select
        FL1.Cells.EntireColumn.Hidden = False
        FL1.Cells.EntireColumn.Hidden = False
    End Sub
    je voudrais que au lancement de la macro , faire un teste
    si le nom de la feuille est renseigné ==> éxécuter la macro
    si le texteBox est vide l'envoi d'un message à l'utilisateur pour tapez le nom , mais surtout il faut pas éxécuter la macro .

    je ne sais pas comme le faire mais je crois que c'est facile

    merci de votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as plusieurs solutions. La plus simple :
    Dans le module standard, tu déclares un variable Public NomFich
    Dans la macro qui ouvre l'userform, avant le code d'ouverture, tu poses ta question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If NomFich = "" Then
        NomFich = InputBox("Veuillez saisir le nom de l'état SVP", "NOM DE L'ÉTAT", NomFich)
    End If
    If NomFich = "" then exit sub 'Tu n'ouvres pas l'userform
    Une autre consisterait à tester le nom de l'état dans Userform_Initialize ou Activate mais que fais-tu s'il y a une faute de frappe ?
    A+

    Edit
    J'ajouterais un test pour savoir si l'état existe bien

  3. #3
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Bon moi je ferais plutôt comme ceci. Si le textBox contient quelque chose, la macro s'exécute. Sinon, j'affiche un message et je positionne le curseur dans le TextBox.
    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
    Sub CréerEtat() 
            Dim Liste, i, NbreColonne 
            'vérifier si le nom de l'état est bie renseigné 
            If TextBox1.Text <> "" Then  
            NomEtat = TextBox1.Text 
            FL1.Cells.EntireColumn.Hidden = False 'mis en remarque pour tester 
            Liste = ";" 
            For i = 0 To Me.ListBox2.ListCount - 1 
                Liste = Liste & Me.ListBox2.List(i) & ";" 
            Next 
            Application.ScreenUpdating = False 
            NbreColonne = Range("IV1").End(xlToLeft).Column 
            For i = 1 To NbreColonne 
                If InStr(Liste, ";" & FL1.Cells(1, i) & ";") = 0 Then 
                    FL1.Columns(i).EntireColumn.Hidden = True 
                End If 
            Next 
            'FL1.PrintOut 
    '        Call SupprimerFeuille(Worksheets("EtatSelection")) 
            FL1.Select FL1.Copy After:=Worksheets("FichierCentral") 
            'Sheets("FichierCentral (2)").Select Sheets("FichierCentral (2)").Name = NomEtat 
            Worksheets(NomEtat).Select 
            Call sup_col_vides 
            'DoEvents ' laisser les temps pour l'impression 
            FL1.Select FL1.Cells.EntireColumn.Hidden = False 
            FL1.Cells.EntireColumn.Hidden = False 
          Else
            MsgBox "Veuillez saisir le nom de l'état SVP" 
            TextBox1.SetFocus
        End If   
    End Sub

Discussions similaires

  1. [OL-2010] Macro pour modifier une message avant de le transferer
    Par copainx dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 04/10/2011, 14h56
  2. [Excel] Changer de profil lors de l'éxécution d'une macro
    Par TeetyTweety dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/02/2007, 08h35
  3. bloquer un message d'erreur lié a une macro
    Par db48752b dans le forum Access
    Réponses: 11
    Dernier message: 21/09/2006, 12h28
  4. Message avant suppression ne passe pas
    Par leloup84 dans le forum Langage
    Réponses: 9
    Dernier message: 22/02/2006, 17h36

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