Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

feuille en commun avec droit de modifications restreints ... comment faire ?

8 réponses
Avatar
Alfred WALLACE
Bonjour tous les gurus !
=E7=E0 fait quelques temps que ne ne suis pas pass=E9, et
je constate que ce groupe est toujours aussi dynamique ! merci !

Mon soucis du moment est le suivant :
dans une feuille nomm=E9e TOUT.XLS , j'ai des donn=E9es qui doivent =EAtre
mises =E0 jour.
ces donn=E9es se trouvent dans des colonnes : colA, colB et colC

la situation est la suivante :
1 - le propri=E9taire du fichier peut tout modifier.
2 - il y a une personne toto qui ne doit pouvoir modifier que la
colonne B
3 - il y a une personne tutu qui ne doit pouvoir modifier que la
colonne C

Voici la solution que j'imagine (en sachant que je ne peux pas
utiliser
des mots de passe ou une authentification quelconque...) et que je
soumet
aux experts pour conseils et corrections (certainement d'ailleurs !).

je place TOUT.XLS dans un r=E9pertoire appel=E9 \commun il n'y
=E0 ***que*** propri=E9taire qui a les droits en lecture/=E9criture sur
commun.


je place donneesB.xls dans un r=E9pertoire appel=E9 \commun\rien-que-B
seul toto a les droits en lecture/=E9criture.

je place donneesC.xls dans un r=E9pertoire appel=E9 \commun\rien-que-C
seul tutu a les droits en lecture/=E9criture.

J'imagine que, avec cette organisation, toto et tutu ne pourront pas
se modifier le fichier des autres.

MA QUESTION :
comment, dans le fichier TOUT.XLS venir placer les donn=E9es
des 2 autres fichiers pour que, =E0 l'ouverture
de tout.xls les donn=E9es de donneesB.xls et donneesC.xls viennent
s'afficher ?
j'aimerai que les colonnes dans tout.xls pour les donn=E9es B et C
ne soient pas diff=E9rentes visuellement des autres colonnes de
tout.xls.

en fait, c'est le m=EAme fichier dans les 3 r=E9pertoires, mais, par le
jeu
des droits d'acc=E8s =E0 l'arborescence des dossiers je restreint les
modifications.


Voila, je ne sais pas si j'ai =E9t=E9 suffisamment clair pour avoir
de l'aide.


Merci encore
A bientot
Jos=E9

8 réponses

Avatar
Patrick BASTARD
Bonjour, José.

"...en sachant que je ne peux pas utiliser des mots de passe ou une
authentification quelconque..."
Pourquoi ?

--
Bien ,

Patrick
patrick.bastardchezdbmail.com
Avatar
FFO
Salut à toi
En supposant que les données sont dans Feuil1 des fichiers
Dans le ThisWorkbook du classeur TOUT.xls mets ce code :

Private Sub Workbook_Open()
Workbooks.Open ("C:communrien-que-BdonneesB.xls")
Sheets("Feuil1").Range("B2", "B" & Range("B65535").End(xlUp).Row).Copy
Workbooks("TOUT.xls").Sheets("Feuil1").Range("B2")
ActiveWorkbook.Close
Workbooks.Open ("C:communrien-que-CdonneesC.xls")
Sheets("Feuil1").Range("C2", "C" & Range("C65535").End(xlUp).Row).Copy
Workbooks("TOUT.xls").Sheets("Feuil1").Range("C2")
ActiveWorkbook.Close
End Sub


Adaptes le nom de la feuille (ici Feuil1) et la lettre du lecteur (ici C)

Celà devrait te convenir

Dis moi !!!!!
Avatar
Alfred WALLACE
salut Patrick, merci pour ta réponse.

ben "pourquoi" heu .. because ?

heu, disons que, les utilisateurs se ouvrent des sessions utilisateur
dans
windows. de ce fait, certains ont des droits que d'autres n"ont pas.

Je n'ai pas le droit (encore faudrait-il que je sache le faire) dans
ma boite,
de mettre en place des systemes d'authentification à base, par
exemple de LDAP
dans des programmes. Je ne peux pas te dire "pourquoi", celà relève
de la sécurité du SI .. enfin ... bon ... sa "soule" des fois, mais,
on fait avec !

merci

josé



On 20 mai, 10:29, "Patrick BASTARD"
wrote:
authentification quelconque..."
Pourquoi ?

--
Bien ,

Patrick
patrick.bastardchezdbmail.com


Avatar
Alfred WALLACE
Bonjour FFO (joli prénom :-))
Si je comprend bien la macro, celle-ci va chercher à chaque ouverture
les données dans les autres classeurs.
Je vais tester , mais, je pensais qu'un systeme de lien OLE ou autre
DDE aurait pû convenir.

Merci pour ton aide je dirai ce que celà donne.

José



On 20 mai, 10:43, FFO wrote:
Salut à toi
En supposant que les données sont dans Feuil1 des fichiers
Dans le ThisWorkbook du classeur TOUT.xls mets ce code :

Private Sub Workbook_Open()
Workbooks.Open ("C:communrien-que-BdonneesB.xls")
Sheets("Feuil1").Range("B2", "B" & Range("B65535").End(xlUp).Row).Copy
Workbooks("TOUT.xls").Sheets("Feuil1").Range("B2")
ActiveWorkbook.Close
Workbooks.Open ("C:communrien-que-CdonneesC.xls")
Sheets("Feuil1").Range("C2", "C" & Range("C65535").End(xlUp).Row).Copy
Workbooks("TOUT.xls").Sheets("Feuil1").Range("C2")
ActiveWorkbook.Close
End Sub

Adaptes le nom de la feuille (ici Feuil1) et la lettre du lecteur (ici C)

Celà devrait te convenir

Dis moi !!!!!


Avatar
Patrick BASTARD
"Alfred WALLACE" a écrit dans le message de
news:
salut Patrick, merci pour ta réponse.

ben "pourquoi" heu .. because ?

Cette question, car il est possible de verrouiller plusieurs plages d'une
même feuille avec des mots de passe différents, ce qui pourrait
éventuellement te convenir.
(Sur excel 2002 : Outils, Protection, Permettre aux utilisateurs de modifier
des plages).

--
Bien ,

Patrick
patrick.bastardchezdbmail.com
Avatar
Alfred WALLACE
Merci Patrick
aujourd'hui nous ne disposons que de excel 2000 ...et bientot de
2007 ... (ou la la ....)

l'inconvénient est de multiplier les mots de passes ..... les
utilisateurs
s'authentifient deja en ouvrant leur sessions.

Merci encore
José

On 20 mai, 11:59, "Patrick BASTARD"
wrote:
Cette question, car il est possible de verrouiller plusieurs plages d'une
même feuille avec des mots de passe différents, ce qui pourrait
éventuellement te convenir.
(Sur excel 2002 : Outils, Protection, Permettre aux utilisateurs de modif ier
des plages).

--
Bien ,

Patrick
patrick.bastardchezdbmail.com


Avatar
MichDenis
Bonjour Alfred,


Tu peux utiliser ceci pour importer les colonnes
de ton choix.

A ) Tu dois ajouter au fichier une référence à partir
de la fenêtre de l'éditeur de code / outils / référence
"Microsoft activex data object 2.8 librairy"

B ) Tu appelles cette macro à partir de l'événement
Workbook_Open du ThisWorkbook ou par un bouton
dans une feuille.

C ) Il est supposé que chacune des colonnes ne contient pas
plusieurs types de données (Numérique ,texte, date...)sinon
cette approche est problématique !

'--------------------------------------
Sub Importer_Des_Données()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String
Dim File As String, Rg As Range, Nb As Long
Dim Plg As Range

'********Variables à définir***************
'Fichier sur lequel se fera la requête :
'Chemin & fichier à définir
File = ThisWorkbook.Path & "LeFichier.xls"
'Nom onglet de la feuille du fichier où sont les données
NomFeuille = "Feuil1"

'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets(1)
Set Rg = .Range("B1")
End With

'Plage représentant les colonnes à importer
Set Plg = Range("B:C")

'***********************************************

'Connexion au classeur
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"""

'La requête qui sera exécutée.
'Tu adaptes dans "Range", la plage à importer
Requete = "SELECT * From [" & NomFeuille & "$" & _
Plg.Address(0, 0) & "]"

'Exécution de la requête
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Nb = Rst.RecordCount

'Si au moins une ligne de données
If Nb > 0 Then
'Boucle pour copie des noms des étiquettes de colonne
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
'Copie du recordset dans la plage désignée
Rg.Offset(1).CopyFromRecordset Rst
Else
'Aucune donnée trouvée.
MsgBox "Aucune donnée trouvée."
End If

End Sub
'--------------------------------------



"Alfred WALLACE" a écrit dans le message de groupe de discussion :

Bonjour tous les gurus !
çà fait quelques temps que ne ne suis pas passé, et
je constate que ce groupe est toujours aussi dynamique ! merci !

Mon soucis du moment est le suivant :
dans une feuille nommée TOUT.XLS , j'ai des données qui doivent être
mises à jour.
ces données se trouvent dans des colonnes : colA, colB et colC

la situation est la suivante :
1 - le propriétaire du fichier peut tout modifier.
2 - il y a une personne toto qui ne doit pouvoir modifier que la
colonne B
3 - il y a une personne tutu qui ne doit pouvoir modifier que la
colonne C

Voici la solution que j'imagine (en sachant que je ne peux pas
utiliser
des mots de passe ou une authentification quelconque...) et que je
soumet
aux experts pour conseils et corrections (certainement d'ailleurs !).

je place TOUT.XLS dans un répertoire appelé commun il n'y
à ***que*** propriétaire qui a les droits en lecture/écriture sur
commun.


je place donneesB.xls dans un répertoire appelé communrien-que-B
seul toto a les droits en lecture/écriture.

je place donneesC.xls dans un répertoire appelé communrien-que-C
seul tutu a les droits en lecture/écriture.

J'imagine que, avec cette organisation, toto et tutu ne pourront pas
se modifier le fichier des autres.

MA QUESTION :
comment, dans le fichier TOUT.XLS venir placer les données
des 2 autres fichiers pour que, à l'ouverture
de tout.xls les données de donneesB.xls et donneesC.xls viennent
s'afficher ?
j'aimerai que les colonnes dans tout.xls pour les données B et C
ne soient pas différentes visuellement des autres colonnes de
tout.xls.

en fait, c'est le même fichier dans les 3 répertoires, mais, par le
jeu
des droits d'accès à l'arborescence des dossiers je restreint les
modifications.


Voila, je ne sais pas si j'ai été suffisamment clair pour avoir
de l'aide.


Merci encore
A bientot
José
Avatar
Philippe.R
Bonsoir,
Autre approche possible (supposant quand même des utilisateurs de bonne foi)
dans l a procédure open du module thisworkbook, tu identifies qui est
connecté et le stocke dans la variable qUi :
qUi=environ("username") 'je suppose que tu connais les identifiants de
connexion de tes utilisateurs
à l'aide de cette variable, tu gères les droits de modification à l'aide de
l'évènement change de la feuille, avec un truc du genre :

if not intersect(target,range("a:a")) is nothing then
if qui="toto" then target.offset(0,1).select
endif

--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Alfred WALLACE" a écrit dans le message de
news:
Bonjour tous les gurus !
çà fait quelques temps que ne ne suis pas passé, et
je constate que ce groupe est toujours aussi dynamique ! merci !

Mon soucis du moment est le suivant :
dans une feuille nommée TOUT.XLS , j'ai des données qui doivent être
mises à jour.
ces données se trouvent dans des colonnes : colA, colB et colC

la situation est la suivante :
1 - le propriétaire du fichier peut tout modifier.
2 - il y a une personne toto qui ne doit pouvoir modifier que la
colonne B
3 - il y a une personne tutu qui ne doit pouvoir modifier que la
colonne C

Voici la solution que j'imagine (en sachant que je ne peux pas
utiliser
des mots de passe ou une authentification quelconque...) et que je
soumet
aux experts pour conseils et corrections (certainement d'ailleurs !).

je place TOUT.XLS dans un répertoire appelé commun il n'y
à ***que*** propriétaire qui a les droits en lecture/écriture sur
commun.


je place donneesB.xls dans un répertoire appelé communrien-que-B
seul toto a les droits en lecture/écriture.

je place donneesC.xls dans un répertoire appelé communrien-que-C
seul tutu a les droits en lecture/écriture.

J'imagine que, avec cette organisation, toto et tutu ne pourront pas
se modifier le fichier des autres.

MA QUESTION :
comment, dans le fichier TOUT.XLS venir placer les données
des 2 autres fichiers pour que, à l'ouverture
de tout.xls les données de donneesB.xls et donneesC.xls viennent
s'afficher ?
j'aimerai que les colonnes dans tout.xls pour les données B et C
ne soient pas différentes visuellement des autres colonnes de
tout.xls.

en fait, c'est le même fichier dans les 3 répertoires, mais, par le
jeu
des droits d'accès à l'arborescence des dossiers je restreint les
modifications.


Voila, je ne sais pas si j'ai été suffisamment clair pour avoir
de l'aide.


Merci encore
A bientot
José