Excel-macro voor overzichtscoderingstabel

Hoi allemaal
Mijn probleem is om een macro te maken die het mogelijk maakt om, zodra het bestand is geopend (op een netwerk en voor meerdere gebruikers), de datum van vandaag op de gewenste regel te zetten, evenals de kleur van de gebruiker die op een regel de codering van het plan heeft geschreven.

Hiermee kunt u bijhouden hoeveel en door wie de plannen zijn gemaakt.

Aangezien de computer een specifieke naam in het netwerk heeft, kunnen gebruikers die hun plannen in de tabel coderen, een eigen kleurcode hebben.
Is het mogelijk?


Bij voorbaat dank


classeur_test.xlsx

Hallo.

 

Als ik het goed begrijp wat je wilt doen: de gebruiker opent het Excel-bestand, geeft het plannummer aan, sluit het Excel-bestand?

Waarom voert u de datum en gebruikersnaam niet tegelijkertijd in? Ik hou echt van macro's ... maar ik ben een beetje bang dat je je dossier onnodig ingewikkeld maakt, toch?

3 likes

via 2 formulieren:

De eerste om de gewenste actie te bepalen: nieuwe codif / query van het bestand

de tweede voor de nieuwe CODIF.

Kleur kan worden verkregen door voorwaardelijke formaten.

Het enige dat u hoeft te doen, is de ID van de gebruiker krijgen (a priori kunt u dit doen).

1 like

@Stefbeno: voor de gebruikersnaam is het

 

name = Toepassing.Gebruikersnaam

 

Waarbij "naam" de variabele is. (Ja, ik verwachtte iets heel ingewikkelds. Maar in feite niet ^^)

 

2 likes

Hallo

Voorzichtig Excel staat slechts twee gebruikers toe om een enkel bestand tegelijkertijd te bewerken!

Als Utilisateur_1 het bestand opent door het te openen om te schrijven, heeft Utilisateur_2 geen toegang tot het bestand om te schrijven.

3 likes

Bedankt voor je hulp, ik zal dit onderzoeken en je op de hoogte houden.

Als je voorbeelden hebt, ik ben een nemer.
Bedankt voor je aanmelding

Ben het met @Remrem eens

 

En zo niet, omdat ik een beetje tijd had:

 

Sub AutoName()

Name = Application.UserName ' gebruikersnaam

Derline = Blad1.Cellen(1, "B"). Einde (xlDown). Rij' Haalt de laatste niet-lege rij van de kolomcel "Datum" blad1 op uit cel "B3"

Sheet1.Cells(Derligne, "B") = Datum 'Ingevoerd de datum van de dag


coul = Cellen.Vind(Naam, Cellen(1, "E")). Interior.ColorIndex 'Haalt de kleur van het vak op met de gebruikersnaam
bereik(cellen(derligne, "a"), cellen(derligne, "c")). Interior.ColorIndex = kleur

Einde Sub

 

Aan de andere kant, wees voorzichtig. De gebruikersnaam moet RIGOUREUS hetzelfde zijn tussen het Excel-bestand en de pc, anders kan deze niet vinden (dezelfde spaties, hetzelfde hoofdlettergebruik, enz. enz.).

Ik blijf geloven dat het een bron van verveling is voor jouw ding!

3 likes

Bedankt coin37coin,
Nee, niet doen, het is voor vereenvoudigd een woordbestand om met de hand in te vullen. Er zijn er die er soms in slagen om fouten te maken. Wanneer gaan we te snel...
Bedankt, ik test dit allemaal.
 

Hallo, ik heb de macro geprobeerd. het werkt niet.

Het is verrassend, het werkte gisteren heel goed.

 

Op welk niveau blokkeert het?

 

Edit: Wat voor mij, ze schreef in plaats van de laatste regel (kleine mismatch)

 

Sub AutoName()

Name = Application.UserName ' gebruikersnaam
Derline = Blad1.Cellen(1, "B"). Einde (xlDown). Rij' Haalt de laatste niet-lege rij van de kolomcel "Datum" blad1 op uit cel "B3"
Lijn = Derline + 1 'Voeg een regel toe om op een lege te gaan
Blad1.Cellen(Regel, "B") = Datum


coul = Cellen.Vind(Naam, Cellen(1, "E")). Interior.ColorIndex 'Haalt de kleur van het vak op met de gebruikersnaam
bereik(cellen(lijn, "a"), cellen(lijn, "c")). Interior.ColorIndex = kleur

Einde Sub

2 likes

Hallo

Hier is de gecorrigeerde macro, maar deze hangt af van de volgorde van de acties van de gebruiker:

Hij zal eerst zijn referentie aan het einde van de lijst schrijven ?

Sub AutoName()

Name = Application.UserName ' gebruikersnaam

derligne = vellen("blad1"). Cellen(1, "A"). Einde (xlDown). Rij' Haalt de laatste niet-lege rij van de kolomcel "Datum" blad1 op uit cel "B3"

Vellen("Blad1"). Cellen (Derligne, 2). Waarde = Datum 'De datum van de dag ingevoerd


Set cell = Cells.Find(what:=Name, LookAt:=xlWhole) 'Haalt de kleur van het vak op met de gebruikersnaam
coul = cel. Interieur.ColorIndex
bereik(cellen(derligne, "a"), cellen(derligne, "c")). Interior.ColorIndex = kleur

Einde Sub

2 likes

Inderdaad twee verschillende versies.

 

Bij @PL's voer je eerst de referentie in en vervolgens zet hij de datum en kleur in auto.

Bij de mijne zet hij de datum en kleur in auto en dan zet jij de referentie.

 

@PL: Ter info, je geeft je macro alleen de keuze om "gebruiker 2" te nemen voor de kleur;) (of iets ontsnapt me)

1 like

Ik heb je eerste coin37coin-macro opnieuw gebruikt en het werkt in feite, maar ik test je tweede om te zien.

Ja, ik heb gecorrigeerd, ik had getest voor gebruiker 2 en ik ben vergeten aan te passen  ! 

2 likes

Bedankt voor alle macro,

Ik kan de macro niet met de knop zetten. De macro is niet meer bij de opening. Ik word gek.
Hier is de nieuwe tabel


classeur_test.xlsx

Voor de knop moet je naar het tabblad "ontwikkelaar" gaan => invoegen => knop

Vervolgens voegt u de knop in uw blad in alsof het een notitie is (een linker- en rechtermuisklik naar links om de grootte in te stellen) en vervolgens een rechtermuisknop op de =-knop> een macro toewijzen => selecteer uw macro uit de lijst

 

Aan de andere kant moet de macro natuurlijk eerst in je visuele basis staan

 

Om het ontwikkelaarstabblad weer te geven (als je het niet hebt), moet je naar bestand => opties => Het lint aanpassen => klik op het vakje "ontwikkelaar" in "hoofdtabbladen" als je dat niet doet

 

Ik vertel het je niet in het dossier, omdat ik denk dat het beter is om een beetje te worstelen en te leren dan een kant-en-klare oplossing te hebben;)

 

Edit: je zult voorzichtig zijn, je laat veel informatie achter in je bestanden tussen deze vraag en de vorige. Er is de naam van je collega's of de volledige lijst van onderdelen van je bedrijf. Ik raad je aan om je berichten te bewerken en te verwijderen/wijzigen.


bouton_vba.png

In feite accepteren xlsX-bestanden geen macro's: ze worden verwijderd wanneer ze worden gesloten!

U moet zich registreren onder xlsM. of opslaan in .XLS (oude versie 97).

2 likes

Bedankt .PL, daarom werkt het niet.

Het werkt niet met de knop.

Kijk naar het bestand, als ik degene ben die iets verkeerd heeft gedaan.


classeur_test.xlsm

Voor mij werkt het goed

 

Twee opmerkingen echter:

 

-> Je schrijft op de laatste regel (ref 20244). En niet op de laatste + 1 regel Kleine lijn van wijziging te maken zoals voor mijn 2e macro

 

-> Je hebt de limieten van de VBA bereikt: als het niet werkt, komt dat omdat je de naam van de gebruiker niet PRECIES hebt geschreven zoals deze in de machine is ingevoerd. Dat is wat ik helemaal aan het begin van de vraag zei: het wordt een voortdurende bron van fouten zodra een nieuwe gebruiker binnenstormt.

 

Ik zal je daarom adviseren om een kleine macro te maken die je met elke gebruiker kunt doen op basis van:

Sub DefName ()

Naam = Toepassing.Gebruikersnaam

ActiveCell = Naam

Einde Sub

 

Je hoeft alleen maar het vakje aan te vinken waar je de naam wilt plaatsen, de macro te starten en voilà, het is correct ingevuld. Te doen voor elk van de aanwezigen

 

1 like