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 :

Comment empêcher de modifier un champ d'un formulaire ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut Comment empêcher de modifier un champ d'un formulaire ?
    Bonjour

    J'utilise un formulaire avec des champs et j'aimerai empêcher certains champs d'être modifiés. Je parcouru de nombreux sites avec plein de réponse différentes. Du coup, je n'arrive pas à trouver ce que je cherche. J'ai deux codes sur lesquels je souhaiterai mettre cela en application

    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
    ''''''''''''''''''''
            'Date de fin -1mois
            ''''''''''''''''''''
                If IsDate(Strings.Trim(Me.txtDateFin1mois.Text)) = True Then
                    xDate = CDate(Strings.Trim(Me.txtDateFin1mois.Text))
                    Me.txtDateFin.Text = Format(xDate, "dd/mm/yyyy")
                    .Range(1, 13) = CDate(Strings.Trim(Me.txtDateFin1mois.Text))
                Else
                    If Strings.Len(Strings.Trim(Me.txtDateFin1mois.Text)) = 8 Then
                        xDate = Strings.Trim(Me.txtDateFin1mois.Text)
                        xVal = Strings.Left(xDate, 2) & "/" & Strings.Mid(xDate, 3, 2) & "/" & Strings.Right(xDate, 4)
                        Me.txtDateDebut.Text = xVal
                    Else
                        Me.txtDateFin1mois.Text = ""
                    End If
                    .Range(1, 13) = Strings.Trim(Me.txtDateFin1mois.Text)
                    End If
    et celui là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ''''''''''''''''''''
            'Temps restant
            ''''''''''''''''''''
                Me.txtTempsIndisp.Enabled = False
               .Range(1, 14) = CStr(Strings.Trim(Me.txtTempsIndisp.Text))
    J'ai testé le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.txtTempsIndisp.Enabled = False
    , mais cela ne fonctionne pas.

    Merci pour votre aide et je vous souhaite un excellent week end ensoleillé.

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    Pour empêcher la modification autant utilisé un Label qu'un textbox prévu justement à l'effet d'être complété.

    Bat,
    MFoxy

  3. #3
    Membre confirmé
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut
    Merci pour votre réponse.
    Cependant, les champs qui ne doivent pas être modifiés sont des calculés dans la base de données. J'ai mis en place le fait de pouvoir à partir d'une ligne rouvrir le formulaire et je veux que dans le formulaire on puisse voir les champs calculés, mais qu'il ne soit pas possible de les modifier
    Je ne pense pas par conséquent que le label soit la bonne solution.
    Peut être avez vous une autre solution ?

  4. #4
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Un Label peut tout à fait contenir le résultat d'un calcul, par son attribut caption et est non modifiable.

    Label1.caption = ton calcul ou ta variable calculée

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je rejoins mFoxy quant à l'utilisation de contrôle Label pour placer les champs calculés.
    Cependant si tu souhaites utiliser un contrôle TexBox et empêcher sa modification, il suffit de mettre la propriété Enabled à False ou la propriété Locked à True mais la première me semble plus adaptée
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Je rejoins mFoxy quant à l'utilisation de contrôle Label pour placer les champs calculés.
    Cependant si tu souhaites utiliser un contrôle TexBox et empêcher sa modification, il suffit de mettre la propriété Enabled à False ou la propriété Locked à True mais la première me semble plus adaptée
    Bonjour Philippe
    Merci également à mFoxy.
    J'ai du mal à comprendre dans quel champs du label, je dois mettre le champs calculé. mFoxy me dit Label1.caption = calcul ou une variable calculée . Faut-il mettre une formule entière.

    Dans 1 Texbox ou Label : j'ai une formule : =SI([@[DATE DE FIN]]=0;"";DATE(ANNEE(K4);MOIS(K4)-1;JOUR(K4))).
    Dans un autre Texbox ou Label : je dois mettre : =SI([@[DATE DE FIN]]>AUJOURDHUI();.
    Et dans mon dernier Texbox ou Label :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI([@[DATE DE FIN]]=0;"";SI(ET([@[DATE DE FIN - 1 MOIS]]<=AUJOURDHUI();[@[DATE DE FIN]]>=AUJOURDHUI());"Arrive à terme dans" &" "& [@[TEMPS RESTANT]];SI([@[DATE DE FIN]]<AUJOURDHUI();RECHERCHEV(L4;Paramètres!C:D;2;FAUX);L4)))

    Merci pour votre aide.

Discussions similaires

  1. [MySQL] Comment puis-je modifier plusieurs champs à la volée
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 14/06/2013, 11h41
  2. comment empêcher de modifier les tables/requetes?
    Par gberthier dans le forum Sécurité
    Réponses: 9
    Dernier message: 04/08/2008, 09h48
  3. Modifier les champs d'un formulaire à partir d'un autre
    Par ToTo13 dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/07/2007, 12h50
  4. Réponses: 8
    Dernier message: 04/07/2007, 18h41
  5. Comment modifier un champ quand le formulaire change?
    Par benjapar dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 15/03/2006, 23h01

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