aide creation petit programme...

jichiali

XLDnaute Nouveau
Bonjour a tous,

Je souhaite creer une base de donnée pour le pointage des salaries..
je pointe tous les jours envions 300 personnes manuellement, enfin sur excel mais bon... :(

Ce que j'aimerai; ca serai de creer la base de donnee dees salaries sur access; et ensuite juste avoir a taper les numeros d'immatriculation sur excel pour qu'ils soient automatiquement pointé sur le tableau journalier...
VOUS ME SAUVERIEZ LA VIE!!!
est ce que quelqu'un pourrait m"aider SVP..?
j'a tout essayé mais j'arrive vmt pas a trouver la solution pour faire ceci...
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

Bonjour à tous,

Voici la dernière mouture...

Maintenant tu dois renseigner l'Identifiant en premier, cela "active" la ligne. Ensuite tu dois renseigner le Lieu ET le Pointage MÊME si c'est celui qui est déjà en place. (notre ami Hasco :) devrait pouvoir régler ça en incluant un And dans son code : If Not Intersect(Target, Range("Pointage").Columns(6)) AND If Not Intersect(Target, Range("Pointage").Columns(1)) Is Nothing...) peut-être :confused:

J'ai rajouté un bouton Archive : le fichier prend le nom du mois en B1 de la feuille Salaire.

A+

Merci JC!!!

J'essai ca de suite... :p

A très vite!!;)
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

Salut Hasco,
Salut JC!!!

Desolé de mon absence...encore au boulot...eh oui...je travaille même le samedi... (et le dimanche...!!!) :(:(

JC..j'ai essayé la dernière version...alors pour le pointage, toujours rien a dire, c'est PARFAIT..

Cependant, pour "salaire".. la ca se corse...
je m'explique:
tableau "pointage": date 1er mai:
ligne 7: identifant (colonne A): je rentre "1" (identifiant du boss...), en colonne B C D "Alain Moussi Manager" ressortent... jusqu'ici tout est ok!
je choisi ensuite le lieu et le pointage...

je rentre le N°2 (ligne 8), N°3 (ligne 9), N°4... toute les données renseignées dans "data" ressortent parfaitement..

je vais dans "salaire": en ligne 6 7 8 9, les données (Num, Nom,prénom,fonction...des N°1 2 3 et 4) y sont et même le pointage :D:D en date du 1er mai.


Maintenant,
je vais dans "pointage": date 2 mai...
Je commence par pointé en lige 7: N°10, ensuite N°15...en colonne B C D, leur reference ressortent...toujours nikel..je met le lieu, et le pointage...
(en fait je pointe toujours les personnes en les regroupant par lieu...je commence par le lieu 1, je pointe les personnes présentent sur ce site le jour J, ensuite lieu 2... parce que je recois les pointages écrit, regroupés par sites...donc obligé de pointer par site... :( )

La je vais sur "salaire", et c'est le num 10 qui est à la place du N°1 (que j'avais mis précédemment...), N°15 à la place du N°2...

Ce qui fait que sur "salaire" les personnes ne sont pas figés...
et donc, je voulai savoir si sur ce tableau, je pouvais lié les données (N°, Nom, prénom et fonction) à "data", afin que ca reste figé...et ca se mettra jour si je change sur data...

Et le plus dur...(enfin je pense...d'ailleur je sais pas si c'est faisable..)
c'est que pour les pointage des colonnes J à AN (tableau "salaire"), j'aimerai que celles ci se mettent automatiquement en effectuant une recherche (ou autre fonction..) dans "pointage"...
donc si N° 15 (qu'il ai été pointé sur la ligne 7 ou la ligne X)pour le X mai, a été pointé "2", alors sur sa ligne figé dans "salaire" il soit pointé 2 pour le X mai...

je sais que mes explication ne sont pas très nette...mais j'espere que vous comprendrez au moins un peu... :eek::eek:

En espérant avoir très vite de vos nouvelles...

JE VOUS SOUHAITE UN EXCELLENT WEEK END!!!!!!! :D:D:D:D:D

A+
Al
 

JCGL

XLDnaute Barbatruc
Re : aide creation petit programme...

Bonjour à tous,
Salut Ali,

Tu as entièrement raison notre joli tableur (dantesque arf BH² :)) n'est pas suffisamment "performant"....

Je vais tenter de faire par formules et je "demande" à notre ami Hasco, s'il est disponible et partant :) , de bien vouloir réfléchir à une solution par code (que les Identifiants soient figés "(en dur") en feuille "Salaire" et en D mais conserver les colonnes E, F et G et les formules). Donc prendre la ligne + 1 si un Identifiant n'est pas reconnu et prendre la ligne si l'Identifiant est connu... et bien évidement la colonne correspondant au jour en DatePointage.

Je t'accorde, mon cher Hasco, que c'est encore quelques heures de cogitations mais quelques demi-heures de codage pour toi.

A++ mes amis
A+ à tous
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

Bonjour à tous,
Salut Ali,

Tu as entièrement raison notre joli tableur (dantesque arf BH² :)) n'est pas suffisamment "performant"....

ah non...Kan meme... je n'me permettrai pas de penser une chose pareil...
mais au final, grace à votre soutient et vos efforts, je pense qu'on pourra arriver a creer ce "petit" logiciel ideal... (n'est pas BH² :D) ....

a bientot!!!! :p:p:p

Al
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

MESSIEURS BONJOUR!!!!

Alors j'espere que vous passer un bon WE en famille... :)

j'ai essayé la dernière version ce matin en essayant de faire rentrer les pointages... (je suis en retard de 4 jours... arf :( )

et Surprise....

quand je rentre les données dans pointages...ca se repercute comme il faut ; cad pour le num Untel pour tel jour de pointage, je retrouve les données exact dans "salaires" et ensuite "facture" sur la ligne de Untel... GENIAL!!!!! c'est ce que je cherchai a expliqué et en fait c'etait deja bon...

:confused::confused: comprend pas... lol:D:D j'espere que je vous ai pas fait bosser pour rieng...

Mais au fait, je sais pas si ca y a joué pour quelque chose, mais dans "salaire" et "facture" j'ai rentrer les identifiants en me basant sur "data"...et ils sont apparemment figés...

et donc maintenant quand je pointe quelqu'un (ex 77, je le pointe en 1er sur le tableau "pointage", pour le 3 mai, je vais dans "salaire" sur la ligne de 77, et pour le 3 mai, j'ai le "1" qui est pointé...)

COOL!!! :D:D:D:D


Petite derniere precision.... j'appel JC... est ce que (si ce n'est pas trop te demander bien sur...) tu peux me dire comment faire pour que les pointages par defaut soit "1" (ca m'evite d'avoir a le rentrer pour 400 personnes...) et quand j'ai des 1,5 ou 2 a rentrer, je remplace la valeur...

MERCI!!!!!!!


A TRES VITE!!!!

Et si c'est pas aujourd'hui, je vous souhaite un excellent Dimanche!!!
:D

Al
 

JCGL

XLDnaute Barbatruc
Re : aide creation petit programme...

Bonjour à tous,

J'ai répondu à ton MP...

J'ai un peu arrangé ton fichier mais il pèse 280 Ko zippé...

A tout de suite pour ton fichier avec données confidentielles en courriel

A++
A+ à tous
 

JCGL

XLDnaute Barbatruc
Re : aide creation petit programme...

Bonjour à tous,

J'ai renvoyé le fichier à notre ami.

Modification :

* Suppression des =Pointage!$A7 et suivant en feuille Salaire, mise en "dur" des Identifiants à partir de la feuille Data

*Ajout d'un petit code pour mettre 1, en $J$6:$AN$459 de la feuille Salaire, par défaut lors de l'Archivage et donc sur le nouveau fichier créé

*Pas de modification du code d'Hasco qui continue à bien tourner malgré les formules rajoutées en $J$6:$AN$459 de la feuille Salaire mais qui se trouvent écrasées par son code

A+ à tous

Et surement à bientôt, connaissant notre ami Ali arf arf :p
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

Bonjour à tous,

J'ai renvoyé le fichier à notre ami.

Modification :

* Suppression des =Pointage!$A7 et suivant en feuille Salaire, mise en "dur" des Identifiants à partir de la feuille Data

*Ajout d'un petit code pour mettre 1, en $J$6:$AN$459 de la feuille Salaire, par défaut lors de l'Archivage et donc sur le nouveau fichier créé

*Pas de modification du code d'Hasco qui continue à bien tourner malgré les formules rajoutées en $J$6:$AN$459 de la feuille Salaire mais qui se trouvent écrasées par son code

A+ à tous

Et surement à bientôt, connaissant notre ami Ali arf arf :p

finalement t'as bien appris à me connaitre...!!! :D:D:D
 
G

Guest

Guest
Re : aide creation petit programme...

Bonjour JiChiali,
Salut JC,

Voici une proposition pour que tous les lignes de pointage (colonne F) se mette à 1 lorsque l'on change le jour dans 'Pointage'!B2

Comme la mise à jour est également faite sur salaire (Si les références idoines existent dans la feuille) cela mets 3 à 4 secondes pour 480 Lignes.

Ne sachant pas où t'envoyer le fichier xls (trop volumineux et données confidentielles) je mets ci-dessous le texte à remplacer pour le code de la feuille Pointage.

Code:
Option Explicit
Dim bCondition As Boolean
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not bCondition And Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("Pointage").Columns(6)) Is Nothing Then
        Dim NumColSalaire As Long
        Dim Ref As Variant
        Dim i As Long
        Dim c As Range
        For i = 1 To Target.Rows.Count
            Ref = Cells(Target.Rows(i).Row, 1)
            If Ref = 0 Then Exit Sub
            On Error Resume Next
            Application.EnableEvents = False
            With Sheets("Salaire")
                Set c = .Range("D6", Sheets("Salaire").Range("D6").End(xlDown)).Find(What:=Ref, LookIn:=xlValues, lookat:=xlWhole)
                If Not c Is Nothing Then
                    NumColSalaire = .Range("J3").Column + Day(Range("DatePointage")) - 1
                    .Cells(c.Row, NumColSalaire) = Target.Cells(1, 1)
                Else
                    .Cells(.Row, NumColSalaire) = 1
                End If
            End With
            Application.EnableEvents = True
            On Error GoTo 0
        Next i
    ElseIf Not Intersect(Target, Range("DatePointage")) Is Nothing Then
        Dim DerLigne As Long
        DerLigne = Range("A" & Rows.Count).End(xlUp).Row
        Range("B2") = "Mise à jour en cours...Patientez..."
        Application.Calculation = xlCalculationManual
        bCondition = True
        If DerLigne > 6 Then Range("F7:F" & DerLigne).Value = 1
        bCondition = False
        Application.Calculation = xlCalculationAutomatic
        Range("B2") = ""
    End If
End Sub
Bonne soirée à vous toutes et tous.
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

Petit rappel:
J'ai demandé à Hasco de m'aider a faire l'archivage de mon tableau "pointage"...

Hasco dit: "A quoi sert d'archiver "Pointage" qui ne reflète qu'un "jour" alors que "Salaire" te prends le mois entier...
Sur ce coup là, je te comprends de moins en moins...
Mon très cher Ali, reste "logique" "


Reponse: En fait je souhaite archiver mes "pointages", pour me permettre d'effectuer des verifications sur des dates anterieures...
A la limite, en comprenant ce que tu veux dire, je te demanderai de m'aider à archiver les deux tableaux... :eek::eek:

Qu'est ce que t'en pense..?

Merci!!!
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

Bonjour JiChiali,
Salut JC,

Voici une proposition pour que tous les lignes de pointage (colonne F) se mette à 1 lorsque l'on change le jour dans 'Pointage'!B2

Comme la mise à jour est également faite sur salaire (Si les références idoines existent dans la feuille) cela mets 3 à 4 secondes pour 480 Lignes.

Ne sachant pas où t'envoyer le fichier xls (trop volumineux et données confidentielles) je mets ci-dessous le texte à remplacer pour le code de la feuille Pointage.

Code:
Option Explicit
Dim bCondition As Boolean
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not bCondition And Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("Pointage").Columns(6)) Is Nothing Then
        Dim NumColSalaire As Long
        Dim Ref As Variant
        Dim i As Long
        Dim c As Range
        For i = 1 To Target.Rows.Count
            Ref = Cells(Target.Rows(i).Row, 1)
            If Ref = 0 Then Exit Sub
            On Error Resume Next
            Application.EnableEvents = False
            With Sheets("Salaire")
                Set c = .Range("D6", Sheets("Salaire").Range("D6").End(xlDown)).Find(What:=Ref, LookIn:=xlValues, lookat:=xlWhole)
                If Not c Is Nothing Then
                    NumColSalaire = .Range("J3").Column + Day(Range("DatePointage")) - 1
                    .Cells(c.Row, NumColSalaire) = Target.Cells(1, 1)
                Else
                    .Cells(.Row, NumColSalaire) = 1
                End If
            End With
            Application.EnableEvents = True
            On Error GoTo 0
        Next i
    ElseIf Not Intersect(Target, Range("DatePointage")) Is Nothing Then
        Dim DerLigne As Long
        DerLigne = Range("A" & Rows.Count).End(xlUp).Row
        Range("B2") = "Mise à jour en cours...Patientez..."
        Application.Calculation = xlCalculationManual
        bCondition = True
        If DerLigne > 6 Then Range("F7:F" & DerLigne).Value = 1
        bCondition = False
        Application.Calculation = xlCalculationAutomatic
        Range("B2") = ""
    End If
End Sub
Bonne soirée à vous toutes et tous.



Hasco Bonjour!!! (ou plutot devrais je dire Monsieur le pro d'Excel!!!:D:D)

EXCELLENT!!! trop cool ton code... j'esssai de le lire...mais comprend rieng... lol
cependant il fonctionne a merveille!!! et un grand merci!!!!

Je suis entrain d'essayer cette dernière version, que Hasco et l'autre Génie (Mister JC!!!! lol) m'ont aider à faire...

Je vous fait signe au plus vite... pour vous donner les dernieres informations la dessus...


MERCI ENCORE UNE FOIS!!!!!!! :D:D:D:D:D:D:D

Al
 
G

Guest

Guest
Re : aide creation petit programme...

Chers Ali, et JC,

1 - J'ai tenté une optimisation de la procédure d'archivage de la feuille 'Salaire'. Cette nouvelle version paraît plus rapide(en tous cas chez moi)

Ali, teste les deux et garde celle que tu voudras.

Nouvelle Version:
Code:
Sub ArchivageFeuilleSalaire()
    Dim Wkb As Workbook
    Dim LaDate As String
    
    On Error GoTo FinArchivage
    Application.ScreenUpdating = False
    
    'Création du nouveau classeur
    Set Wkb = Workbooks.Add
    
    ' Avec ce classeur
    With ThisWorkbook
        LaDate = Format(.Sheets("Pointage").Range("B1").Value, "yyyy_mm")
        .Sheets("Salaire").UsedRange.Copy
    End With
    
    'Avec le nouveau classeur
    With Wkb
        With .Sheets(1) ' avec sa feuille 1
            With .Range("A1")
                .PasteSpecial Paste:=xlPasteValues
                .PasteSpecial Paste:=xlPasteFormats
            End With
            .Name = "Salaire"
            .Range("A3:AQ3").EntireColumn.AutoFit
        End With
        .SaveAs Filename:=ThisWorkbook.Path & "\Gestion_Ali_" & LaDate & ".xls"
        .Close
    End With
    
    'Mettre les valeurs de la feuille 'Salaire' à blanc
    Sheets("Salaire").Range("J6:AN459").ClearContents
    
FinArchivage:
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
End Sub

Ps: Provenace Bretagne(finistère Nord), habitation Vendée depuis 10 ans après 9 ans passés dans le département de notre ami JC.

bons Tests Ali;)

bonne soiréeJC:)

A demain tous.
 

JCGL

XLDnaute Barbatruc
Re : aide creation petit programme...

Bonjour à tous,
Salut Hasco :),
Salut Ali :),

Ali : il n'y a pas photo prend le code de notre ami...;)

Nous déposerons un fichier "allégé" et anonymisé quand Ali sera satisfait du résultat (arf arf, comme il en veut toujours plus... :p)

PS : Nous conversons en MP avec Ali, qui est en Guinée, et il nous demandait où nous habitions. Ceci pour expliquer le petit mot d'Hasco...

A++
A+ à tous
 

jichiali

XLDnaute Nouveau
Re : aide creation petit programme...

Hasco bonjour,
JC bonjour,
Bonjour à tous,

je m'excuse de cette si longue absence.... quelques petits problemes internes au boulot... :p

J'ai reussi a rattraper mon temps perdu grace à ce jolie bébé crée par HASCO et JC!!!

Alors...les résultats... :p:p
Hasco...je n'arrive toujours pas à valider les "1" automatiquement dans "pointage"... ou plutot..ca pointe "1" dans "pointage" mais ce n'est pas reporté dans "salaire"...je t'envoi le dossier en MP pour essai de toi meme...lol

Et concernant le code d'archivage:
je n'ai pas reussi à le faire fonctionner...pourtant j'ai bien coller ce que tu m'as envoyé... :confused::confused::confused:

Sinon a part ca!!! j'avoue que ce logiciel m'a vraiment permit de gagner enormement de temps sur le travail...j'ai reussi a rattrapé tout le retard que j'avais... :p:p:p et surtout de m'occuper un peu du reste que j'avai que j'avais à faire...

Hasco...JC...j'espere que tu ne m'en voudrez pas si je vous demandais une fois de plus de m'aider à améliorer ce programme...:eek::eek::eek:
(amélioration que je souhaite...:
- pointage automatique des que j'active la date...ce que Hasco m'a fait...mais ca ne me pointe que quelques personnes...je t'envoi le fichier pr verif..
- archivage de "pointage" ET "salaire"

je vous envoi mon fichier en mp...

Merci beaucoup!!!!
 

Statistiques des forums

Discussions
312 023
Messages
2 084 716
Membres
102 637
dernier inscrit
TOTO33000