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 :

Génerer un Message box sous condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2017
    Messages : 3
    Par défaut Génerer un Message box sous condition
    Bonjour,

    J'ai un tableau avec une multitude de lignes et colonnes. En colonne A j'ai les dates des jours ouvrés sur 5 ans (ou plus). En colonne D je saisi un montant quotidiennement et en colonne R il y a une formule qui m'indique "ok" ou "ko". Il est important de savoir que toutes les cellules du tableau contiennent des données : chiffres, formules, texte, sauf la colonne D, dans laquelle la dernière cellule non vide est celle correspondant à la date du jour.

    Pour mon projet, j'aurai besoin grâce à une macro sans bouton de :

    - trouver et sélectionner (pas obligatoirement) la ligne avec la date du jour en colonne A
    - sur cette ligne, aller vérifier en colonne R si le mot "ko" est affiché
    - si oui : Message box avec "attention ko"
    - si non : enregistrer le fichier et fermer

    Actuellement, j'ai réussi à bidouiller quelque chose qui m'indique en Message box la dernière cellule contenant "ko", mais ce n'est pas exactement ce que je veux, et je n'arrive pas à savoir par ou commencer, j'aurai donc besoin de votre aide, svp!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub arrosage()
    Range("R1").End(xlDown).Select 'Pour déterminer la dernière cellule non vide de la colonne (mais comme le reste des cellules contiennent des N/A, cela ne fonctionne pas)
     
    If Range("R65000").End(xlUp) = "ko" Then
     
    MsgBox "Attention ko!"
     
    End If
    End Sub
    Merci beaucoup par avance!

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Si j'ai bien compris ce que tu veux :" sans bouton".
    C'est qu'a la fermeture du fichier la macro s’exécute toute seule.

    Pour cela, il faut utiliser une macro événementielle. Pour tout savoir sur le sujet, je te propose un peu de lecture. Utile pour savoir où mettre le code ci dessous.
    http://silkyroad.developpez.com/VBA/EvenementsClasseur/

    Et pour faire ce que tu veux, une proposition de code.
    'ceci est une macro évènementielle qui s'exécute à la fermeture du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'on détermine la dernière ligne de ton tableau grace à la colonne A
        dligne = Range("A4").End(xlDown).Row
        'on vérifie ce qui est ecrit dans la colonne R (la N° 18)
        If Cells(dligne, 18).Value = "ko" Then
            'Afficage du message
            MsgBox "Attention KO"
            'on annule la fermeture du fichier
            Cancel = True
        Else
            'Enregistrement du fichier avec fermeture
            ActiveWorkbook.Save
        End If
    End Sub

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2017
    Messages : 3
    Par défaut
    Bonjour Jérôme,

    Merci beaucoup pour votre aide.
    Le lien sur les macro événementielles m'a beaucoup aidé. Je ne connaissais pas le principe.

    J'ai réussi à faire un code simple, mais qui répond à mon besoin.

    Bonne journée à vous.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    i = Application.WorksheetFunction.Match(CLng(Date - 1), Range("A:A"), 0)
    Range("A" & i).Activate
     
    If ActiveCell.Offset(0, 17).Value = "KO" Then
    MsgBox ("Attention KO")
    Cancel = True
        Else
            ActiveWorkbook.Save
     
    End If
     
    End Sub

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2017
    Messages : 3
    Par défaut
    Bonjour,

    J'ai une autre question.

    Comment est-ce que je peut prendre en compte les jours fériés dans mon code?

    C'est à dire que j'ai une liste des jours fériés et sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = Application.WorksheetFunction.Match(CLng(Date - 1), Range("A:A"), 0)
    j'ai besoin qu'il prenne en compte cette liste et les jours non-ouvrés (samedi, dimanche). Par exemple, si on est lundi, le J-1 que le code prenne en compte soit vendredi (à condition que vendredi ne soit pas férié).

    Merci par avance pour votre réponse.

Discussions similaires

  1. Empêcher l'apparition d'une message box sous condition
    Par nananinanana dans le forum Excel
    Réponses: 3
    Dernier message: 29/11/2016, 15h42
  2. Message box avec condition qui ne se declenche pas
    Par ensascience dans le forum IHM
    Réponses: 1
    Dernier message: 27/11/2015, 15h37
  3. alertes avec création d'une message box sous excel.
    Par sandball22 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/01/2011, 20h26
  4. Affichage de Box sous condition de valeur d'une cellule
    Par snowcho dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/02/2010, 17h52
  5. Message box sous service web
    Par nemya dans le forum Services Web
    Réponses: 2
    Dernier message: 13/03/2008, 12h01

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