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

Excel Discussion :

Verrouillage de cellule en fonction des Jours de la semaine et jours férié [XL-2013]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    France
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : France
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Verrouillage de cellule en fonction des Jours de la semaine et jours férié
    Bonjour à tous,
    Après de longues recherches , je me décide à vous demander de l'aide
    mon soucis (voir fichier joint) j'aimerai verrouiller des cellules dans la colonne D sachant qu'en changeant les années les samedi et dimanche change ainsi que les jours férié
    avec comme critères le jour de la semaine ( sam) (dim) en colonne A mais aussi les jours fériés qui sont colorisés par une MFC

    j'ai crée une macro, se basant sur la couleur de la cellule ==> Fonctionne pas je pense à cause de la MFC
    j'ai fais un essai avec le texte même combat échec cette fois je suppose le format personnalisé de la cellule ddd

    Sub Text()
    Dim c As Variant

    For Each c In Range("A2:A32")
    If Cells.Text = "sam" Or Cells.Text = "dim" Then
    c.Offset(0, 3).Select
    c.Cells.Locked = True
    Else
    c.Offset(0, 3).Select
    c.Cells.Locked = False
    Donc si quelqu'un peut m'aider sur en fait mes deux soucis
    1) les samedi et dimanche afin de verrouiller les cellules
    2) les jours féries même combat

    en espérant avoir été clair dans les explications si non disponible pour plus d'explication


    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avant de commencer et sauf s'il est impératif pour toi d'avoir le nom des jours en texte, je te suggère d'utiliser simplement la fonction qui permet d'extraire le numéro du jour de la date qui renvoie un chiffre de 1 à 7.
    Il est plus facile de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Weekday(Range("J4"), vbMonday) >5 then
    que ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells.Text = "sam" Or Cells.Text = "dim" Then

  3. #3
    Candidat au Club
    Homme Profil pro
    France
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : France
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci Philippe,

    Oui j'aimerais garder les cellules comme elles sont cad avec la personnalisation des colonnes A et B Colonne A = ddd et B = jj

    dis moi si c'est réalisable avec ma demande initiale

    je viens de tester la fonction mais sans grand succès sauf de verrouiller les cellules > 5 donc les samedi et dimanche mais de la colonne A seulement

    en me servant de la variable c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Weekday(c, vbMonday) > 5 Then
    comme si le offset (0 ,4) n'avez pas d'effet


    Merci à toi

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui j'aimerais garder les cellules comme elles sont cad avec la personnalisation des colonnes A et B Colonne A = ddd et B = jj
    Cela signifie donc que les colonnes A et B sont des dates ? (Si tu as une version française de windows, cela m'étonnerais que tu aies un format personnalisé avec ddd)
    Il ne faut donc pas les comparer comme du texte. Je pense que tu confonds format et valeur.
    Pourquoi aussi as-tu besoin d'avoir deux colonnes (Une pour afficher le jour de la semaine et l'autre pour le jour. Tu peux parfaitement utiliser le format personnalisé jjj-jj
    Pour appliquer une mise en forme conditionnelle sur une plage de données
    Si les dates sont en colonne A et commence en ligne 2 et la plage des jours fériés se nomme pFerie
    Formule que tu peux placer dans la Mise en forme conditionnelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =OU(JOURSEM($A2;2)>5;NON(ESTNA(EQUIV($A2;pFerie;0))))
    Tu peux aussi bloquer l'encodage sur des cellules de la ligne où la date de la colonne A est fériée ou est un jour de week-end avec l'outil Validation de données et ce sans passer par le VBA.
    Après avoir sélectionné la plage concernée par le blocage (par exemple $A$2:$H$100). Dans l'outil Validation de données, il faut sélectionner Personnalisation et entrer cette formule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(JOURSEM($A2;2)<6;ESTNA(EQUIV($A2;pFerie;0)))
    .

    Si tu veux absolument utiliser le VBA pour bloquer les cellules, tu peux t'inspirer de la formule ci-dessus.
    En VBA JOURSEM c'est Weekday et EQUIV, c'est Application.Match

    Je te conseille la lecture de ces tutoriels
    De Silkyroad Utiliser les fonctions Date et Heure sous Excel 2007
    De Didier Gonard Comprendre et gérer les dates sous Excel et en VBA
    De Jean Balat Création, enregistrement et fusion de formats personnalisés

    Je te rappelle que ce n'est pas parce-que tu bloques une cellule qu'automatiquement on ne pourra plus entrer une valeur. Fais un essai manuellement.
    Pour qu'une cellule soit réellement bloquée, il faut protéger la feuille.
    Par défaut toutes les cellules sont verrouillées. Il faut donc plutôt déverrouiller les cellules qui correspondent aux jours travaillés.

    Je te conseille vraiment de passer par l'outil Validation de données.

  5. #5
    Candidat au Club
    Homme Profil pro
    France
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : France
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Effectivement c'est bien jjj et non ddd comme format personnalisé

    je vais essayer de faire comme tu m'indiques je ne vais pas fermer ce poste tout de suite,
    je vais mettre en pratique tes conseils et si j'ai des questions je te solliciterais.

    Merci encore

  6. #6
    Candidat au Club
    Homme Profil pro
    France
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : France
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci pour ton aide pour la MFC c'est bon ça fonctionne
    je vais continuer sur le VBA pour me faire la main

    Encore merci

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Merci pour le retour d'information.

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

Discussions similaires

  1. [Toutes versions] Fusion de cellule en fonction des autres resultats
    Par djamat dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2013, 10h13
  2. Convertir un jour de la semaine en jour générique
    Par Invité dans le forum Langage
    Réponses: 22
    Dernier message: 29/04/2013, 12h01
  3. Réponses: 2
    Dernier message: 04/05/2012, 07h50
  4. [XL-2007] Formatage cellule en fonction des données
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2012, 14h44
  5. mettre à jour un dataset en fonction des valeurs qu'il contient ?
    Par isachat666 dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/06/2006, 13h03

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