droits de modification sur une plage de cellule

hyp-axa

XLDnaute Nouveau
Bonjour à tous,

Aprés une recherche infructueuse dans ce merveilleux forum, j'ai decidé de vous exposer mon projet ( je dis projet alors que je n'ai rien codé.....je ss trés débutant et je ne sais pas d'ou commencer)

J'ai un classeur que je partage sur le réseau avec plusieurs utilisateurs(manager dans l'exemple en pj) et afin de sécuriser les modifications et les controler, de façon à permettre à chacun de modifier les les cellules lui concernant. En effet, sur chaque feuille, j'ai une colonne où j affiche le nom de chaque utilisateur, l'idée est de permettre à chacun d entre eux de modifier une plage de cellule sur la même ligne où son nom est renseigné.

pour identifier l utilisateur, je propose une identification par ID Windows.

en pj un petit exemple du fichier.

merci bcp pour votre aide
 

Pièces jointes

  • Ponct.xls
    17.5 KB · Affichages: 163
  • Ponct.xls
    17.5 KB · Affichages: 166
  • Ponct.xls
    17.5 KB · Affichages: 168
Dernière édition:

hyp-axa

XLDnaute Nouveau
Re : droits de modification sur une plage de cellule

Bonjour,

J'ai deux remarques par rapport au résultat de l'extraction :

1 -Elle récupére aprés chaque extraction les intitulés des colonnes
2 -Mon extraction porte sur une base de données qui change de nombre de lignes régulierement, le fait d'avoir fixé la plage pose un pb aussi.

Est ce qu'on peut le faire via une boucle.

Cdt,
Mohammed
 

eriiic

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Bonsoir tout le monde,

Je vais peut-être être hors sujet (je n'ai pas eu le courage de tout lire en détail... :-s) mais pour la question initiale 'de façon à permettre à chacun de modifier les les cellules lui concernant.', il y a une autre possibilité apparemment non évoquée.

Sur excel 2003 :
- menu 'outils / protection / permettre aux utilisateurs de modifier les plages...'
- cliquer sur 'nouvelle...'
- nommer la plage, la sélectionner, mettre ou non un mot de passe
- cliquer sur 'autorisations d'accès...'
- cocher ou non 'modifier la plage sans mot de passe', là comme le contrôle va se faire sur les identifiants autant autoriser.

- cliquer sur 'ajouter...' pour gérer les identifiants
- saisir ou rechercher les identifiants autorisés à modifier la plage
(là c'est un peu plus compliqué pour trouver la bonne saisie des noms, s'aider de (exemples) et du bouton 'Avancé...' pour faire les recherches, choisir les 'emplacements...' etc ).
Sélectionner les noms dans la liste 'résultats de la recherche :'

Seuls les identifiants sélectionnés pourront modifier les cellules protégée de cette plage.

C'est intéressant aussi pour le développeur de sélectionner la feuille entière pour pouvoir faire les modif sans être obligé de déprotéger/reprotéger à chaque fois la feuille.

eric
 

job75

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Bonsoir eriiiic,

J'avais donc raison d'écrire au post #12 :

Toutes ces procédures font assez "gadget" je trouve :p

Mais faute de grive... J'espère seulement qu'il existe une solution plus normale au niveau de l'administration des classeurs partagés.

Si quelqu'un la connaît, merci de nous en faire part.

Ta solution est probablement celle qui convient.

Je ne me suis pas souvenu de cette fonctionnalité dont évidemment je ne me sers jamais, et une fois lancé sur VBA...

Si ce n'est pas trop demander et comme c'est ta solution, peux-tu la mettre en place sur l'un des fichiers de ce fil ?

De mon côté je pense en avoir fait assez :)

A+
 

eriiic

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Re,

Je veux bien mais il n'y a rien de visuel...
Il faut se retaper toute la procédure pour visualiser les plages et autorisations mises.
Un exemple sur le 1er fichier où j'ai autorisé 2 utilisateurs à modifier des plages de la feuille '1'.
Les utilisateurs sont :
Eric (ERIC-FIXE\Eric) pour la plage E2:G2 et
Administrateur (ERIC-FIXE\Administrateur) pour la plage 1:65536

ERIC-FIXE étant l'emplacement (ici le nom du micro)
Eric et Administrateur les 2 profils autorisés.

La feuille est protégée, cellules verrouillées, et je saisi dedans sans problème.

Bon, c'est vrai que s'il y a 50 utilisateurs sur 3 onglets ça devient fastidieux et vaut mieux les macros...

eric
 

Pièces jointes

  • Ponct.xls
    18 KB · Affichages: 79
  • Ponct.xls
    18 KB · Affichages: 78
  • Ponct.xls
    18 KB · Affichages: 74

job75

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Bonjour hyp-axa, le forum,

Sur ma macro du post #30 il suffit d'adapter la plage auxiliaire :

Code:
Sub Copie()
Dim plage As Range
On Error Resume Next 'si aucune donnée à copier
With Sheets("Adhérence")
  .AutoFilterMode = False 'désactive le filtre automatique
  With [COLOR="red"].Range("IV5:IV" & .Range("A65536").End(xlUp).Row)[/COLOR] 'plage auxiliaire
    .Formula = "=AND(K5=""Reception"",L5=""Non"")"
    .Value = .Value
    .Replace False, ""
    Set plage = Intersect(.SpecialCells(xlCellTypeConstants).EntireRow, .Parent.[A:N])
    plage.Copy Sheets("BD").[A65536].End(xlUp)(2)
    .ClearContents
  End With
End With
End Sub

Staple modifiera sa macro s'il le souhaite.

Vous aimez les boucles hyp-axa ? Moi je préfère les consommer avec modération :)

Edit : j'ai mis .AutoFilterMode = False pour que End(xlUp) fonctionne correctement...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Re,

Bon d'accord, une petite boucle mais vite fait :

Code:
Sub Copie()
Dim i as Long
With Sheets("Adhérence")
  .AutoFilterMode = False 'désactive le filtre automatique
  For i = 5 To .Range("A65536").End(xlUp).Row
    If .Cells(i, 11) = "Reception" And .Cells(i, 12) = "Non" Then _
      .Cells(i, 1).Resize(, 14).Copy Sheets("BD").[A65536].End(xlUp)(2)
  Next
End With
End Sub

Sur un très grand tableau ce ne sera pas rapide, il faudra optimiser ça...

A+
 

job75

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Re,

Juste pour vous rendre compte hyp-axa, dans la feuille "Adhérence" j'ai recopié le tableau jusquà la ligne 5004.

Durée d'éxécution macro post #37 => 0,2 s

Durée d'éxécution macro post #38 => 15,6 s

Edit : en modifiant la macro du post #38 :

Code:
Sub Copie()
Dim L As Long, i As Long
[COLOR="Red"]Application.ScreenUpdating = False
L = Sheets("BD").[A65536].End(xlUp)(2).Row[/COLOR]
With Sheets("Adhérence")
  .AutoFilterMode = False 'désactive le filtre automatique
  For i = 5 To .Range("A65536").End(xlUp).Row
    If .Cells(i, 11) = "Reception" And .Cells(i, 12) = "Non" Then
      .Cells(i, 1).Resize(, 14).Copy Sheets("BD").Cells(L, 1)
      [COLOR="red"]L = L + 1[/COLOR]
    End If
  Next
End With
End Sub

on gagne un peu de temps => 12,9 s

Ce qui prend du temps c'est le copier/coller ligne par ligne.

A+
 
Dernière édition:

hyp-axa

XLDnaute Nouveau
Re : droits de modification sur une plage de cellule

Bonjour JOB, Staple, Le forum
J'apprends un peu ;) LOL

Je n'ai pas encore testé les deux solutions mais les tps parlent, j'opterai pour la macro la plus rapide.

C'est pas que j'aime les boucles mais c un peu le truc qui marche facilement pour moi, un raisonnement à mettre en place et en plus parce que je ne maitrise pas les fonction du VBA.

Qu'est ce que vous me conseillez comme méthode pour un apprentissage accélerer du VBA ?

Merci à vous tous pour votre aide précieuse.
 

hyp-axa

XLDnaute Nouveau
Re : droits de modification sur une plage de cellule

Re,

En testant la macro rapide, le coller n'est pas fait en collage spécial valeur et ca me récupére pas les données mais plutot les formules que j'ai dans ma feuille "Adhérence".

Est ce possible de corriger le code pour que ca soit ainsi :(

Merci à vous
 

job75

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Bonsoir hyp-axa,

Pour le collage spécial-Valeurs, utilisez cette macro :

Code:
Sub Copie()
Dim plage As Range
On Error Resume Next 'si aucune donnée à copier
With Sheets("Adhérence")
  .AutoFilterMode = False 'désactive le filtre automatique
  With .Range("IV5:IV" & .Range("A65536").End(xlUp).Row) 'plage auxiliaire
    .Formula = "=AND(K5=""Reception"",L5=""Non"")"
    .Value = .Value
    .Replace False, ""
    Set plage = Intersect(.SpecialCells(xlCellTypeConstants).EntireRow, .Parent.[A:N])
    [COLOR="Red"]plage.Copy
    Sheets("BD").[A65536].End(xlUp)(2).PasteSpecial xlPasteValues[/COLOR]
    .ClearContents
  End With
End With
End Sub

Et n'oubliez pas, dans la feuille "BD", de mettre les colonnes M et N aux formats Date et heure.

A+
 

jaja

XLDnaute Nouveau
Re : droits de modification sur une plage de cellule

Bonsoir a tous,


J'ai deja effectué ce genre de truc sur un fichier en reseau mais je ne suis pas passé par du vba.
Mais par les menus d'excel, "permettre la modification des plages" la tu chois les plages et les mots de passe necessaire pour les modifier, tu peut mettre un super mots de passe. Sur le reseau moi j'ai carément utiliser les login de session.
ensuite tu protege la feuille et c'est ok mais pas infaible pour des pros.

dans l'exemple les colones A à E le MDP: zone1
les colones F à J MDP: zone2
les colones A à J MDP: zone3
attention des que le MDP d'une des zone est saisie la zone est modifiable jusqu'a fermeture et reouverture du fichier.
le fichier ne peut etre ouvert que par 1 utilisateur a la fois.

le MDP de protection de feuille : admin.

Fait chez moi donc sans réseau, car sinon tu peut directement definir un groupe de personne qui peut modifier sans mot de passe.

Esperant avoir pu t'aider un peu meme si j'y mets pas de vba....
 

Pièces jointes

  • essai1.xls
    26.5 KB · Affichages: 68
  • essai1.xls
    26.5 KB · Affichages: 65
  • essai1.xls
    26.5 KB · Affichages: 71

eriiic

XLDnaute Barbatruc
Re : droits de modification sur une plage de cellule

Bonjour tout le monde,

je ne suis pas passé par du vba.
Mais par les menus d'excel, "permettre la modification des plages"

C'est déjà ce que je décrivais au post 33 mais ça n'a pas l'air de passionner le demandeur... ;-)
eric
 

Discussions similaires

Statistiques des forums

Discussions
312 791
Messages
2 092 141
Membres
105 234
dernier inscrit
mimilk