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 :

Affichage MsgBox en 2fois pour une saisie obligatoire dans une cellule [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 13
    Par défaut Affichage MsgBox en 2fois pour une saisie obligatoire dans une cellule
    Bonjour à tous,

    En fait je dois mettre des contrôles pour les cellules obligatoires avec Excel 2007.
    Pour la cellule A1 par exemple, avec VBA j'ai pu mettre quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Range("A1") = "" Then
       MsgBox ("Champ A1 obligatoire")
        Range("A1").Select   
        Exit Sub
      End If
    End Sub
    Mon problème se pose lorsqu'on ne renseigne pas le champ A1, le MsgBox s'affiche en deux fois consécutifs, et je suis obligé de cliquer sur OK deux fois pour les faire disparaitre

    Quelqu'un peut m'aider SVP?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour honeymamy,

    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Application.Intersect(Target, Range("A1")) Is Nothing Then
        If Range("A1") = "" Then
            Range("A1").Select
            MsgBox ("Champ A1 obligatoire")
        End If
    End If
     
    End Sub
    N'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

  3. #3
    Membre averti
    Femme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 13
    Par défaut
    Cooooolllll

    Ca marche, youpiiiii.

    En fait, Kimmy peux tu stp éclaircir un tout petit peu sur l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.Intersect(Target, Range("E28")) Is Nothing Then
    Vu que je débute en VBA, j'aimerai comprendre un peu plus au lieu de faire juste un copier coller

    Merci merci

    Oui la solution de Kimy marche très bien
    Merci Dev pour la remarque

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    honeymamy,

    Je pense que tu peux voir par toi même ce que cela signifie.
    En effet, Application.Intersect te renvoie une Range en fonction des Ranges que tu lui passes en paramètre.

    Ainsi Application.Intersect(Range("A1:A10"), Range("A8:A20")) te renverra la Range("A8:A10").
    De la même manière Application.Intersect(Range("A1:A10"), Range("A8:A20"), Range("A9:F9")) te renverra la Range("A9").

    Ainsi, si tes Ranges en paramètre ne se "superposent" pas, Application.Intersect te renverra Nothing.

    Mon instruction fait donc le test pour savoir si Target, Range("E28") correspondent ou pas. Si oui, on ne passe pas dans la condition, et donc on n'affiche pas la MsgBox (et on ne sélectionne pas Range("E28") mais celle-ci est déjà sélectionnée). Sinon, on effectue les actions.

    Voila.

    Cordialement,
    Kimy

  5. #5
    Membre averti
    Femme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 13
    Par défaut
    Kimy

    Oui, j'ai eu bien l'impression de le savoir dès le début mais avec tes explications c'est encore plus clair et précis

    Mes remeriements.
    Cordialement,

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Bonjour,

    Ton message s'affiche deux fois, car tu a deux instructions dans ton IF
    Si tu enlève le Range("A1").Select de ton code, ton message ne s'affiche qu'une seule fois

    Je ne sais pas comment résoudre ton problème, mais la solution de Kimy fonctionne parfaitement

    Bonne continuation,
    Dev

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/07/2011, 13h57
  2. Réponses: 0
    Dernier message: 26/01/2010, 16h01
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. Réponses: 7
    Dernier message: 08/09/2008, 08h39
  5. rendre une saisie obligatoire dans un formulaire
    Par heteroclite dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/09/2006, 23h26

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