tableau excel partagé avec macro d'archivage

vynmarius

XLDnaute Nouveau
bonsoir,

tout d'abord voici mon vilain classeur qui me file mal au crane, enfin surtout les utilisateurs de ce classeur : en pièce jointe.


j'ai effacé la BBD pour alléger le fichier. mais mon problème n'est pas en rapport avec elle.

Ce fichier me sert à gérer les échanges de 3 magasins, avec la zone recep_0T (l'opérateur étant OepMag3 sur la feuille Mag3) il fait sa demande de matériel à chaque magasin, et met "demande MAG" dans la dernière colonne. en utilisant la macro ça complète les champs manquant, son ID, la date et l'heure.
en réponse le mag, une fois la préparation prête à livrée, met "expédié" dans cette même case, et toujours avec la même macro, envoie sur la feuille recep_0T la ligne expédiée.



je souhaite pouvoir donner accès via le réseau à certaine zone du fichier. prenons la feuille MAG3 :
je laisse la personne remplir les zones en blanc, elle y a accès via identifiant réseau, je l'ai défini avec révision>modification>permettre la modification des plages.
je suis l'admin du classeur, et j'ai donc accès à tout en lecture écriture, donc pas de problème sur mon poste. mais quand l'opérateur OepMag3 veut par exemple valider les lignes avec la macro, il faut un mot de passe. sinon ça plante. (petite précision : je n'ai pas les vrai ID réseau, vu que je bosse de chez moi, mais ça ne gène pas le fonctionnement).

donc je pense avoir deux solution, si elles existent :

- inclure dans la macro le mot de passe concernant les zones auxquelles il n'a pas accès, mais j'en doute. je n'ai pas trouvé d'instruction utilisant le mot de passe en question.

- ou alors automatiser le lancement de la macro via mon poste toutes les 5 minutes par exemple, et donc éliminer les boutons macro pour eux, ce qui me semble faisable, et limite plus simple pour eux. une étape d'enregistrement pour récupérer leurs données partagées, lancer la routine, et encore enregistrer pour leur donner accès aux modifications.

si quelqu'un connait une solution incluant le mot de passe des zones par une macro, ça m'éviterait pas mal de code à taper, car la deuxième méthode me demandera plus de travail au niveau de mes macros je pense.

merci, et bonne lecture ;)
 

Pièces jointes

  • Copie de livraison DM OEP version 1.2.zip
    89 KB · Affichages: 133
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : tableau excel partagé avec macro d'archivage

Bonjour,

A placer dans le module "thisworkbook", se déclenche à l'ouverture du classeur :
Code:
Option Explicit
Private Sub Workbook_Open()
Feuil1.Protect "toto", userinterfaceonly:=True
End Sub
bonne journée
@+
 

vynmarius

XLDnaute Nouveau
Re : tableau excel partagé avec macro d'archivage

bonjour, je reviens à la charge. donc en utilisant "Feuil1.Protect "toto", userinterfaceonly:=True" les utilisateurs pourront modifier les zones de saisies que j'aurais définie sans pouvoir modifier le reste? et mes macros auront les droits pour bouger des lignes complètes? en sachant que le classeur sera en mode partagé et donc dans chaque macro:

Code:
sub amoi ()
'j'ouvre par 
feuil1.unprotect "toto"
'j'insère mon code
'et je ferme par
feuil1.protect "toto"
end sub

cette façon de faire me donnais des erreurs, mais je n'avais pas ajouter le code dans thisworkbook:

Code:
Option Explicit
Private Sub Workbook_Open()
Feuil1.Protect "toto", userinterfaceonly:=True
End Sub

donc les zones verrouillées ne pourront pas être modifier par les utilisateurs, mais par mes macro si?


pour rappel une de mes macros :

Code:
Option Explicit
Sub ArchivageMAG3()


'champ important MAG3, recep_0T,

Dim i As Long, j As Long
Dim TestMag
    
'Sheets("MAG3").Unprotect (130510)
'Sheets("recep_0T").Unprotect (130510)
    
TestMag = 0

    ' 43 = "dernière" ligne du tableau , Step -1 = pas négatif, on remonte le tableau
    For i = 43 To 2 Step -1
    
        ' controle des formules et rajout si besoin
        If Cells(i, 4).HasFormula = False Then
            For j = 50 To 3 Step -1
                If Cells(j, 4).HasFormula = True Then
                    Cells(j, 4).Copy Destination:=Sheets("MAG3").Cells(i, 4)
                    Exit For
                End If
            Next j
        End If
          
        ' effacement propre d'une ligne sans ref
        If Cells(i, 3) = "" And Cells(i, 2) <> "" Then
            Rows(43).Copy Destination:=Sheets("MAG3").Rows.Range("A44:A50")
            Rows(i).Delete
        End If
          
        ' compteur de ligne à valeur "expédiée" et changement de valeur de l'état de la DM
        If Cells(i, 9) = "Réceptionné" Then
            TestMag = TestMag + 1
            Cells(i, 9) = "Expédié"
        End If
        
        ' mise à jour de la date et de l'heure lors de l'envoie de la demande de username
        ' et identification du demandeur lors de l'envoie de la demande
        If Cells(i, 4).Value <> "" And Cells(i, 2) = "" Then
            Cells(i, 1).Value = CDate(Str(Date) & " " & Str(Time))
            Cells(i, 2).Value = Application.UserName & " " & Environ("username")
        End If
      
        ' remplissage de la date et de l'heure de lignes "vides" lors de l'envoie de la demande
        If Cells(i, 4).Value = "" And Cells(i, 2).Value = "" Then Cells(i, 1).Value = CDate(Str(Date) & " " & Str(Time))
             
        ' copie de la ligne archivable (condition sur la colonne G) sur la dernière ligne de la feuille d'archive
        ' ajout d'une ligne neuve sur la première feuille
        ' delete de la ligne archivée
        If Cells(i, 9) = "Expédié" Then
            Rows(i).Copy Destination:=Sheets("recep_0T").Range("A65000").End(xlUp)(2)
            Rows(43).Copy Destination:=Sheets("MAG3").Rows.Range("A44:A50")
            Rows(i).Delete
        End If

                    
    Next i
          
    If TestMag <> 0 Then
        MsgBox ("Le MAG3 n'a pas validé " & Str(TestMag) & " envois ! ! ! " & Chr(13) & Chr(10) & "Attention, il faut vérifier l'état des livraisons dans le tableau 'recep_0T'." & Chr(13) & Chr(10) & "Merci.")
    End If
    
'Sheets("MAG3").Protect (130510)
'Sheets("recep_0T").Protect (130510)
ActiveWorkbook.Save

End Sub


en utilisant Sheets("MAG3").Protect (toto) dans les macros et dans thisworkbook MAG3.Protect "toto", userinterfaceonly:=True cela fonctionnera? ou il faut que j'utilise MAG3.Protect "toto", j'ai un doute sur là façon de l'écrire.
 
Dernière édition:

vynmarius

XLDnaute Nouveau
Re : tableau excel partagé avec macro d'archivage

j'ai crié victoire trop tôt. la méthode 'protect' à échoué, dès lors que je mets le fichier en mode partagé, j'ai cette erreur.

voyez par vous même, j'ai modifié le code, et je suis dans l'impasse là :s
 

Pièces jointes

  • livraison DM OEP version 1.2.zip
    85 KB · Affichages: 76
Dernière édition:

Discussions similaires

  • Résolu(e)
XL 2019 VBA
Réponses
18
Affichages
616

Statistiques des forums

Discussions
314 628
Messages
2 111 333
Membres
111 103
dernier inscrit
Maxime@mar