Makro programu Excel do tabeli kodowania konspektu

Cze wszystkim
Mój problem polega na stworzeniu makra pozwalającego zaraz po otwarciu pliku (w sieci i dla kilku użytkowników), umieścić datę dnia dzisiejszego w żądanej linii, a także kolor użytkownika, który napisał na linii kodyfikację planu.

Dzięki temu możesz śledzić, ile i przez kogo tworzone są plany.

Ponieważ komputer ma określoną nazwę w sieci, użytkownicy, którzy kodują swoje plany w tabeli, będą mogli mieć własny kod kolorystyczny.
Czy to możliwe?


Z góry dziękuję


classeur_test.xlsx

Witam.

 

Jeśli dobrze rozumiem, co chcesz zrobić: użytkownik otwiera plik Excel, wskazuje numer planu, zamyka plik Excel?

Dlaczego nie wprowadzić daty i nazwy użytkownika w tym samym czasie? Bardzo lubię makra... ale trochę się obawiam, że niepotrzebnie komplikujesz swój plik, prawda?

3 polubienia

Poprzez 2 formularze:

Pierwszy, który określa pożądaną akcję: nowy kodyf / zapytanie o plik

drugi dla nowego CODIF.

Kolor można uzyskać za pomocą formatów warunkowych.

Wszystko, co musisz zrobić, to uzyskać identyfikator użytkownika (a priori możesz to zrobić).

1 polubienie

@Stefbeno: w przypadku nazwy użytkownika jest to

 

name = Aplikacja.NazwaUżytkownika

 

Gdzie "nazwa" jest zmienną. (Tak, spodziewałem się czegoś bardzo skomplikowanego. Ale w rzeczywistości nie ^^)

 

2 polubienia

Witam

Ostrożny Excel pozwala tylko dwóm użytkownikom edytować jeden plik w tym samym czasie!

Jeśli Utilisateur_1 otworzy plik, uzyskując do niego dostęp w celu zapisu, nie Utilisateur_2 uzyskać dostępu do pliku w celu zapisu.

3 polubienia

Dziękuję za pomoc, zajmę się tym i będę Cię informować na bieżąco.

Jeśli masz jakieś przykłady, jestem biorcą.
Dziękuję za uwagę

Zgadzam się z @Remrem

 

A jeśli nie, bo miałem trochę czasu:

 

Sub AutoName()

Nazwa = Application.UserName ' nazwa użytkownika

Derline = Arkusz1.Komórki(1, "B"). Koniec(xlW dół). Wiersz ' Pobierze ostatni niepusty wiersz komórki kolumny "Data" arkusz1 z komórki "B3"

Arkusz1.Cells(Derligne, "B") = Data 'Wprowadzono datę dnia


coul = Cells.Find(Nazwa, Komórki(1, "E")). Interior.ColorIndex 'Pobiera kolor pola z nazwą użytkownika
zakres(komórki(derligne, "a"), komórki(derligne, "c")). Interior.ColorIndex = kolor

Koniec subwoofera

 

Z drugiej strony bądź ostrożny. Nazwa użytkownika musi być RYGORYSTYCZNIE taka sama między plikiem Excela a komputerem, w przeciwnym razie nie może znaleźć (te same spacje, te same wielkie litery itp.).

Nadal uważam, że jest to źródło nudy dla twojej rzeczy!

3 polubienia

Dziękuję coin37coin,
Nie, nie tkt, to dla uproszczenia pliku Word do ręcznego wypełnienia. Są tacy, którym czasami udaje się popełnić błędy. Kiedy jedziemy za szybko...
Dziękuję, testuję to wszystko.
 

Witam, wypróbowałem makro. To nie działa.

To zaskakujące, wczoraj działało to bardzo dobrze.

 

Na jakim poziomie blokuje?

 

Edit: Tyle samo dla mnie, napisała zamiast ostatniej linijki (mała niezgodność)

 

Sub AutoName()

Nazwa = Application.UserName ' nazwa użytkownika
Derline = Arkusz1.Komórki(1, "B"). Koniec(xlW dół). Wiersz ' Pobierze ostatni niepusty wiersz komórki kolumny "Data" arkusz1 z komórki "B3"
Linia = Derline + 1 'Dodaj linię, aby przejść na puste miejsce
Arkusz1.Komórki(Linia, "B") = Data


coul = Cells.Find(Nazwa, Komórki(1, "E")). Interior.ColorIndex 'Pobiera kolor pola z nazwą użytkownika
zakres(komórki(linia, "a"), komórki(linia, "c")). Interior.ColorIndex = kolor

Koniec subwoofera

2 polubienia

Witam

Oto poprawione makro, ale będzie to zależało od kolejności działań użytkownika:

Najpierw napisze w swoim referencji na końcu listy ?

Sub AutoName()

Nazwa = Application.UserName ' nazwa użytkownika

Derligne = Arkusze("Arkusz1"). Komórki(1, "A"). Koniec(xlW dół). Wiersz ' Pobierze ostatni niepusty wiersz komórki kolumny "Data" arkusz1 z komórki "B3"

Arkusze("Arkusz1"). Komórki (Derligne, 2). Value = Date 'Wprowadzono datę dnia


Set cell = Cells.Find(what:=Name, LookAt:=xlWhole) 'Pobiera kolor pola z nazwą użytkownika
coul = komórka. Interior.ColorIndex (Indeks kolorów)
zakres(komórki(derligne, "a"), komórki(derligne, "c")). Interior.ColorIndex = kolor

Koniec subwoofera

2 polubienia

Właściwie dwie różne wersje.

 

W przypadku @PL's najpierw wprowadzasz odniesienie, a następnie umieszcza datę i kolor w auto.

W moim przypadku on umieszcza datę i kolor w auto, a następnie umieszczasz odniesienie.

 

@PL: FYI, dajesz tylko swojemu makro wybór, aby wziąć "użytkownik 2" jako kolor ;) (albo coś mi umyka)

1 polubienie

Ponownie użyłem twojego pierwszego makro coin37coin i w rzeczywistości działa, ale testuję twoje drugie, aby zobaczyć.

Tak, poprawiłem, przetestowałem dla użytkownika 2 i zapomniałem zmodyfikować  ! 

2 polubienia

Dzięki za wszystkie makro,

Nie mogę umieścić makra za pomocą przycisku. Makro nie znajduje się już na otwarciu. Zaczynam wariować.
Oto nowa tabela


classeur_test.xlsx

Aby uzyskać przycisk, musisz przejść do zakładki "programista" => wstaw => Przycisk

Następnie wstawiasz przycisk do arkusza tak, jakby był notatką (kliknięcie lewym i prawym przyciskiem myszy w lewo, aby ustawić rozmiar), a następnie kliknij prawym przyciskiem myszy przycisk => przypisz makro => wybierz makro z listy

 

Z drugiej strony, oczywiście, makro musi znajdować się w języku Visual Basic przed

 

Aby wyświetlić zakładkę programisty (jeśli jej nie masz), musisz przejść do plik => opcje => Dostosuj wstążkę => Kliknij pole "programista" w "głównych zakładkach", jeśli tego nie zrobisz

 

Nie mówię tego w pliku, bo uważam, że lepiej trochę pomęczyć się i nauczyć niż mieć rozwiązanie pod klucz ;)

 

Edit: będziesz ostrożny, zostawiasz dużo informacji w swoich plikach między tym pytaniem a poprzednim. Znajdują się tam imiona i nazwiska współpracowników lub pełna lista części Twojej firmy. Radzę edytować swoje wiadomości i je usuwać/modyfikować.


bouton_vba.png

W rzeczywistości pliki xlsX nie akceptują makr: są one usuwane po zamknięciu!

Albo musisz zarejestrować się pod xlsM. lub zapisz w .XLS (stara wersja 97).

2 polubienia

Dziękuję .PL, dlatego to nie działa.

Nie działa z przyciskiem.

Spójrz na plik, jeśli to ja zrobiłem coś złego.


classeur_test.xlsm

U mnie to działa dobrze

 

Dwie uwagi jednak:

 

-> Piszesz w ostatniej linii (ref 20244). A nie na ostatniej + 1 linijce Mała linijka modyfikacji do zrobienia jak dla mojego 2 makro

 

-> Osiągnąłeś granice VBA: jeśli to nie działa, to dlatego, że nie zapisałeś nazwy użytkownika DOKŁADNIE tak, jak została wprowadzona w maszynie. To jest to, co powiedziałem na samym początku pytania: będzie to nieustanne źródło błędów, gdy tylko pojawi się nowy użytkownik.

 

Dlatego radzę zrobić małe makro do zrobienia z każdym użytkownikiem na podstawie:

Sub DefName ()

Nazwa = Aplikacja.NazwaUżytkownika

ActiveCell = Nazwa

Koniec subwoofera

 

Musisz tylko zaznaczyć pole, w którym chcesz umieścić nazwę, uruchomić makro i gotowe, jest wypełnione poprawnie. Do zrobienia dla każdej z obecnych osób

 

1 polubienie