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 :

verrouillage conditionnelle de cellule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut verrouillage conditionnelle de cellule
    bonjour je cherche à verrouiller des cellues sur plusieurs feuille d'un classeur en fonction des données saisie sur la 1er feuille.

    pour le moment je fait le test avec une feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub verrouillage2()
    ThisWorkbook.Activate
        If Sheets("PARAMETERS").Range("D5") = "K570" Then
        Sheets("BS").Select
                Sheets("BS").Unprotect   
             Sheets("BS").Range("D5").Locked = True
            ActiveSheet.Protect     
        End If
    End Sub
    le probleme c'est que je dois introduire 2 grandes conditions soit la valeur saisie fait partie d'un ensemble de valeur
    K011
    K017
    K021
    K022
    K030
    K032
    K034
    K060
    K570
    alors la cellule visé se verrouille soit soit non
    je cherche la methode parce que je veux peux dupliquer un grands nombre de if
    quelqu'un peut m'aider svp ?

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Par défaut
    Bonjour,

    Que penses-tu de la création d'un Variant qui contiendrait l'ensemble des valeurs pour lesquelles la cellule doit être verrouillée. Tu boucles ensuite via un FOR pour comparer la valeur de ta première feuille à toutes celles de la liste et ainsi voir si elle y appartient.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    oui en fait la valeur doit etre saisie dans une seule cellule la cellule D5 de la feuille PARAMETERS
    et c'est cette valeur qui sera testé, en fait le test consiste à savoir si cette valeur saisie en D5 de la feuille PARAMETERS correspond à l'une des valeurs cible alors verrouiller la cellule M119 sur la feuille BS
    donc ici je ne sais si definir une variable variant est adaptée ?

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Par défaut
    Oui oui, cela pourrait fonctionner, voilà un exemple de code :

    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
     
    sub XXX
     
    dim i as integer
    dim x as variant 'le variant contenant les codes
    redim x (9) 'vos 9 codes
     
    x = array ("K011", "K017", "K021", ...) 'mettre tous vos codes
     
    for i = 1 to ubound(x)
      if Sheets("PARAMETERS").Range("D5") = x(i) then 'si la valeur de la cellule correspond à une du variant 
           'copier-coller de votre code précédent
            Sheets("BS").Select
                Sheets("BS").Unprotect   
             Sheets("BS").Range("D5").Locked = True
            ActiveSheet.Protect  
     
            exit sub 'pas besoin de continuer à boucler, on sort de la macro
     
      end if
     
    next i
     
    end sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    Bonjour ombak,

    ton code est interessant il fonctionnent pour les 9 valeurs ma laréalité est que j'ai 208 valeurs en vrai alors comment faire y a til pas un autre moyen d'y arriver ?
    je pense à la methode case je ne sais pas trop comment l'utiliser:
    en regroupant tous les cas dans des cases en ce moment le code s'execute et les autres cas case else

    Case K00113
    Case K006
    Case K007
    Case K010
    Case K011
    Case K017
    Case K021
    Case K022
    Case K030
    Case K032
    Case K034
    Case K060
    Case K063
    Case K064
    Case K090
    Case K100
    Case K111
    Case K119
    Case K120
    Case K129
    Case K130
    Case K131
    Case K133
    Case K134
    Case K135
    Case K136
    Case K137
    Case K139
    Case K143
    Case K144
    Case K145
    Case K146
    Case K147
    Case K170
    Case K171
    Case K176
    Case K180
    Case K181
    Case K210
    Case K217
    Case K230
    Case K253
    Case K256
    Case K257
    Case K258
    Case K260
    Case K266
    Case K270
    Case K282
    Case K286
    Case K294
    Case K296
    Case K297
    Case K298
    Case K299
    Case K306
    Case K308
    Case K327
    Case K330
    Case K331
    Case K332
    Case K334
    Case K336
    Case K337
    Case K340
    Case K341
    Case K344
    Case K350
    Case K351
    Case K353
    Case K355
    Case K356
    Case K358
    Case K366
    Case K370
    Case K377
    Case K380
    Case K382
    Case K383
    Case K402
    Case K416
    Case K420
    Case K422
    Case K424
    Case K440
    Case K443
    Case K444
    Case K457
    Case K458
    Case K475
    Case K476
    Case K493
    Case K494
    Case K497
    Case K500
    Case K507
    Case K520
    Case K537
    Case K540
    Case K541
    Case K546
    Case K567
    Case K569
    Case K570
    Case K586
    Case K590
    Case K591
    Case K592
    Case K597
    Case K600
    Case K601
    Case K602
    Case K605
    Case K616
    Case K6201
    Case K6202
    Case K624
    Case K625
    Case K627
    Case K628
    Case K630
    Case K633
    Case K636
    Case K645
    Case K650
    Case K656
    Case K660
    Case K662
    Case K671
    Case K672
    Case K691
    Case K693
    Case K694
    Case K697
    Case K698
    Case K702
    Case K710
    Case K730
    Case K7501
    Case K7502
    Case K7504
    Case K751
    Case K752
    Case K753
    Case K754
    Case K755
    Case K756
    Case K757
    Case K758
    Case K763
    Case K765
    Case K770
    Case K771
    Case K772
    Case K773
    Case K775
    Case K784
    Case K786
    Case K789
    Case K792
    Case K800
    Case K806
    Case K807
    Case K809
    Case K830
    Case K834
    Case K867
    Case K883
    Case K911
    Case K913
    Case K914
    Case K915
    Case K916
    Case K921
    Case K922
    Case K923
    Case K929
    Case K930
    Case K931
    Case K951
    Case K952
    Case K953
    Case K954
    Case K976

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Par défaut
    Si tu as autant de valeurs, tu peux boucler la création de ton variant:

    Admettons que tu réunisses tous tes codes dans une feuille nommée Codes, dans la première colonne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim x as variant
     
    nb_codes= Sheets("Codes").Cells(1, 1).End(xlDown).Row 'tu obtiens le nombre de codes que tu as
     
    redim x (nb_codes)
     
    for i = 1 to nb_codes
       x(i) = Sheets("Codes").Cells(i, 1)
    next i

    de cette façon, tous les codes se retrouvent dans ton variant

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

Discussions similaires

  1. [AC-2003] Etrange erreur de format conditionnel de cellules
    Par thomas.m dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/04/2011, 18h41
  2. [XL-2007] verrouillage de certaines cellules uniquement
    Par polcli dans le forum Excel
    Réponses: 1
    Dernier message: 17/02/2010, 18h50
  3. [XL-2003] Somme conditionnelle avec cellule à evaluer sur la meme ligne
    Par alban.pinel dans le forum Excel
    Réponses: 3
    Dernier message: 22/04/2009, 18h51
  4. Verrouillage automatique des cellules
    Par Stradi_v dans le forum Excel
    Réponses: 2
    Dernier message: 03/06/2008, 15h51
  5. verrouillage conditionnel d'une cellule
    Par aJavaDeveloper dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/07/2007, 10h51

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