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 :

Code Vba selon saisie [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité 72 ans
    Inscrit en
    Mai 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité 72 ans

    Informations forums :
    Inscription : Mai 2011
    Messages : 244
    Par défaut Code Vba selon saisie
    Bonjour chers amis
    Je voudrais par Vba uniquement selon saisie en D25

    Si D25 = "x" Que K36 = "x"
    Si D25 est vide ""
    une invitation à choisir par Oui ou Non demandant "Autoriser à visualiser...."
    Oui K36 = x
    Non K36 = ""

    En vous remerciant

  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,

    Voici, si j'ai bien compris un bout de code qui doit pouvoir faire ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub toto()
        If LCase(Range("D25").Value) = "x" Then
            Range("K36").Value = "x"
        Else
            reponse = MsgBox("Autoriser à visualiser ?", vbYesNo + vbQuestion)
            If reponse = vbYes Then
                Range("K36").Value = "x"
            Else
                Range("K36").Value = ""
            End If
        End If
    End Sub
    Il ne te reste plus qu'à faire un petit bouton pour lancer la chose.

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité 72 ans
    Inscrit en
    Mai 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité 72 ans

    Informations forums :
    Inscription : Mai 2011
    Messages : 244
    Par défaut
    Bonjour jerome
    Puis-je inclure ton code dans cette macro Stp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B10:C12")) Is Nothing Then
    Application.EnableEvents = False
    If Application.WorksheetFunction.CountBlank(Range("B10:C12")) < 3 Then
    MsgBox "Vous devez inscrire au moins 3 utilisateurs avec leur mot de passe"
    End If
    Application.EnableEvents = True
    End If
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    Retraité 72 ans
    Inscrit en
    Mai 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité 72 ans

    Informations forums :
    Inscription : Mai 2011
    Messages : 244
    Par défaut
    J'ai essayé comme cela, mais j'ai une erreur : Variable non définie

    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)
    If Not Application.Intersect(Target, Range("B10:C12")) Is Nothing Then
    Application.EnableEvents = False
    If Application.WorksheetFunction.CountBlank(Range("B10:C12")) < 3 Then
    MsgBox "Vous devez inscrire au moins 3 utilisateurs avec leur mot de passe"
    End If
     
        If LCase(Range("D25").Value) = "x" Then
            Range("K36").Value = "x"
        Else
            Reponse = MsgBox("Autoriser à visualiser les e-mails ?", vbYesNo + vbQuestion)
            If Reponse = vbYes Then
                Range("K36").Value = "x"
            Else
                Range("K36").Value = ""
            End If
        End If
     
    Application.EnableEvents = True
    End If
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité 72 ans
    Inscrit en
    Mai 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité 72 ans

    Informations forums :
    Inscription : Mai 2011
    Messages : 244
    Par défaut
    Svp merci de m'aider

  6. #6
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonsoir, n'auriez vous pas quelque part un "Option Explicit" qui vous obligerait à définir la variable "Reponse"
    Parceque chez moi, sur un document neuf et sans Option explicit, votre code fonctionne.
    Cordialement

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
       dim reponse as boolean 
     If Target.Address = "$D$25" Then
            If LCase(Target.Value) = "x" Then
                Range("K36").Value = "x"
            Else
                reponse = MsgBox("Autoriser à visualiser ?", vbYesNo + vbQuestion)
                If reponse = vbYes Then
                    Range("K36").Value = "x"
                Else
                    Range("K36").Value = ""
                End If
            End If
        End If
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre éclairé
    Homme Profil pro
    Retraité 72 ans
    Inscrit en
    Mai 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité 72 ans

    Informations forums :
    Inscription : Mai 2011
    Messages : 244
    Par défaut
    Bonjour Transitoire, Patrick,
    Merci de me venir en aide
    Oui, j'ai Option Explicit
    Est-ce que je met bien le code ou il faut ? Car rien ne se passe, que je mette x ou rien en D25....

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B10:C12")) Is Nothing Then
    Application.EnableEvents = False
    If Application.WorksheetFunction.CountBlank(Range("B10:C12")) < 3 Then
    MsgBox "Vous devez inscrire au moins 3 utilisateurs avec leur mot de passe"
    End If
    
    'Insertion du code communiqué
    Dim reponse As Boolean
     If Target.Address = "$D$25" Then
            If LCase(Target.Value) = "x" Then
                Range("K36").Value = "x"
            Else
                reponse = MsgBox("Autoriser à visualiser ?", vbYesNo + vbQuestion)
                If reponse = vbYes Then
                    Range("K36").Value = "x"
                Else
                    Range("K36").Value = ""
                End If
            End If
        End If
        
    Application.EnableEvents = True
    End If
    End Sub

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    vu comme tu disable les events j'ai l'impression que tu ne l'a pas reactivé

    mais par dessus tout je coprends pas pourquoi tu veux deaciter les events tu peux faire ton traitement b10;C12 et ton d25 dans un if else tout simplement

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim reponse As Boolean, inter
        Application.EnableEvents = True    ' je le remet au cas ou tu l'aurais inhibé voir fermer ton fichier et le réouvrir
        Set inter = Application.Intersect(Target, Range("B10:C12"))
        If Not inter Is Nothing Then
            If Application.WorksheetFunction.CountBlank(Range("B10:C12")) < 3 Then
                MsgBox "Vous devez inscrire au moins 3 utilisateurs avec leur mot de passe"
            End If
        Else
            'Insertion du code communiqué
            If Target.Address = "$D$25" Then
                If LCase(Target.Value) = "x" Then
                    Range("K36").Value = "x"
                Else
                    reponse = MsgBox("Autoriser à visualiser ?", vbYesNo + vbQuestion)
                    If reponse = vbYes Then
                        Range("K36").Value = "x"
                    Else
                        Range("K36").Value = ""
                    End If
                End If
            End If
        End If
    End Sub

    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Sous VBA, ce code ne doit pas être placé dans un module mais directement dans le code de la feuille. Tu dois double-cliquer sur la feuille. Voici un screenshot qui montre où se trouve les feuilles sous VBA, ici il n'y a qu'une feuille nommée Feuil1.

    Nom : 2018-06-20_200544.png
Affichages : 187
Taille : 28,4 Ko
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, Le problème est que vous ne prenez pas le temps d'expliquer les tenants et aboutissants! J'ai l'impression que vous avez une erreur de conception. Sur mon Mac ça fonctionne, mais il y a des choses étranges? Il n'y a un évenement que si on modifie une cellule de B10:C12. la ça prend en compte la valeur de D25 pour incrémenter K36 de la même valeur ou la laisser (""). Je ne pense pas que ce soit cela vos désirs?
    Cordialement

  12. #12
    Membre éclairé
    Homme Profil pro
    Retraité 72 ans
    Inscrit en
    Mai 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité 72 ans

    Informations forums :
    Inscription : Mai 2011
    Messages : 244
    Par défaut
    Bonjour à vous
    Je vous remercie notamment Transitoire : Il n'y a un évenement que si on modifie une cellule de B10:C12
    Mon problème était bien là.
    Bon Week-end à vous

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

Discussions similaires

  1. [XL-2003] Code VBA pour saisie heure
    Par Sergio33600 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/02/2017, 13h48
  2. Réponses: 4
    Dernier message: 15/11/2012, 19h29
  3. Réponses: 0
    Dernier message: 05/11/2012, 19h48
  4. Code VBA pour la saisie d'un mot de passe
    Par narr255 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2010, 12h17

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