Ecriture automatique de la date et du nom d'utilisateur

Bonjour à tous et toutes,

J'ai quelques base en codage VBA et je souhaite réaliser un tableau où sera répertorier la date et la nom d'utilisateur de la personne quand il ouvre le document.

Il faudrait que le code permette de mettre à jour ce tableau sans supprimer les anciennes valeurs. Pour le moment le code affiche un msgbox optionnel et permet d'afficher la date et l'utilisateur mais dans une case et supprime l'ancienne valeur.

6vba-forum.xlsm (13.98 Ko)

Bonsoir,

pour faire simple : à l'ouverture du fichier, un code VBA doit se lancer afin d'inscrire la donnée date et UserName dans une feuille.
Donc déjà le code doit se trouver dans "ThisWorkbook" :

image

Une fois le double clic sur ThisWorkbook sur la fenêtre de gauche :

image

il faut dans le menu "(Général)" choisir "Workbook" et là un début de code s'inscrit automatiquement :

image

On vient de créer une SUB événementielle qui sera déroulée à l'ouverture du classeur.

Maintenant, pour inscrire les données à la suite sans effacer les anciennes valeurs il faut soit "calculer" la première ligne vide sous les données en colonne A, soit mettre ces données dans un tableau structuré sous Excel avec lequel il suffira de demander d'y ajouter une ligne nouvelle, et comme cela on n'a pas besoin de connaitre sa taille. Je vous présente le code de cette deuxième solution :

Private Sub Workbook_Open()
    ' on dimensionne une variable Tableau structuré
    Dim MonTab As ListObject
    ' on dimensionne une variable Ligne de tableau structuré
    Dim lRow As ListRow
    ' on attribue à la variable tableau le premier tableau de la feuille "Suvi_CNX", comme cela vous pouvez sous Excel donner le nom que vous voulez au tableau
    Set MonTab = Sheets("Suivi_CNX").ListObjects(1)
    ' avec ce tableau
    With MonTab
        ' on attribue à la variable ligne, la ligne "nouvelle ligne" que l'on crée, le 1 demande de l'ajouter en début de tableau
        ' comme cela la dernière connection est affichée en haut du tableau
        Set lRow = .ListRows.Add(1)
        ' avec cette ligne
        With lRow
            ' on lui attribue en colonne 1 la date du jour
            .Range.Cells(1).Value = CDate(Now) ' je met Now afin d'avoir la date et l'heure pour augmenter la précision
            ' on lui attribue en colonne 2 l'utilisateur
            .Range.Cells(2).Value = Application.UserName ' ici c'est le nom inscrit dans Excel ou la suite Office, le mieux est d'utiliser le nom de session de l'ordinateur je crois que c'est : Environ("UserName"), donc : .Range.Cells(2).Value = Environ("UserName")
        ' on a fini de jouer avec la ligne
        End With
    ' on a fini de jouer avec le tableau
    End With
End Sub

Il vous faut donc une feuille dans votre classeur qui se nomme : Suivi_CNX, et sur cette feuille il vous faut un tableau structuré avec deux entêtes : Date et Nom.
Pour faire ce tableau il vous suffit en colonne (celle que vous voulez) taper "Date" et sur la cellule à droite taper "Nom". Ensuite vous sélectionnez une des deux cellules, puis dans le ruban vous sélectionnez le menu "Insertion", puis juste en dessous un peu à gauche sélectionnez "Tableau", Excel vous demande si le tableau comporte des entêtes, vous répondez oui, puis OK. Voilà le tableau structuré de la feuille Suivi_CNX est créé.

Enregistrez et voyez ce qui se passe. Je vous fourni le fichier test sur lequel "en plus" la feuille du tableau de suivi est masquée ! Il faut aller dans VBA et modifier le paramètre de visibilité de la feuille. Le fichier :

9vba-forum-lrd.xlsm (17.49 Ko)

Et comme on "joue" avec un tableau structuré, nul besoin de connaitre sa position sur la feuille ! Comme vous pouvez le voir je l'ai mis un peu au milieu Mais si sa position ne vous convient pas, vous pouvez le déplacer où vous voulez sur la feuille Suivi_CNX et ceci sans avoir à retoucher le code car le tableau reste le premier tableau de la feuille Suivi_CNX !
Si vous vouliez le mettre sur une autre feuille, alors pour ne pas à avoir à modifier le code il aurait fallu jouer avec le nom du tableau sous Excel, à ce moment là en ciblant le "Tableau1", quelque soit la feuille sur laquelle il se trouve VBA le retrouve également !

Quand je vous disais que c'était simple !

@ bientôt

LouReeD

Bonjour,

Effectivement cela parait très simple une fois le code écrit^^'.

Je vous remercie pour votre aide cela marche comme je l'ai souhaité.

Belle journée à vous

Bonsoir,

merci pour ce retour et remerciements !
Content de voir que cela vous convienne. Bonne continuation pour votre projet.

@ bientôt

LouReeD

Bonjour,

A l'utilisation le code marche super bien mais il ralentis énormément les premières actions sur le fichier cela viendrais du code ou du fait que j'ai d'autres codes sur le fichier?

Belle journée à vous

Bonjour,

Pour moi le code est instantané. Il n'y a que deux accès feuilles.

Faut voir le reste du fichier...

@ bientôt

LouReeD

Bonjour,

Sur le fichier je l'ai fait tourné qu'avec ce code en fonctionnement, je ne vois pas pourquoi depuis que je l'ai mit celui-ci me ralenti voir crach excel.

Le fichier que je vous ai fourni, juste lui et le code, fonctionne t il dans les mêmes conditions d'utilisation que votre fichier ?

Parce que là je ne voit pas ce qui peut coincer !

Votre fichier est il trop gros pour être posté ici ?

Sinon loureed@laposte.net

@ bientôt

LouReeD

Bonjour,

Après quelques temps sans avoir touché à excel je pense que j'ai trouvé le soucis du code.

Vu que je test plein de codes en "vrac" sur un seul fichier excel je pense que celui-ci commence a saturer car après des test sur des nouveaux fichiers le code marche toujours aussi bien qu'au début.

Belle journée à vous.

Bonjour,

vous me voyez rassuré !

Merci de votre retour et remerciement !

@ bientôt

LouReeD

Rechercher des sujets similaires à "ecriture automatique date nom utilisateur"