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 :

Protégée avant aujourd'hui ? [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut Protégée avant aujourd'hui ?
    Bonjour à tous,

    Voilà mon problème, ma feuille est protégée avec un mot de passe "AZ" et avec non sélection des cellules verrouillées sauf pour les colonnes E,G,I,K

    sur la colonne "C" j'ai les dates de toutes l'année en cours
    Je voudrais protéger 100 % des cellules s'en pouvoir les sélectionner à condition que les dates en colonne "C" soit inférieure à aujourd'hui.

    Je pense que vu les tracks qu'il y a ici ça doit être possible !

    Merci d'avance.
    A bientôt.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    ca te bloque toute les cellule qui n'ont pas la date dans la plage a1z200
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub protection_hors_date()
        Sheets(1).Unprotect
     
        MsgBox Date
        datetoday = Date
        For Each cel In Sheets(1).Range("a1:z200")
            If cel = datetoday Then
                cel.Locked = False
            Else
                cel.Locked = True
            End If
        Next
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    au plaisir

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Bonjour,

    Pour les colonnes E, G, I, K :
    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
    Private Sub Workbook_Open()
        Dim C As Range
        With Sheets("Feuil5")
            .Unprotect "AZ"
            .Cells.Locked = True
            For Each C In .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
                If C.Value < Date Then
                    '.Cells(C.Row, 7).Cells(C.Row, 9).Cells(C.Row, 11))
                    .Cells(C.Row, 5).Locked = False
                    .Cells(C.Row, 7).Locked = False
                    .Cells(C.Row, 9).Locked = False
                    .Cells(C.Row, 11).Locked = False
                End If
            Next C
            .Protect "AZ"
            .EnableSelection = xlUnlockedCells
        End With
    End Sub

  4. #4
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Bonjour Patrick,

    ça ne fonctionne pas je pense que cela vient de Ma feuille ne porte pas ce nom, je me demande si je renomme celle-ci comment le code va fonctionner ?
    Ma feuille sera dupliquée avec changement de nom.
    Encore merci

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour

    jen'est pas précisé mais oui il faut que tu mette le nom de ton sheets a ala place bien sur

    la version de daniel est parfaite aussi que je salut au passage

    mais attention il te faut mettre un mot de passe aussi sur le projet vba en entier
    sinon un petit malin clique sur le mode "creation" et peut changer le code dans l'editeur vba voir meme récupérer celui en cours

    aun plaisir

  6. #6
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Daniel ça ne fonctionne pas j'ai créé un nouveau classeur avec les dates en colonne "C" la colonne E est bien dérouillée mais avant la date d’aujourd’hui
    alors qu'il faudrait qu'elle soit protégée.

    Encore merci.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Oups, j'ai considéré que les dates étaient en colonne A :

    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
    Private Sub Workbook_Open()
        Dim C As Range
        With Sheets("Feuil5")
            .Unprotect "AZ"
            .Cells.Locked = True
            For Each C In .Range(.[C1], .Cells(.Rows.Count, 3).End(xlUp))
                If C.Value < Date Then
                    .Cells(C.Row, 5).Locked = False
                    .Cells(C.Row, 7).Locked = False
                    .Cells(C.Row, 9).Locked = False
                    .Cells(C.Row, 11).Locked = False
                End If
            Next C
            .Protect "AZ"
            .EnableSelection = xlUnlockedCells
        End With
    End Sub

  8. #8
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Merci Daniel,

    J'ai du changer en Sinon le jour même n'était pas accessible.
    Si je duplique ma feuille et que je renomme le code va suivre ?

    Merci et bonne soirée.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Si je duplique ma feuille et que je renomme le code va suivre ?
    Non, il faut changer le nom de la feuille ou faire une boucle sur les feuilles si plusieurs sont concernées :

    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
    Private Sub Workbook_Open()
        Dim C As Range, Feuilles As Variant
        Feuilles = Array("Feuil5", "Feuil6")
        For Each Sh In Feuilles
            With Sheets(Sh)
                .Unprotect "AZ"
                .Cells.Locked = True
                    For Each C In .Range(.[C1], .Cells(.Rows.Count, 3).End(xlUp))
                        If C.Value <= Date Then
                            .Cells(C.Row, 5).Locked = False
                            .Cells(C.Row, 7).Locked = False
                            .Cells(C.Row, 9).Locked = False
                            .Cells(C.Row, 11).Locked = False
                        End If
                    Next C
                    .Protect "AZ"
                    .EnableSelection = xlUnlockedCells
            End With
        Next Sh
    End Sub

  10. #10
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Je ne m'en sort pas.

    ça ne fonctionne pas je dois passer à coté de quelque chose.

    @+ et encore merci

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Le plus simple : mets ton classeur - sans données confidentielles - en pièce jointe en indiquant quelle feuille tu veux protéger.

  12. #12
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Daniel.xlsx

    Je vais dupliquer cette feuille puis le renommée plusieurs fois, il faut protéger toutes les cellules avant aujourd'hui des colonnes E,G,I,K le reste est déjà protégés par défaut, mais dans les mêmes colonnes laisser libre à partir d'aujourd'hui vers les dates futures pour saisir des données.

    Merci.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    A protéger avant le 3/11/2012 toute la feuille sauf les colonnes E,G,I,K >= aujourd'hui
    Je ne comprends pas. Je protège toutes les cellules de la ligne 1 à 307 mais que faut-il faire de particulier pour les colonnes E,G,I,K ? Peux-tu donner un exemple ?

  14. #14
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Au départ et par défaut toute ma feuille est protégée sauf les colonnes E,G,I,K
    Je vais noter dans ces cellules des infos toute l'année"colonnes E,G,I,K" uniquement, mais une fois passé le jour qui est dans la colonne "C" je voudrais que les cellules des colonnes E,G,I,K soient verrouillées pour ne pas annuler par erreur c'est données saisie depuis le 1er Janvier de l'année en cours.

    A partir du jour J vers le futur donc à partir de demain "vers le bas de la feuille" les cellules de ces colonnes devront être libre pour saisir de nouveau.
    <AUJOURDHUI() on protége
    Merci.

    Bonjour,

    Pas de solution ?

    Je vais poster ma question autrement.

    Encore merci pour ton aide
    Bon dimanche.

    @+

  15. #15
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Hé ! tu te lèves de bonne heure pour un dimanche
    J'ai maintenant compris ce que tu veux.

  16. #16
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    Je joins de nouveau un classeur exemple pour trouver une solution

    à chaque fois que j'ouvre le classeur si la date en C est égale à ce jour alors on protège toutes les cellules des colonnes concernées avant aujourd'hui.

    Le reste de la feuille est déjà protégée.

    Merci.
    Essaiprotége1.xlsx

    Bon dimanche.

    Oui tu sais nous les paysans on n'est des durs à cuire

    Bon dimanche à toi et merci.

  17. #17
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_Open()
        Dim C As Range, Plage As Range
        With Sheets("Feuil1")
            .Unprotect "AZ"
            .Cells.Locked = True
            Set Plage = Union(.[E:E], .[G:G], .[I:I], .[K:K])
            Plage.Locked = False
            For Each C In Plage.SpecialCells(xlCellTypeConstants)
                If C.Value < Date Then C.Locked = True
            Next C
            .Protect "AZ"
            .EnableSelection = xlUnlockedCells
        End With
    End Sub

  18. #18
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Daniel, tu peux faire un essai sur dernier classeur joint ?

    Je ne comprends pas ça ne fonctionne pas.

    Merci.

  19. #19
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Points : 14 363
    Points
    14 363
    Par défaut
    Je ne comprends pas ça ne fonctionne pas.
    Ben non, si tu changes les colonnes...
    Je ne comprends pas ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Workbook_Open()
        Dim Ligne As Long
        With Sheets("Feuil1")
            .Unprotect "AZ"
            Ligne = Application.Match(Date * 1, .[C:C], 0) - 1
            .Range("1:" & Ligne).Locked = True
            .Range(.[D1], .Cells(Ligne, 7)).Locked = True
            .Protect "AZ"
            .EnableSelection = xlUnlockedCells
        End With
    End Sub

  20. #20
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Même en changeant les colonnes dans le code il ne ce passe rien c'est plutôt étrange

    Je met bien le code sur le VBA de ma feuille , j'ai même fais un essai sur le classeur, mais rien ne ce passe.

    Tu peux faire un essai sur mon classeur puis me le renvoyer si ça va ?


+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Effacer tout, avant aujourd'hui
    Par mikosworld dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/12/2007, 17h51
  2. Pb pour affichage date aujourd'hui
    Par kikaillo dans le forum Access
    Réponses: 6
    Dernier message: 14/04/2006, 15h04
  3. Réponses: 5
    Dernier message: 12/04/2006, 10h56
  4. Réponses: 1
    Dernier message: 21/11/2005, 19h22
  5. BTS Info de Gestion passé aujourd'hui question pour SQL
    Par red210 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 29/05/2005, 15h48

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