Supprimer onglet ligne et cellule selon la réponse d'un combobox

Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour

J'ai besoin d'un peu d'aide. Cela fait 2 jours que j'essaye en vain de chercher sur internet une réponse.

Donc je vous explique la situation, je crée une programme Excel pour le suivi des collaborateur. Le programme est composé d'une parti manager et une parti superviseur. L'ouverture de fichier et bloquer par un mot de passe. Ce que je cherche à faire c'est supprimer l'onglet, la cellule et la ligne correspondant à la sélection que l'on choisit par le combobox du l'Userform SupprimerColla. La ligne à supprimer se situe dans l'onglet « fichier collaborateurs » et en ce qui concerne la cellule elle se trouve dans la feuille « parametrage ». le UserForm se lance depuis le bouton dans la feuille "Nouveau Collaborateur"

Je ne sais vraiment pas comment faire et par quoi commencer.

Merci pour votre aide



Sub ouvreform1()
SupprimerColla.Show
End Sub


Private Sub Annuler_Click()
Unload Me
End Sub

Private Sub UserForm_Click()
Option Compare Text
Dim f, dico
Private Sub UserForm_Initialize()
Set f = Sheets("fichier collaborateurs")
Set dico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("C2:C" & f.[C65000].End(xlUp).Row)
dico(c.Value) = ""
Next c
temp = dico.keys
Call tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
End Sub



Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

Private Sub Valider_Click()
Dim ret As Integer
ret = MsgBox("ætes-vous sur de vouloir supprimer ce collaborateur", vbYesNo)
If ret = vbNo Then
Exit Sub
Else
End Sub
A voir également:

4 réponses

thev Messages postés 1986 Date d'inscription   Statut Membre Dernière intervention   713
 
Le code pour charger les collaborateurs triés dans ta combobox fonctionne-t-il ?
Des précisions sur ton besoin seraient nécessaires.
1- l'identification d'un collaborateur est-elle bien unique ?
2- peux-tu expliciter cette phrase : et en ce qui concerne la cellule elle se trouve dans la feuille « parametrage ».
--
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Hello
merci pour cette réponse si rapide.
pour répondre a des 2 questions:
- 1: les onglets sont fait automatiquement par le nom et le prénom
- 2: pour supprimer la cellule qui se trouve dans l'onglet "parametrage" sur la ligne

Le code pour charger les collaborateur fonctionnent bien.

le lien pour télécharger le programme : http://we.tl/CFszDg52T9
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
un autre lien si l'autre ne fonctionne pas: http://we.tl/LSxnkWY0Hc

nom:ADMIN
Mot de passe: ADMIN
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour, a vous deux,

Benny87

fichier exemple: https://www.cjoint.com/c/EItkgrQYaGf

A adapter a votre fichier que je n'avais pas ce matin
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
merci 100 fois même encore plus
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
une question pour la suppression de la cellule:
je voudrais plutôt supprimer la colonne qui contient ce nom qui se trouve seulement sur la ligne 1 de ce même fichier.
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
With Worksheets("parametrage")
If Application.CountIf(.Rows(1), ComboBox1.Text) > 0 Then 'Nom collab existe
lig = 1
'recherche ligne
lig = .Rows(1).Find(ComboBox1.Text, .Cells(lig, 3), , xlWhole).Row
.Range(lig).Delete Shift:=xlUp
Else
MsgBox "Attention Collaborateur " & ComboBox1.Text & " pas dans onglet parametrage!!!!!"
End If
End With
MsgBox "Toutes Les Informations du Collaborateur " & ComboBox1.Text & " ont ete supprimees......."
UserForm_Initialize
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Si vous avez le temps, pouvez-vous m'expliquer en détail le code pour que j'apprenne un peu
0
thev Messages postés 1986 Date d'inscription   Statut Membre Dernière intervention   713
 
ci-dessous code


Private Sub Valider_Click()
Dim ret As Integer
ret = MsgBox("êtes-vous sur de vouloir supprimer ce collaborateur/trice", vbYesNo)
If ret = vbNo Then Exit Sub

Set f = Sheets("fichier collaborateurs")
For Each collabo In f.Range("C1:C" & f.Columns("C").Rows(f.Rows.Count).End(xlUp).Row)
If collabo.Value = ComboBox1.Value Then
f.Rows(collabo.Row).Delete
Exit For
End If
Next

Set f = Sheets("parametrage")
For Each collabo In f.Range("E1:E" & f.Columns("E").Rows(f.Rows.Count).End(xlUp).Row)
If collabo.Value = ComboBox1.Value Then
collabo.Clear
Exit For
End If
Next

ComboBox1.RemoveItem (ListIndex)







--
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Hello
je ne comprends pas trop ton code car il est vraiment différent de celui que f894009 a si gentiment fait pour moi.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

le code de Thev supprime la ligne du collab selectionne et efface le contenu de la cellule du dit collab. Ce code n'est pas tres different de celui que j'ai ecrit, Thev fait des boucles de recherche, moi j'utilise une instruction et je decoupe un peu plus le code ex pour cette ligne:

For Each collabo In f.Range("C1:C" & f.Columns("C").Rows(f.Rows.Count).End(xlUp).Row)


ici, excel recalcul a chaque tour de la boucle quelle est la derniere ligne de la colonne et reconstruit la plage de cellule.
Pour plus de "performance", chercher la derniere ligne de la colonne, creer une plage en memoire et apres boucle de recherche sur cette plage en memoire.

Pour moi, l'instruction
Find
gere la boucle de recherche a ma place et plus rapidement que du code pour faire a l'identique, donc ok

Je regarde pour votre suppression de colonne au lieu de cellule dans votre fichier, onglet parametrage


je voudrais plutôt supprimer la colonne qui contient ce nom qui se trouve seulement sur la ligne 1 de ce même fichier. Onglet parametrage ?????. La ligne 1 c'est la ligne 4 ou ???????
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Tu as une question sur la suppression de la colonne dans là sheet "parametrage"
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Donc je reformule si je n'ai pas été claire.
je souhaite supprimer dans le sheet "parametrage" la colonne qui contient le nom qui a été choisi dans la combobox. Dans la sheet parametrage, ton les nom se trouve sur la première ligne de cette onglet
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Je viens de trouver la solution merci 1000 fois.

J'ai une autre question.
Le code:
If Application.CountIf(.Rows(1), ComboBox1.Text) > 0 Then        'Nom collab existe
lig = 1
'recherche ligne
lig = .Rows(1).Find(ComboBox1.Text, .Cells(lig, 1).End(xlUp), , xlWhole).Column
.Range(lig & "1").Value = "test"


Je voudrai ramplacer le texte par un autre texte
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Il sortirait d'ou ce texte ???
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
C'eat pas très claire
Je recherche à remplacer le texte dans la cellule par une autre texte dans cette même cellules sans changer forme (police, fond, ...) ce texte viendrait de la macro.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

avec ex:
.Range(lig & "1").Value = "test"


ca ne change pas le format de la cellule !!!!!!
0
Benny87 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai trouvé merci encore pour ton aide
non, il faut mettre .cells
With Worksheets("parametrage")
If Application.CountIf(.Rows(1), ComboBox1.Text) > 0 Then 'Nom collab existe
lig = 1
'recherche ligne
lig = .Rows(1).Find(ComboBox1.Text, .Cells(lig, 1).End(xlUp), , xlWhole).Column
.Cells(1, lig).Value = "Ajouter le nom de l'onglet"
voila le code final
0