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 :

Rendre inactives des cellules correspondant au week-end


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Rendre inactives des cellules correspondant au week-end
    Bonjour,

    Dans une feuille, j'ai mis en place ce code qui, si la cellule est vide, un UserForm apparaît, si la cellule correspond à un jour fériés, définit dans une autre feuille ("Don"), alors la cellule est inactive, si la cellule correspond un jour de week-end, la cellule est inactive.

    Mes jours sont sur la ligne 4 de la feuille.

    La ligne de code où j'ai mis des *** ne fonctionne pas.

    Pouvez-vous m'apporter votre éclairage s'il vous plait ?

    Merci

    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_SelectionChange(ByVal Target As Range)
    Dim COL As Long
    Dim LIG As Long
    Dim A As Long
    'on regarde si les cellules de la zone B6:BY50 sont vides
        If Intersect(Range("B6:BY50"), ActiveCell) Is Nothing Then Exit Sub
            If IsEmpty(ActiveCell.Value) Then
        LIG = 4
        COL = ActiveCell.Column
        A = Cells(LIG, COL).Value
    'on regarde si la date de la colonne ne correspond ni à un jour férié ni à un week-end
            If A = 0 Then COL = COL - 1
                *** If Weekday(Cells(LIG, COL).Value, 2) < 6 Then
            If IsNumeric(Application.Match(Cells(LIG, COL), Sheets("Don").Range("fériés"), 0)) Then Exit Sub
        End If
    'si tout est ok, alors ouverture de l'UserForm
        Load FrmAbs
        FrmAbs.Show
    End If
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour récupérer l'abréviation correspondant au contenu de la cellule ligne 5, regarde si ça peut t'aider.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub JoursOuvrés()
        MsgBox "Aujourd'hui, nous sommes un " & WeekdayName(Weekday(Now), False, 1)
        LaDate = "8/02/2009"
        If Weekday(LaDate) = 7 Or Weekday(LaDate) = 1 Then MsgBox "Et le " & LaDate & ", youpi ! C'est le week-end !"
    End Sub
    Par défaut le premier jour de la semaine est le dimanche et le samedi est le 7ème.

    Ceci dit je ne m'y prendrais pas ainsi.
    Tu as les macros qui initialisent la date des jours de la semaine pour tes quatre trimestres.
    Sur leur modèle, tu peux effectuer le test "If Weekday(LaDate) = 7 Or Weekday(LaDate) = 1 Then" dans une boucle et masquer (Hidden) les colonnes qui remplissent ces conditions.
    Et d'ailleurs je complèterais en ne renseignant le combobox des dates que des jours ouvrés. Ainsi l'utilisateur ne risquerait pas de se tromper
    Besoin d'un coup de main ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Ben je veux bien, car je n'y arrive pas. Est-ce le fait d'être en vacances ce soir ??
    Toujours est-il que je patauge

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour masquer les colonnes, teste ça
    Pour revenir en arrière et afficher toutes les colonnes, il suffit dans Excel de te placer sur A1, de sélectionner toutes les cellules renseignées (Ctrl + *) et de faire Format -> Colonne -> Afficher
    Le code pour le premier trimestre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub MasquerTrimestre1()
    Dim NoCol As Integer
        Worksheets("1T").Activate
        NoCol = 2 'Colonne B
        For jour = CDate("1/1/" & Year(Now)) To CDate("1/4/" & Year(Now)) - 1
            If Weekday(jour) = 7 Or Weekday(jour) = 1 Then
                Columns(Cells(5, NoCol).Column).Hidden = True
                Columns(Cells(5, NoCol + 1).Column).Hidden = True
            End If
            NoCol = NoCol + 2
        Next
    End Sub
    Pour les autre trimestres, pense bien à corriger les éléments en rouge
    Pour le combobox2, je regarde mais le principe est le même.
    A+

    Edit
    Pour le combobox2, dans l'userform tu corriges le code ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub MaJCombo2(Mois)
    Dim jour As Variant, Fin As Double
        Fin = IIf(Mois = 12, CDate("1/" & Mois & "/" & Year(Now)) + 30, CDate("1/" & (Mois + 1) & "/" & Year(Now)) - 1)
        ComboBox2.Clear
        For jour = CDate("1/" & Mois & "/" & Year(Now)) To Fin
            If Not (Weekday(jour) = 7 Or Weekday(jour) = 1) Then _
            ComboBox2.AddItem Format(jour, "dd mmmm yyyy")
        Next
        ComboBox3.ListIndex = -1
    End Sub
    Tu racontes

    ATTENTION : Pour masquer les colonnes, la procédure MasquerTrimestre4 est différente des trois autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub MasquerTrimestre4()
    Dim NoCol As Integer
        Worksheets("4T").Activate
        NoCol = 2 'colonne B au départ
        For jour = CDate("1/10/" & Year(Now)) To CDate("1/1/" & Year(Now) + 1) - 1
            If Weekday(jour) = 7 Or Weekday(jour) = 1 Then
                Columns(Cells(5, NoCol).Column).Hidden = True
                Columns(Cells(5, NoCol + 1).Column).Hidden = True
            End If
            NoCol = NoCol + 2
        Next
    End Sub

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour ouskel'n'or,

    Désolé d'avoir répondu si tardivement mais j'étais en vacances sur les pistes enneigées des Pyrénées.
    J'ai donc mis en place les codes que tu m'as transmis et cela marche trés bien.
    Les dates de week-end n'apparaissent plus dans la liste de choix, ce qui est trés bien, mieux que je ne l'espérais.
    Encore un trés grand merci pour ton aide.
    A bientôt

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

Discussions similaires

  1. rendre obligatoire des cellules
    Par pas2711 dans le forum Excel
    Réponses: 1
    Dernier message: 26/11/2009, 17h13
  2. Réponses: 3
    Dernier message: 30/09/2008, 12h28
  3. Réponses: 1
    Dernier message: 05/02/2008, 15h36
  4. Réponses: 5
    Dernier message: 20/10/2006, 00h25
  5. Comment rendre des cellule invisible (inexistante)
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/09/2005, 10h05

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