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 :

VBA dans Excel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Responsable Qualité
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut VBA dans Excel
    Bonjour,

    J'aurais besoin d'aide pour compléter un code que j'ai créé dans Excel.
    J'ai ajouté des conditions dans un fichier excel via VBA.
    Par exemple si vous répondez Oui à une question un message "Si Oui, préciser Laquelle" apparait dans un encadré à coté et dans lequel on doit donner des précisions. Le message apparait dans une couleur gris assez clair. L'objectif est d'indiquer à l'utilisateur qu'il doit préciser ses conditions.
    J'ai ajouté comme condition que si la réponse était Non ou Vide, le message disparaissait.
    Ça fonctionne.

    Seulement quand je veux saisir les précisions, mon message "Si Oui, préciser Laquelle" réapparait et me supprime ces précisions.
    J'ai des connaissances assez limitées dans VBA et je ne sais pas comment je peux faire pour compléter ma condition :
    >> Si la réponse est OUI alors "Si Oui, préciser Laquelle"
    >> Si c'est NON ou Vide l'encadré reste vide
    >> Mais si je saisie les précisions, le message "Si Oui, préciser Laquelle" ne doit pas les effacer. Je voudrais aussi que le texte change de couleur pour que ce soit plus visible que le gris clair.

    Par avance merci.

  2. #2
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonjour Green Bird,

    serait-il possible d'avoir la feuille excel. Autrement, ça sera compliqué de t'aider.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Responsable Qualité
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut
    Voilà le document.

  4. #4
    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 Green Bird Voir le message
    Seulement quand je veux saisir les précisions, mon message "Si Oui, préciser Laquelle" réapparait et me supprime ces précisions.
    Je n'ai pas ouvert ton XLSM mais je suppose que ton code est activé avec une macro évènementielle de type WorkSheet_Change.

    Dans ce cas, il faut qu'au début de ta macro tu mettes un test qui vérifie si la cellule modifiée est celle où tu dois taper oui ou non et que la cellule où tu dois taper les précisions est vide.
    Si ce n'est pas le cas, fait un Exit Sub.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Responsable Qualité
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut
    Ma condition marche mais je voudrais la compléter pour que les précisions soient visibles après saisie par l'utilisateur et faire disparaitre le message d'aide.
    En fait je sais ce que je veux mais je ne connais pas le code.

  6. #6
    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
    Comme je l'ai dis, j'ouvre rarement les fichiers joints et jamais ceux qui peuvent contenir des macros.
    Pour que je puisse t'aider, il faudrait que tu copies ton code dans un message, de préférence avec des balises. http://club.developpez.com/regles/#LIII-E

  7. #7
    Membre à l'essai
    Femme Profil pro
    Responsable Qualité
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut
    Voilà :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Sheets("Feuil1").Select
     
        Application.EnableEvents = False
     
    'MODIFICATION PROCESS
        'Si OUI à la modification process alors le message "Si Oui, préciser Laquelle" apparait
        If Range("H28") = "X" Or Range("H28") = "x" And Range("N28") = "" Then
            Range("N28") = "Si Oui, préciser Laquelle"
            Else: Range("N28") = ""
        End If
        'Si les deux réponses Oui et Non sont sélectionnées : Message d'erreur + Suppression des réponses + Message automatique "Si Oui, préciser Laquelle"
        If Range("H28") <> "" And Range("K28") <> "" Then
            MsgBox "Sélectionner Oui ou Non !"
            Range("H28,K28,N28") = ""
        End If
     
        Application.EnableEvents = True
    End Sub

  8. #8
    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
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim reponse As Integer
     
       If Target.Address(False, False) <> "H28" And Target.Address(False, False) <> "K28" Then Exit Sub
     
       If UCase(Range("H28").Value) = "X" Then
          If Range("N28").Value = "" Then Range("N28").Value = "Si Oui, préciser Laquelle"
          If Range("K28").Value <> "" Then
             If MsgBox("Sélectionner Oui ou Non !", vbYesNo, "ERREUR") = vbYes Then
                Range("H28").Value = "X"
                Range("K28").Value = ""
                If Range("N28").Value = "" Then Range("N28").Value = "Si Oui, préciser Laquelle"
             Else
                Range("H28").Value = ""
                Range("K28").Value = "X"
                Range("N28").Value = ""
             End If
          End If
       End If
     
    End Sub
    Ce qui est un peu bancale dans ton process, c'est la dualité des cases H28 et K28 (mais vu le MsgBox que tu as mis, je pense que tu t'es déja rendu compte du conflit).
    Il serait mieux qu'il n'y ait qu'un seul bouton en relation avec une seule cellule.
    L'information que tu souhaite est un bistable (oui ou non), c'est typiquement le genre de chose que l'on fait avec un seul bouton.
    Ca simplifierait beaucoup le code et, surtout, ça clarifierait le process.

    En imaginant que pour Oui, tu ais un X en H28 et que pour un non, cette cellule soit vide, ça donnerait comme code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address(False, False) <> "H28" Then Exit Sub
     
       If UCase(Range("H28").Value) = "X" Then
          If Range("N28").Value = "" Then Range("N28").Value = "Si Oui, préciser Laquelle"
       Else
          Range("N28").Value = ""
       End If
     
    End Sub
    C'est quand même plus propre, non ?

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

Discussions similaires

  1. Réutilisation de code VBA dans Excel et Outlook
    Par metramo dans le forum Général VBA
    Réponses: 1
    Dernier message: 21/04/2009, 15h52
  2. piloter access depuis macro vba dans excel
    Par debmlc dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/04/2007, 13h41
  3. [VBA-E] Auto incrémentation en VBA dans Excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/02/2007, 13h00
  4. Export automatique VBA dans Excel
    Par eddyG dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/12/2006, 23h34

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