Ajout de ligne sur deux onglets différents mais avec des informations différentes.

matthunter

XLDnaute Nouveau
Bonjour, je viens vous demander votre aide pour un projet que je souhaite mettre en place pour faciliter le travail de ma RH.

Malheureusement, je me heurte à un problème que je n'arrive pas à résoudre :

Je souhaiterais pouvoir (depuis le userForm2) ajouter une nouvelle ligne (grade, nom, prénom, sexe) qui se rangerait dans l'ordre des "GRADE" et pouvoir la modifier ou supprimer depuis le userForm2.
Mais dans l'onglet "SPA", il faudrait qu'une nouvelle ligne soit également créée au même endroit et qui garderait les formules pour la copie des informations de la "PROG".

Je suis complètement à court d'idée pour résoudre ce problème !
Merci d'avance aux personnes qui voudrons bien m'aider. :)
 
Dernière édition:

matthunter

XLDnaute Nouveau
J'ai bien commencé quelque chose, mais toutes mes pistes ne fonctionnant pas, je me suis découragé de réussir à écrire quelque chose de viable.
Mon niveau en VBA n'étant pas excellent, je ne sais pas par où commencer pour arriver au résultat attendu.
Cordialement.
 

xUpsilon

XLDnaute Accro
Bonjour,

Pour commencer, je te conseille de nommée tes plages Cadre et EMP. Comme ça, par VBA, il est facile de dire "insérer une ligne à telle plage, et redimensionner la plage selon la ligne qu'on vient d'insérer".
Ensuite, pour la modifier, il te suffit d'insérer une fonction qui lie des textbox à chaque case de la ligne sélectionnée.
Enfin pour SPA, puisqu'il ne s'agirait que d'une copie, il te suffit d'appliquer le code que tu auras fait pour la première feuille, à la deuxième également.

Voilà des pistes,
Bonne continuation
 

matthunter

XLDnaute Nouveau
Mon problème n'étant à la base pas si compliqué :

La colonne "T" de l'onglet "SPA" copie automatiquement la colonne correspondant a un jour de l'année mais cette colonne possèdent des formules "fixe".
=RECHERCHEH($I$4;PROG!$F$12:$NF$30;2;FAUX)
=RECHERCHEH($I$4;PROG!$F$12:$NF$30;3;FAUX)
=RECHERCHEH($I$4;PROG!$F$12:$NF$30;4;FAUX)

Malheureusement, l'argument en gras est inhérent à chaque ligne de l'onglet "SPA", ce qui rend donc l'ajout et la suppression de nouvelles personnes compliquée.

Si vous avez une piste la dessus ?
 

matthunter

XLDnaute Nouveau
Poste toujours ce que tu as commencé.

Daniel


> Cela fonctionne pour ajouter une personne dans l'onglet "PROG" mais je ne sais pas sur quoi partir pour le tri.
? Et pour la mise en forme de la nouvelle ligne ?

VB:
Private Sub CommandButton1_Click()
Range("B13").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = GRADE.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = TextBox2.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = TextBox3.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = SEXE.Value
ActiveCell.Offset(0, 1).Select
Range("B13").Select
MsgBox "Personnel enregistré."
Unload Me
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Juste de passage, pour une suggestion (hors sujet)
J'ai ouvert ton classeur et je propose une alternative (sans boucle - avec une version light en bonus) ;)
VB:
Sub DateFinder_II()
Dim JOUR As Range
Set JOUR = Rows(12).Find(What:=Date, After:=Cells(12, 1), LookIn:=-4163, LookAt:=2, SearchOrder:=1)
Application.Goto JOUR, True
End Sub
Sub DateFinder_II_Light()
Dim JOUR As Range
Set JOUR = Rows(12).Find(Date, Cells(12, 1), -4163, 2, 1)
Application.Goto JOUR, True
'ou
'Application.Goto JOUR
'ou
'JOUR.Select
End Sub
Ça ne résout pas la question, mais c'est toujours bon à prendre ;)

"Plaisir d'offrir, joie de recevoir" ;)
 

matthunter

XLDnaute Nouveau
Merci pour l'alternative très utile et moins gourmande que la boucle ! :D

De mon coté, j'ai mis en place mes boutons pour la création d'une nouvelle personne et mon code d'ajout fonctionne, j'aurai plusieurs questions à vous poser :

  1. Comment puis-je faire pour qu'à l'ajout d'une nouvelle personne, elle se place dans la liste au bon grade ?
    (le tri personnalisé n'étant pas automatique)

  2. Pour la suppression, je ne vois pas comment faire pour effacer la ligne complète. Si quelqu'un à une piste ?

  3. Existe-t-il un moyen pour ajouter la mise en forme lors de l'ajout d'une nouvelle ligne ?


    > Merci pour tous vos messages !
 

xUpsilon

XLDnaute Accro
Bonjour,

1. Pour la ranger au bon grade, il faut que tu nommes tes plages de données comme ça quand tu insères ta ligne tu l'insères au niveau de la plage de données correspondante (Cadre ou EMP).
2. La commande entireRow.delete te permet de supprimer la ligne entière de la cellule que tu as sélectionné.
3. Tout peut se faire, il suffit d'utiliser les commandes adaptées. A titre d'exemple Selection.Font.Color = ???? te permettra de changer la couleur de la police, etc ...

Bonne continuation
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 256
Membres
102 839
dernier inscrit
Tougtoug