Probleme de protection

Bonjour,

J’ai un problème de protection sur un classeur qui comporte deux feuilles que j’ai réalisé, il y a plusieurs jours que je travaille dessus et je ne trouve pas la solution.

Il est trop gros pour passer par le site en pièce jointe par contre je peux l’envoyer par E-mail.

Si quel’ un peux éventuellement regarder je peux le lui envoyer

Merci d’avance.

Bonsoir et bienvenue

Quel est ton problème au juste ?

Amicalement

Nad

Bonsoir et merci de me répondre, pour comprendre il faudrait voir le programme, j'ai plusieurs bouton ou j'ai réussi à intégrer la protection mais il me reste un bouton et la je n'arrive pas a enlever la protection et la remettre a la fin du script.

Tout est expliqué dans le programme il faut que je trouve quelqu’un qui puisse le recevoir par E-mail.

Merci quand même.

Re

Quel est le poids de ton fichier ?

En passant par cjoint.com tu peux aller jusqu'à 1024 Ko

Nad

bonsoir.

voici un lien pour télécharger le classeur

Re

Il va falloir attendre un spécialiste Macro.

Ce que je peux déjà voir comme problème, c'est qu'à la fermeture du fichier tu ne remets pas les barres de formules et d'état à TRUE. PAS SYMPA pour celui qui activerait ton code sans l'avoir regardé avant : il se retrouve sans barres.

Amicalement

Nad

bonjour,

Terminé les Protect/Unprotect à chaque macro :

Regarde ça et tes problèmes sont finis !

Notez bien que dans cette démo, il existe une macro Protege et Deprotege, mais elles ne sont jamais utilisées : Vous pouvez les supprimer sans problème : la démo fonctionne quand même !

Elle est pas belle la vie ?

Notez encore que ces deux macros supplémentaires ne sont pas complètement inutiles : Elles montrent comment utiliser une macro unique pour protéger et déprotéger des feuilles par macro sans être obligé de mettre son mot de passe en évidence chaque macro.

"Protege" protège la feuille active

"Protege 0" déprotège la feuille active sans qu'il soit nécessaire d'invoquer la macro Deprotege. (parfaitement inutile ailleurs que dans cette démo)

A+

Bonjour, galopin01

Mais je n'arrive pas à intégrer ton exemple dans le bouton de commande effacer de la feuille recherche de mon classeur.

Encore merci

bonjour,

Fait une sauvegarde aupravant.

YA juste à intégrer le contenu du Workbok_Open ensuite supprimer tous les Protect/Unprotect.

Fermer le classeur.

A la prochaine réouverture les macros s'éxécuteront normalement sans qu'il soit nécessaire de Déprotéger/Protéger.

A+

galopin01 a écrit :

bonjour,

Fait une sauvegarde aupravant.

YA juste à intégrer le contenu du Workbok_Open ensuite supprimer tous les Protect/Unprotect.

Fermer le classeur.

A la prochaine réouverture les macros s'éxécuteront normalement sans qu'il soit nécessaire de Déprotéger/Protéger.

A+

A ok merci je ferai le test ce soir bon aprés midi.

Bonsoir, galopin01

Ton idée est super mais il y a un inconvenant le classeur est ouvert en lecture seule donc si on supprime des lignes on ne peut pas les enregistrer dans le classeur.

C’est un inconvénient pour l’utilisation future.

Merci tout de même.

bonsoir,

mais non, mais non !

S'il est ouvert en lecture seule, c'est pour une autre raison.

Comme ça à froid je ne peux pas te dire pourquoi, (peut-être un problème de zippage ?)

Il faut enregistrer ton classeur hors du zip ou quelque chose comme ça, mais sur le principe ma suggestion ne présente aucun inconvénient...

A+

galopin01 a écrit :

bonsoir,

mais non, mais non !

S'il est ouvert en lecture seule, c'est pour une autre raison.

Comme ça à froid je ne peux pas te dire pourquoi, (peut-être un problème de zippage ?)

Il faut enregistrer ton classeur hors du zip ou quelque chose comme ça, mais sur le principe ma suggestion ne présente aucun inconvénient...

A+

Bon Ok tu ne peux pas essayer (quand tu auras le temps) de modifier directement le classeur que j'ai envoyé le code est 654321.

Merci

bonjour,

Désolé je ne peux rien faire de ce classeur (sauf le voir !)

Je ne peux même pas l'Enregister sous...

Il semble qu'il soit fortement instable.

Conseil :

Avant de continuer, faire une petite toilette au projet : C'est quand même un peu le foutoir !

Eviter les trop nombreux objets qui semblent responsables de la surcharge de ce classeur : (80 boutons avec chacun la même macro pour revenir au début !)

Pour ce qui concerne ton problème, je reviens à ma suggestion car toutes les feuilles sont alors accessibles par macro sans problème de protection. Aujourd'hui on ne programme plus de cette manière... surtout pour des projets un peu volumineux.

Ah les joies de l'ActiveSheet, ActiveCell et autres Selection !

Bon si tu tiens absolument à continuer de cette manière...

Ton bouton mène à une Private Sub CommandButton5_Click

qui est dans le module de la sheets("recherche")

Pour ce module, ActiveSheet est la sheets("recherche") : Quand bien même la private Sub renverrait à un module standart, With Sheets("inventaire") n'est en aucun cas une manière d'activer la Sheets("inventaire") donc évidement tu ne peux pas écrire ActiveSheet.Unprotect...

Le minimum serait :

Sheets("inventaire").Unprotect(...)

Bon ça c'est la théorie. Pour la pratique, comme je ne peux pas tester et que je n'est pas envie de rebatir un classeur que je puisse enregistrer, mais je ne dois pas être loin du compte.

Toutefois les lignes de code semblent... Heu ! un peu dans le désordre. (les Dim, les tests, le With... le Plage.Delete...) il faudra surement revoir la logique.

Si tu m'as suivi attentivement (sans survoler en diagonale), normalement tu as la réponse à ton problème.

Je reviens si je réussi à déméler l'écheveau sans sauvegarde...

Bon courage !

On doit être pas loin du compte là :

Private Sub CommandButton5_Click()
Dim Lig As Long, Grille As Variant, Trouve As Range, Plage As Range

If Selection.Cells.Count <> 12 Then 'condition 1 : si le nombre de cellules de la sélection est différent de 12
    MsgBox "Vous devez sélectionner toute la ligne!" 'message
    Exit Sub 'sort de la procédure
End If 'fin de la condition 1

If Selection.Cells(1).Column <> 1 Then 'condition 2 : si la première cellule de la sélection n'est pas dans la colonne A
    MsgBox "Vous devez sélectionner toute la ligne !" 'message
    Exit Sub 'sort de la procédure
End If 'fin de la condition 2

If MsgBox(">>>ATTENTION<<<" & Chr(13) & "Vous allez supprimer définitivement la ou les lignes sélectionnées dans le listing. " & Chr(13) & "Voulez-vous continuer.", vbYesNo, "Suppression des lignes") = vbYes Then
ActiveSheet.Unprotect ("654321")

With Sheets("inventaire")
.Unprotect ("654321")
For Lig = 1 To Selection.Rows.Count
  Grille = Selection(Lig, 5).Value
    Set Trouve = .Range("F8:F" & .[E65536].End(xlUp).Row).Find(Grille, LookIn:=xlValues, lookat:=xlWhole)
    If Not Trouve Is Nothing Then
      If Plage Is Nothing Then
        Set Plage = .Rows(Trouve.Row)
      Else: Set Plage = Union(Plage, .Rows(Trouve.Row))
      End If
    End If
Next
If Not Plage Is Nothing Then Plage.Delete
.Protect ("654321")
End With

Selection.ClearContents 'efface le contenu de la sélection

ActiveSheet.Protect ("654321")
End If
End Sub

Bon évidement ça résoud pas le problème de sélection multiligne, mais ça remet un peu le projet d'aplomb.

Bon de toute façon, ça m'étonnerait que tu arrives à résoudre complètement la sélection multiligne sur ces bases là...

A mon avis, (tu t'en fout peut-être mais je te le donne quand même...) il faut abandonner l'idée du Selection.Cells.Count <> 12 : Pourquoi enquiquiner l'utilisateur à sélectionner exactement la plage (Parce que c'est plus facile pour faire le Selection.ClearContents ?)

Déjà si tu y arrives en comptant seulement les lignes, ça sera bien...

A+

Bonjour ton code fonctionne bien, merci pour toutes tes explications je ne ferai pas de commentaire, je ne suis pas à ton niveau.

J'ai juste un souci quand la liste de couleur jaune dépasse 100 lignes dans "recherche" j'ai un message d'erreur.

ICI. ** Range("A" & Lig & ":L" & Lig).Value = Coul.Resize(1, 13).Value **

je t’embête encore mais si tu as la solutions.

Merci.

bonjour,

Je ne sais pas : l'erreur est indépendante de la ligne de code que tu signales.

Je n'arrive pas à reproduire cette erreur malgré une sélection de 150 lignes...

A+

OK je vais regarder c'est la ligne qu’il me surligne en jaune comme erreur.

De plus si je rajoute une colonne dans "inventaire" que faut’ il que je modifie pour quelle soit prise en compte dans "recherche".

Merci galopin01

Q1 :

C'est la ligne qui est surlignée mais c'est la conséquence d'une erreur passée...

Si "va chercher la bouteille de lait dans le frigo" fonctionne bien,

ça va forcément bugger si la bouteille de lait à été jetée ce matin et que le frigo est vide...

Q2 :

pour Sub FindCol:

Range("A" & Lig & ":M" & Lig).Value = Coul.Resize(1, 13).Value

pour CommandButton5_Click

rien si la colonne F est toujours en place....

(sauf le Selection.Cells.Count <> 12 si tu l'as gardé)

A+

Bonsoir galopin01, forum,

Je profite du fil au sujet des protections

Tu m'avais déjà donné cette méthode pour les Unprotect/Protect,

Je viens de la mettre en application sur mon projet "Pétanque", cela m'a permis de virer

30+30 lignes de code dans le projet, Nickel !

Seul bémol parmi toutes les procédures, ce bout de code qui bloque aux Copy Destination :

With Sheets("Inscriptions")
    Lg = .Range("b65536").End(xlUp).Row
        '.Unprotect
        Call Deprotege
    If NbrEq < 16 And NbrEq <> 16 And NbrEq <> 8 Then
        .Range("d40:d47").Copy Destination:=Range("n6") 'qualifiées
        .Range("b40:b47").Copy Destination:=Range("o6") 'points
        .Range("d48:d" & Lg).Copy Destination:=Range("q6") 'éliminées
        .Range("b48:b" & Lg).Copy Destination:=Range("r6") 'points
    End If
    If NbrEq > 16 Then
        .Range("d40:d55").Copy Destination:=Range("n6") 'qualifiées
        .Range("b40:b55").Copy Destination:=Range("o6") 'points
        .Range("d56:d" & Lg).Copy Destination:=Range("q6") 'éliminées
        .Range("b56:b" & Lg).Copy Destination:=Range("r6") 'points
    End If
        '.Protect
        Call Protege
End With

Comme tu vois, j'ai été obligé de mettre un "Call Deprotege",

aurais-tu une explication ?

Je vais essayé d'écrire ce code autrement, le reste étant nickel,

A noter que pour les objets (masquer/afficher ou déplacer), il faut les déverrouiller.

Pareil, pour les cellules liées à des listes ou boutons (formulaire)

Encore merci

Amicalement

Claude.

Rechercher des sujets similaires à "probleme protection"