Macro Excel pour tableau de codification plan

Bonjour à tous,
Mon problème est de crée une macro permetant dès l'ouverture du fichier ( en réseau & pour plusieurs utilisateurs ), de mettre la date d'aujoud'hui sur la ligne voulu ainsi que la couleur de lutilisateur qui a inscrit sur une ligne la codification du plan.

Cela permet de suivre combien et par qui sont crées les plans.

Comme l'ordinateur à un nom spécifique dans le réseau les utilisateurs qui codifis leurs plans dans le tableau pourront avoir un code couleur à eux.
Es ce que c'est possible ?


Merci d'avance


classeur_test.xlsx

Hello.

 

Si je comprends bien ce que tu veux faire : l'utilisateur ouvre le fichier excel, indique le N° de plan, referme le fichier excel ?

Pourquoi ne pas rentrer la date et le nom d'utilisateur en même temps ? J'aime beaucoup le macros ... mais j'ai un peu peur que tu complexifies ton fichier inutilement non ?

3 « J'aime »

en passant par 2 formulaires :

le premier pour déterminer l'action voulu : nouvelle codif / interrogation du fichier

le second pour la nouvelle codif.

La couleur peut être obtenue par les formats conditionnels.

Il ne reste qu'à obtenir l'identifiant de lutilisateur (à priori vous y arrivez).

1 « J'aime »

@Stefbeno : pour le nom utilisateur, c'est

 

nom = Application.UserName

 

Où "nom" est la variable. (oui, je m'attendais à un truc bien compliqué. Mais en fait non ^^)

 

2 « J'aime »

Salut,

Attention Excel ne permet à deux utilisateurs de modifier en même temps un seul fichier !

Si Utilisateur_1 ouvre le fichier en y accèdant en écriture, Utilisateur_2 ne peut accèder à ce fichier en écriture.

3 « J'aime »

Merci de votre aide je regarde cela et vous tien au courant.

si vous avez des exemple je suis preneur .
Merci d'anvance

Suis d'accord avec @Remrem

 

Et sinon, parceque j'avais un peu de temps :

 

Sub NomAuto()

Nom = Application.UserName 'nom utilisateur

Derligne = Feuil1.Cells(1, "B").End(xlDown).Row 'Va chercher la dernière ligne non vide de la colonne cellule "Date" feuille1 à partir de la cellule "B3"

Feuil1.Cells(Derligne, "B") = Date 'Inscrit la date du jours


coul = Cells.Find(Nom, Cells(1, "E")).Interior.ColorIndex 'Recupere la couleur de la case avec le nom utilisateur
Range(Cells(Derligne, "A"), Cells(Derligne, "C")).Interior.ColorIndex = coul

End Sub

 

Parcontre, attention. Il faut que le nom d'utilisateur soit RIGOUREUSEMENT le même entre le fichier excel et le PC, sinon il ne peut pas trouver (les mêmes espaces, les mêmes majuscule, etc etc).

Je continue à croire que c'est source d'ennuie ton truc !

3 « J'aime »

Merci coin37coin,
Non ne tkt pas c'est pour simplifié un fichier word a remplir à la main. il y en a qui arrive à faire des érreurs parfois. quand t-on va trop vite ...
Merci je test tout cela.
 

Bonjour, j'ai essayé la macro . elle ne marche pas .

C'est étonnant, elle fonctionnait très bien hier.

 

A quel niveau es-ce que ça bloque ?

 

Edit : Autant pour moi, elle inscrivait à la place de la dernière ligne (petit oublie de décallage)

 

Sub NomAuto()

Nom = Application.UserName 'nom utilisateur
Derligne = Feuil1.Cells(1, "B").End(xlDown).Row 'Va chercher la dernière ligne non vide de la colonne cellule "Date" feuille1 à partir de la cellule "B3"
Ligne = Derligne + 1 'Ajouter une ligne pour aller sur une vide
Feuil1.Cells(Ligne, "B") = Date 'Inscrit la date du jours


coul = Cells.Find(Nom, Cells(1, "E")).Interior.ColorIndex 'Recupere la couleur de la case avec le nom utilisateur
Range(Cells(Ligne, "A"), Cells(Ligne, "C")).Interior.ColorIndex = coul

End Sub

2 « J'aime »

Bonjour,

Voila la macro corrigée mais ça va dépendre de l'ordre des actions de l'utilisateur :

Il va d'abord écrire en sa référence à la fin de la liste ?

Sub NomAuto()

Nom = Application.UserName 'nom utilisateur

Derligne = Sheets("Feuil1").Cells(1, "A").End(xlDown).Row 'Va chercher la dernière ligne non vide de la colonne cellule "Date" feuille1 à partir de la cellule "B3"

Sheets("Feuil1").Cells(Derligne, 2).Value = Date 'Inscrit la date du jours


Set cellule = Cells.Find(what:=Nom, LookAt:=xlWhole) 'Recupere la couleur de la case avec le nom utilisateur
coul = cellule.Interior.ColorIndex
Range(Cells(Derligne, "A"), Cells(Derligne, "C")).Interior.ColorIndex = coul

End Sub

2 « J'aime »

Deux versions différentes en effet.

 

Avec celle de @PL, tu inscris d'abord la référence puis ensuite il met la date et la couleur en auto.

Avec la mienne, il met la date et couleur en auto puis tu mets la référence.

 

@PL : pour info, tu ne laisse le choix à ta macro que de prendre "utilisateur 2" pour la couleur ;) (ou un truc m'échappe)

1 « J'aime »

J'ai réutilisé ta première macro coin37coin et elle fonctionne enfaite mais je test ta deuxième pour voir.

Oui j'ai corrigé, j'avais testé pour utilisateur 2 et j'ai oublié de modifier  ! 

2 « J'aime »

Merci pour toute les macro,

je n'arrive pas à mettre la macro avec le boutton . la macro n'est plus à l'ouverture . je devien fou .
Voici le nouveau tableau


classeur_test.xlsx

Pour le bouton, il faut aller dans l'onglet "developpeur" => insérer => Bouton

Ensuite, tu fais inseres le bouton dans ta feuille comme si c'etait une note (un clic gauche et droite à gauche pour en définir la taille) puis un clic droit sur le bouton => affecter une macro => sélectionner ta macro dans la liste

 

Parcontre, bien évidement, il faut que la macro soit dans ton visual basic avant

 

Pour afficher l'onglet développeur (si tu ne l'as pas), il faut aller dans fichier => options => Personnaliser le ruban => cicher la case "developpeur" dans "onglets principaux" si ce n'est pas fait

 

Je te ne te le fais pas dans le fichier, parceque je penses qu'il vaut mieux galerer un peu et apprendre que d'avoir du clef en main ;)

 

Edit : tu ferras attention, tu laisses beaucoup d'information dans tes fichiers entre cette question et la précédente. Il y a le nom de tes collegues ou la liste complete des pièces de ton entreprises. Je te conseil d'éditer tes messages et de les retirer/Modifier.


bouton_vba.png

En fait les fichiers xlsX n'acceptent pas les macro : elles sont effacées à la fermeture !

Il faut soit faire un enregistrer sous en xlsM. soit enregistrer en .XLS (ancienne version 97).

2 « J'aime »

Merci .PL , c'est pour ca que ca marche pas.

Ca ne marche pas avec le bouton.

Regardez le fichier, si c'est moi qui est mal fait quelque chose.


classeur_test.xlsm

Pour moi, elle fonctionne bien

 

Deux remarque cependant :

 

-> Tu écris sur la dernière ligne (ref 20244). Et non pas sur la dernière + 1 ligne Petite ligne de modif à apporter comme pour ma 2eme macro

 

-> Tu as atteinds les limites de la VBA : si ça ne fonctionne pas, c'est que tu n'as pas écris le nom de l'utilisateur EXACTEMENT comme il est renseigné dans la machine. C'est ce que je disais tout au début de la question : ca va être une source d'erreur perpetuelle dès qu'un nouvel utilisateur va faire irruption.

 

Je te conseillerai donc une petite macro à faire avec chaque utilisateur sur la base de :

Sub DefNom ()

Nom = Application.UserName

ActiveCell = Nom

End Sub

 

Il te faut juste sélectionner la case où mettre le nom, lancer la macro et hop, elle est remplie correctement. A faire pour chaqu'une des personnes présente

 

1 « J'aime »