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

VBA Access Discussion :

Finaliser ma programmation VBA Access au travers de mes codes VBA déjà crées [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Points : 44
    Points
    44
    Par défaut Finaliser ma programmation VBA Access au travers de mes codes VBA déjà crées
    Bonjour Chers Tous,

    Votre assistance en VBA Access me serait très utile.

    Mon projet est de créer une programmation Access pour l'archivage Electronique qui sera configure comme suite :

    L'utilisateur aura Access a une interface ou il pourra faire des recherches d'archive, insérer ou modifier les différentes données de son dossier a archiver en renseignant les items (Numéro du Dossier - Document PDF (Automatique grâce à une macro qui récupèrera le document dans une base de données qui générera en un link) -Déposant - Service - Date dépôt(automatique) - Référence Salle Archive-N° Étagère-Période de conservation(automatique)-Date destruction(automatique)

    L'administrateur sera à l'arrière de l'interface pour une régulation des données renseignées quotidiennement.

    Merci voir mes Macro VBA Access déjà initié dont j'ai besoin des améliorations pour perfectionner mon projet.
    Vous pourrez aussi voir mes différentes captures d'écran pour une meilleur visibilité.

    Pour toutes questions sur open 24h/24 et 7j/7

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Option Compare Database
    Option Explicit
     
    '======================================================================================================================================================
    ' AVANT DE COMMENCER :
    ' Sur formulaire, liste_fichiers définir Origine Source sur Liste Valeurs pour pouvoir remplir par code
    ' Dans éditeur VBA, Outils/Références => Microsoft Office 16.0 Object Library pour piloter boîtes dialogues standrads
    '======================================================================================================================================================
     
    Private Sub parcourir_Click()
    Dim boite_dialogue As Office.FileDialog
    Dim nom_dossier As String: Dim fichier As Object   'Pour manipuler les fichiers et dossiers
    Dim dossier, chaque_fichier
     
    Set boite_dialogue = Application.FileDialog(msoFileDialogFolderPicker) 'Initialiser sur boîte de dialogue pour désigner dossier
    boite_dialogue.Title = "Sélectionner un dossier pour récupérer son contenu"
     
    'signifie que l'utilisateur à sélectionné un dossier et pas cliqué sur Annuler
    If boite_dialogue.Show = -1 Then
     
    nom_dossier = boite_dialogue.SelectedItems(1)
    chemin.Value = nom_dossier
     
    'objet ActiveX, grâce à la fonction VBA CreateObject pour manipuler les fichiers et dossiers
    Set fichier = CreateObject("scripting.filesystemobject")
    Set dossier = fichier.getfolder(nom_dossier)
     
     
    For Each chaque_fichier In dossier.Files
     
        liste_fichiers.AddItem chaque_fichier.Name
     
    Next chaque_fichier
     
    End If
     
     
    End Sub
     
    Private Sub liste_fichiers_Click()
    Dim nom_fichier As String: Dim taille As String: Dim extension As String
    Dim date_creation As String: Dim date_modification As String
    Dim objet_fichier 'Objet fichier pour désigner le fichier cliqué et récupérer ses propriétés
    Dim contenu_fichier As String
    Dim taille_lecture As Integer, NLibre As Integer
     
        nom_fichier = chemin.Value & "\" & liste_fichiers.Value
        Set objet_fichier = CreateObject("scripting.filesystemobject") 'fonction ActiveX CreateObject, faire référence à un objet Activex, objet externe manipulé par un pilote
     
        extension = objet_fichier.GetExtensionName(nom_fichier)
        taille = objet_fichier.GetFile(nom_fichier).Size
        date_creation = objet_fichier.GetFile(nom_fichier).DateCreated
        date_modification = objet_fichier.GetFile(nom_fichier).DateLastModified
     
        detail.Value = "Créé le : " & date_creation & ", modifié le : " & date_modification & Chr(13) & Chr(10) & "Taille : " & taille & " Octets"
        '===============================
        'Avant Select case, tester pendant la vidéo
        '===============================
     
        Select Case UCase(extension)
     
        Case "JPG", "GIF", "PNG", "JPEG", "BMP"
            contenu.Visible = False
            img.Visible = True
            img.Picture = nom_fichier
        Case "TXT", "CSV"
     
            contenu.Visible = True
            img.Visible = False
     
            NLibre = FreeFile   'Attribution d'une adresse mémoire libre
            Open nom_fichier For Input As NLibre 'Ouverture du fichier à cette adresse
            taille_lecture = LOF(NLibre)            'Récupère la taille du Fichier en octets
            contenu_fichier = Input(taille_lecture, NLibre)   'Récupère le texte sur la longueur de cette taille, soit tout le contenu
            Close NLibre
     
            contenu.Value = contenu_fichier
        Case Else
     
            contenu.Visible = True
            img.Visible = False
     
            contenu.Value = "Contenu non disponible !" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Cliquez sur le bouton Ouvrir pour l'exécuter dans son application"
        End Select
     
    End Sub
     
    Private Sub ouvrir_Click()
     
        Dim nom_fichier As String: Dim MonApplication As Object 'Pour ouvrir un fichier dans son application
     
        nom_fichier = chemin.Value & "\" & liste_fichiers.Value
     
        Set MonApplication = CreateObject("Shell.Application") 'fonction ActiveX CreateObject, faire référence à un objet Activex, objet externe manipulé par un pilote
        MonApplication.Open (nom_fichier)
     
    End Sub
     
    Private Sub fermer_Click()
        DoCmd.Close acForm, "acces_fichiers"
    End Sub
    Les différentes captures d'écrans
    Images attachées Images attachées    

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    améliorations pour perfectionner mon projet
    Mais encore ? Quelles améliorations souhaites-tu ?

    Là le code est assez court et semble correctement structuré donc à priori pas grand chose à revoir.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Bonjour Noslib,
    On dirait que vous voulez traduire votre application Excel en application Access! n'est-ce pas ?
    Est-ce que le fichier en annexe répond à vos besoins ?
    Fichiers attachés Fichiers attachés

  4. #4
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.



    Mais encore ? Quelles améliorations souhaites-tu ?

    Là le code est assez court et semble correctement structuré donc à priori pas grand chose à revoir.

    A+
    Bonjour,

    Quand j'execulte ma macro elle ne repond pas c'est le veritable hic.
    Et je ne sais ou se trouve le probleme pourriez-vous reverifier pour moi.

    Merci

  5. #5
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Bonjour Noslib,
    On dirait que vous voulez traduire votre application Excel en application Access! n'est-ce pas ?
    Est-ce que le fichier en annexe répond à vos besoins ?
    Bonjour,
    Merci bien pour ta reponse elle m'est bien approprie mais il y a un hic comment dissocier l'interface utilisateur de celui d'administrateur vu que l'utilisateur ne doit voir l'interface administrateur lorsqu'il ouvre le fichier.
    Il doit voir uniquement son interface utilisateur et moi l'administrateur je peux voir les deux interfaces.
    Peux tu m'envoyer un powerpoint explicative et me dire comment le faire.

    Merci pour ton aide.

  6. #6
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Une solution simple (il y en a d'autres) serait de :
    1. Créer un formulaire d'accueil (Welcome Screen) dans lequel on introduit un mot de passe (celui de l'Admin est forcément différent de celui de l'utilisateur);
    2. Ces mots de passe sont encodés et gérés dans un module VBA
    3. Ce module VBA doit être protégé par mot de passe de l'admin (sinon, n'importe qui pourra y trouver les mots de passe); Si le mot de passe de l'admin est oublié. Impossible de manipuler la database !!!
    4. Après introduction du mot de passe correct, ouvrir le formulaire de travail dans lequel certains TextBoxes (ou autres contrôles) sont cachés pour l'utilisateur, mais visibles pour l'admin. exemple:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Me.NomDossier.Visible = False   'pour l'utilisateur et
      Me.NomDossier.Visible = True   'pour l'admin


    Si vous avez des difficultés à mettre cette solution en pratique, vous pouvez réagir en indiquant clairement vos spécifications, notamment ce que vous voulez empêcher l'utilisateur de faire.

  7. #7
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Points : 44
    Points
    44
    Par défaut
    Ta proposition est bonne

    1. Créer un formulaire d'accueil (Welcome Screen) dans lequel on introduit un mot de passe (celui de l'Admin est forcément différent de celui de l'utilisateur);
    2. Ces mots de passe sont encodés et gérés dans un module VBA
    3. Ce module VBA doit être protégé par mot de passe de l'admin (sinon, n'importe qui pourra y trouver les mots de passe); Si le mot de passe de l'admin est oublié. Impossible de manipuler la database !!!
    4. Après introduction du mot de passe correct, ouvrir le formulaire de travail dans lequel certains TextBoxes (ou autres contrôles) sont cachés pour l'utilisateur, mais visibles pour l'admin.

    Mais peux-tu matérialiser dans le précédent fichier vu que je crains de mal l’insérer dans le module VBA et créer un bug.

    Si possible j'aimerais un truc de ce genre comme sur la capture d'ecran si cela est possible de faire quelque ajout comme suit :

    Chaque utilisateur devra insérer son USERNAME ainsi que son mot de Passe avant d’avoir accès à l’interface utilisateur et pour chaque insertion ou modification d’un dossier par un utilisateur on doit voir dans l'interface administrateur la dernière date et heure de modification ou ajout du dossier et l'username ou l’email de l’utilisateur ayant modifie qui doit être mentionne devant la ligne du dossier modifie ou ajoute
    1. Créer dans l’interface administrateur une colonne nommée nom ou mail utilisateur du modificateur :qui mentionnera le nom ou le mail de l’utilisateur ayant modifie le dossier sur la ligne
    2. Créer dans l’interface administrateur une colonne nommée Date et heure de modification où ajout : où seront gérées la dernière date et heure de modification


    NB: S’il n’est pas possible d’avoir différents username & mot de passe pour chaque utilisateur nous utiliserons un seul username & un seul mot de passe pour tous les utilisateurs.

    Ta proposition pour l'ajout d'un mot de pas Administrateur reste également maintenue.

    Nom : Ecran d'acceuil souhaite.png
Affichages : 326
Taille : 136,5 Ko


    J’admire ta compréhension

  8. #8
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Je vais revenir avec une proposition, mais ce serait plus simple si je peux avoir une copie (Zip) de ta base de données dans laquelle tu auras remplacé les données sensibles par des données fictives ! exemple:
    pour le nom d'une personne: Alpha
    Tel: 1234565
    service: Service01
    ...etc
    Une liste de 10 à 20 personnes suffit.

  9. #9
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Je vais revenir avec une proposition, mais ce serait plus simple si je peux avoir une copie (Zip) de ta base de données dans laquelle tu auras remplacé les données sensibles par des données fictives ! exemple:
    pour le nom d'une personne: Alpha
    Tel: 1234565
    service: Service01
    ...etc
    Une liste de 10 à 20 personnes suffit.

    Bonjour ,

    priere voir en attache les differents ajouts en Zip exceldatabase Zip.zip

    Cordialement

  10. #10
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Merci pour ton retour! je suis occupé avec le projet, mais tu ne m'as pas spécifié les actions que seul l'admin peut faire et que les autres ne peuvent absolument pas faire (exemple: changer un mot de passe, supprimer une archive, ... etc.)

  11. #11
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Merci pour ton retour! je suis occupé avec le projet, mais tu ne m'as pas spécifié les actions que seul l'admin peut faire et que les autres ne peuvent absolument pas faire (exemple: changer un mot de passe, supprimer une archive, ... etc.)

    Bonjour Zekraoui,

    Ci-dessous les diffrentes taches de l'administrateur
    1. Changer les mots de passes et si possibles les utilisateurs ayant acces a l'interface utilisateur et administrateurs
    2. voir toutes les activites effectuees par les utilisateurs
    3. supprimer une archive apres 10 ans


    Ci-dessous les diffrentes taches de l'utilisateur
    1. Ajouter et modifier les colonnes numero de dossier - Nom du dossier - document PDF - date de depot - Ref Salle Archive - Numero Etagere - Ajouter document - remplacer document - des documents a archiver
    2. Acces unique a l'interface utilisateur
    3. Ne pas pouvoir modifier son mot de passe
    4. pouvoir effectuer des recherches d'archives
    5. ne pas ajouter ni modifier la date de destruction et la periode de conservation


    NB: Periode de conservation pour tous les documents est de 10ans elle doit etre automatique a chaque fois qu'une nouvelle fiche est creee par un utilisateur.
    la date de destruction doit etre automatique a chaque fois qu'une nouvelle fiche est creee par un utilisateur.
    Si possible le nom du deposant et du service doivent generes automatiquement dans les colonnes Deposant et Service lorsque l'utilisateur ajoute une nouvelle ligne de fiche d'archive.


    Merci bien pour ton aide.

  12. #12
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Voici la 2è version (sans tes dernières spécifications)
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2010, 17h52
  2. [XL-2002] Besoin d'aide pour finaliser Macro mise en forme + bordure
    Par warrio67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/03/2010, 05h23
  3. Réponses: 6
    Dernier message: 23/06/2007, 12h29
  4. Réponses: 1
    Dernier message: 12/04/2007, 11h30
  5. Besoin d'aide pour un petit programme
    Par Nico35 dans le forum C
    Réponses: 13
    Dernier message: 25/05/2006, 22h21

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