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 :

Forcer la valeur du texte d'une cellule [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut Forcer la valeur du texte d'une cellule
    Bonjour à tous,
    je cherche à créer en VBA une contrainte d'écriture dans les cellules de ma sheet; Je m'explique: je voudrais que sur une plage de cellule, l'utilisateur n'ait le choix que d'écrire soit "oui", soit "non". Par exemple, qu'une liste déroulante s'affiche lorsqu'il clique sur une cellule en lui proposant les 2 choix. Je ne voudrais pas qu'il puisse y écrire autre chose. En gros, soit la case est vide, soit il écrit oui, soit il écrit non! Avez vous une idée?
    Merci d'avance!
    Bubale

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,


    Est-ce la peine de faire ça en VBA, une liste de validation peut très bien le faire.

    Tu peux aussi le faire manuellement et avec le recorder VBA t'inspirer du résultat.

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour Aalex, Bubale,
    je pense comme toi Aalex mais comme j'ai déjà commencé le travail (inspiré de l'enregistreur) je donne le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Selection.Validation
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="OUI;NON"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Re,

    En effet ce n'est pas toujours évident de manipuler les listes de validations par VBA, c'est pour ça que je dis ça.

    En plus de ton code, je proposerai de supprimer la liste avant de la créer et de définir la selection, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With Sh.Range("E2").Validation ' Feuille et colonne à adapter
    on error resume next
            .Delete
    on error goto 0
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="Oui,Non"
            .IgnoreBlank = True
            .ShowInput = False
            .ShowError = False
            Sh.Range("E2") = Split(.Formula1, ";")(1)
    End With

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Re,
    j'ai eu le tord d'enlever le mais perso sur n'importe quel code de n'importe quel fichier, je n'ai pu avoir de résultat avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    on error resume next
      ....
    on error goto 0
    je pense pourtant inserer l'instruction aux bons endroits, je suis sous excel2007
    Bonne journée
    PS : ma réponse n'est pas une demande
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    bonjour,

    Un exemple perso qui fonctionne :


    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
    Sub reformat_Validation(ByVal ShName As String)
    Dim Sh As Worksheet, x As Long
    Set Sh = Worksheets(ShName)
     
    '''On Error Resume Next
     
    With Sh.Range("F2").Validation
        On Error Resume Next
                .Delete
        On Error GoTo 0
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="Oui,Non"
            .IgnoreBlank = True
            .ShowInput = False
            .ShowError = False
            Sh.Range("F2") = Split(.Formula1, ";")(1)
    End With
     
    Set Sh = Nothing
     
    On Error GoTo 0
     
    End Sub

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

Discussions similaires

  1. [XL-2007] changer la couleur du texte d'une cellule selon sa valeur (en vba)
    Par blackstrange dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 10/07/2012, 08h01
  2. [VBA] Problème récup texte d'une cellule dans un tableau
    Par Marco le Pouillot dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/01/2006, 17h06
  3. [VBA] aligner le texte dans une cellule
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2006, 17h07
  4. Faire défiler un texte dans une cellule de tableau
    Par Furius dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 01/12/2005, 17h06
  5. Cacher le texte d'une cellule MSFlexGrid
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/09/2005, 19h03

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