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" :
Une fois le double clic sur ThisWorkbook sur la fenêtre de gauche :
il faut dans le menu "(Général)" choisir "Workbook" et là un début de code s'inscrit automatiquement :
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 :
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