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 ?
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 ?
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 !
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.
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
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
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.
-> 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