Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Demande d'aide projet suivi du personnel.

matthunter

XLDnaute Nouveau
Bonjour le Forum !

Je vous écris aujourd'hui car j'ai grandement besoin d'aide pour finir un projet (suivi du personnel).
Je ne connais que très peu le VBA et les choses que j'ai mis en place sont trouvé sur le forum et adapté à mon utilisation.

Ce qui doit rendre le projet indigeste pour les codeurs VBA qui lirons ce message !
Certaines choses que j'essaie de mettre en place ne sont pas trouvable sur le forum où je n'arrive pas à les adapter à mon fichier, c'est pour cela que je me résous à vous demander votre aide aujourd'hui.

Voilà la liste des choses que je n'arrive pas à faire :
  • Supprimer une ligne depuis le Useform Suppression cliquable sur la feuille "PROG" depuis le bouton AJOUTER/SUPPRIMER par rapport au nom de la personne à enlever.

  • Modifier les caractéristiques d'une personne (grade, nom, prénom, sexe) depuis le Useform Modification cliquable sur la feuille "PROG" depuis le bouton AJOUTER/SUPPRIMER par rapport au nom de la personne à modifier.

  • Faire en sorte que même avec l'ajout ou la suppression d'une personne, les données de la feuille "SPA" correspondes aux données personnels de la feuille "PROG". (copié de PROG vers SPA ? mais avec mise en forme différente et formules spécifique à chaque personne)

Voilà, si quelqu'un aurait des pistes pour m'aider ou le temps d'y réfléchir ce serait génial.
J'aurai du le mettre en place pour le 01/01/2020 car je croyais y arriver seul, malheureusement ce n'est pas le cas !

Merci d'avance aux personnes qui répondrons à mon message !
Cordialement.
 

Pièces jointes

  • PROG S3 2020.xlsm
    160.1 KB · Affichages: 12

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Voici de retour le fichier
J'ai laissé les userform mais en est ajouté un qui fait tout.
Je laisse toujours les noms d'origine à savoir en userform1
Une listbox et 4 combobox
Bruno
 

Pièces jointes

  • PROG S3 2020 (3).xlsm
    158.8 KB · Affichages: 15

matthunter

XLDnaute Nouveau
Merci beaucoup pour cette réponse si rapide !
Votre formule fonctionne parfaitement bien.

Pensez vous que je puisse ajouter à ça un tri automatique dans l'ordre des grades à chaque changement ?

J'avais utilisé ce code :
VB:
    Sheets("PROG").Select
    ActiveWorkbook.Worksheets("PROG").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("PROG").Sort.SortFields.Add Key:=Range("B13:B70") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "CNE,LTN,MAJ,ADC,ADJ,SCH,MCH,SGT,MDL,CC1,BC1,CCH,BCH,CPL,BRI,1CL,SDT", DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("PROG").Sort
        .SetRange Range("B13:NG70")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 
Dernière édition:

matthunter

XLDnaute Nouveau
C'est parfait, j'ai ajouté ce que je voulais et cela fonctionne parfaitement !
Il ne me reste plus qu'à trouver une solution pour la copie de ces informations sur l'autre feuille tout en gardant les formules et se sera terminé.

Merci beaucoup !
 

matthunter

XLDnaute Nouveau
Pensez vous qu'il serait possible de copier coller une mise en forme (avec formule) sur la page "SPA" depuis la page "Fériés" ?
Il faudrait que le nombre de lignes copiées correspondent au nombre de personne présente dans la liste "PROG".
Cordialement.
 

youky(BJ)

XLDnaute Barbatruc
Oui c'est toujours possible.

Je pense qu'il faudrait essayer ceci...
>en SPA >selectionner le tableau et en menu insertion >Tableau
aussi
En motif la formule est tellement longue que j'ai pas cherché mais elles ralentissent tout le fichier.
Bruno
 

matthunter

XLDnaute Nouveau
J'avais pensé à quelque chose comme ça.
Car cette action doit obligatoirement être automatique !

VB:
Private Sub Worksheet_Activate()

Dim DerLig As Long
    With ThisWorkbook.Worksheets("PROG")
        DerLig = .Range("B13" & Rows.Count).End(xlUp).Row
    End With
    
Worksheets("Fériés").Range("D32:L95").Copy .Cells(.Rows.Count, "DerLig ").End(xlUp)(2)

Worksheets("SPA").Range("B10").Select
ActiveCell.PasteSpecial Paste:=xlPasteValues

End Sub
 

matthunter

XLDnaute Nouveau
Alors, j'ai fais ça pour l'instant :
VB:
Private Sub Worksheet_Activate()

Worksheets("SPA").Range("B10:J1000").Clear
'Pour pouvoir recoller le nouveau tableau'

Worksheets("Fériés").Range("D32:L100").Copy Range("B10")
'Copie le nouveau tableau en entier'

With Worksheets("SPA")
    Worksheets("Fériés").Range("O32:R40").Copy .Cells(.Rows.Count, "D").End(xlUp)(3)
'Copie un tableau récapitulatif'  

End With
End Sub

Mais je n'arrive pas à trouver de solution pour compter le nombre de personnes présentent sur la feuille "PROG" puis à coller juste le bon nombre de lignes !
Je pensai à une boucle mais je ne pense pas que ce soit la meilleure solution.
 

xUpsilon

XLDnaute Accro
Bonjour,

Quelque chose comme
VB:
derLig = Range("C" & Rows.Count).End(xlUp).Row

Ensuite tu as juste à regarder combien de lignes il faut retirer, car là ça te renvoie la dernière ligne pleine (ici début des noms ligne 13, donc il faut enlever 12 à ton derLig pour avoir le nombre de personnes présentes).

Bonne continuation
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Sur ce fichier j'ai mis le trie et mis un Tableau en SPA
Cela qu'il fait lui même la mise en forme et de plus en couleur.
J'ai supprimé des noms afin de faire facilement des essais.
Bruno
 

Pièces jointes

  • PROG S3 2020 (3).xlsm
    160 KB · Affichages: 7

matthunter

XLDnaute Nouveau
Et si je veux ajouter le tableau récapitulatif à la fin pour pouvoir l'imprimer sur la même page, je peux simplement le coller comme ça ? Et pour le supprimer à chaque ouverture (vu qu'il peut se déplacer en fonction de l'ajout ou de la suppression de personnes) ?
VB:
With Worksheets("SPA")
    Worksheets("Fériés").Range("O32:R40").Copy .Cells(.Rows.Count, "D").End(xlUp)(3)
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…