Bonjour tout le monde!
Petit problème pour vous!
J'ai un fichier Excel qui est en mode partage et j'essaie de trouver une façon de me créer un mini formulaire qui me permettrait d'ajouter/supprimer des éléments dans toutes mes combobox de me autres formulaires. Le problème serait un peu plus simple si je pouvait supprimer des block de cellules en mode partage ().
Présentement ce que je fais pour pallier à ce problème est que chaque combobox a sa feuille respective. Je détecte la dernière ligne utilisé dans la feuille et je l'utilise pour définir mon range.
Excemple :
Donc par la suite quand je veut modifier ce que contient cette combobox, c'est relativement simple... Si je veut supprimer un élément de cette combobox je recherche l'élément sélectionner par la combobox dans la feuille avec .find et je supprime la ligne entière correspondant à la cellule trouvée (puisque je ne peut pas supprimer seulement une cellule). Si je veut ajouter un élément, je trouve la dernière utilisée et j'ajoute l'élément inscrit dans une textbox dans la cellule suivante.
J'aimerait pouvoir utiliser d'autre fonction comme .clearcontents par exemple mais j'ai un problème quand j'efface un champ entre 2 champs car ça créer un vide dans ma combobox à moins que je supprime le dernier champ.
Donc présentement j'ai autant de feuille que j'ai de combobox, et ça grossi mon fichier d'au moins 25% 🙁
Quelqu'un aurait une piste?
Merci !
Bonne journée à tous!
Petit problème pour vous!
J'ai un fichier Excel qui est en mode partage et j'essaie de trouver une façon de me créer un mini formulaire qui me permettrait d'ajouter/supprimer des éléments dans toutes mes combobox de me autres formulaires. Le problème serait un peu plus simple si je pouvait supprimer des block de cellules en mode partage ().
Présentement ce que je fais pour pallier à ce problème est que chaque combobox a sa feuille respective. Je détecte la dernière ligne utilisé dans la feuille et je l'utilise pour définir mon range.
Excemple :
Code:
Private Sub UserForm_Initialize()
'Trouve la dernière ligne de chaque feuille et ajoute les plage en conséquence pour chaque combobox
LastRowEtat = Feuil7.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
PlageEtat = Range(Feuil7.Cells(1, 1), Feuil7.Cells(LastRowEtat, 1))
LastRowRelance = Feuil8.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
PlageRelance = Range(Feuil8.Cells(1, 1), Feuil8.Cells(LastRowRelance, 1))
LastRowRespo = Feuil9.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
PlageRespo = Range(Feuil9.Cells(1, 1), Feuil9.Cells(LastRowRespo, 1))
LastRowLangue = Feuil10.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
PlageLangue = Range(Feuil10.Cells(1, 1), Feuil10.Cells(LastRowLangue, 1))
LastRowTarif = Feuil11.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
PlageTarif = Range(Feuil11.Cells(1, 1), Feuil11.Cells(LastRowTarif, 1))
LastRowParametres = Feuil13.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Row
PlageParametres = Range(Feuil13.Cells(1, 1), Feuil13.Cells(LastRowParametres, 1))
'Ajoute les plages variables aux ComboBoxes
ComboBoxEtat.Clear
ComboBoxEtat.List = PlageEtat
ComboBoxRelance.Clear
ComboBoxRelance.List = PlageRelance
ComboBoxRespo.Clear
ComboBoxRespo.List = PlageRespo
ComboBoxLangue.Clear
ComboBoxLangue.List = PlageLangue
ComboBoxLangue = "Français"
ComboBoxTarif.Clear
ComboBoxTarif.List = PlageTarif
ComboBoxTarif = "Résidentiel"
ComboBoxParametres.Clear
ComboBoxParametres.List = PlageParametres
ComboBoxParametres = "Aucun"
End Sub
Donc par la suite quand je veut modifier ce que contient cette combobox, c'est relativement simple... Si je veut supprimer un élément de cette combobox je recherche l'élément sélectionner par la combobox dans la feuille avec .find et je supprime la ligne entière correspondant à la cellule trouvée (puisque je ne peut pas supprimer seulement une cellule). Si je veut ajouter un élément, je trouve la dernière utilisée et j'ajoute l'élément inscrit dans une textbox dans la cellule suivante.
Code:
Sub Supprimer()
If ComboBoxSupprimer2 = "" Then
MsgBox "Veuillez sélectionner le champ que vous désirez supprimer de la liste."
GoTo Label1:
End If
If ComboBoxSupprimer1 = "État" Then
SelectedSheet = 7
End If
If ComboBoxSupprimer1 = "Procédure de relance" Then
SelectedSheet = 8
End If
If ComboBoxSupprimer1 = "Code de responsabilité" Then
SelectedSheet = 9
End If
If ComboBoxSupprimer1 = "Langue" Then
SelectedSheet = 10
End If
If ComboBoxSupprimer1 = "Tarif" Then
SelectedSheet = 11
End If
If ComboBoxSupprimer1 = "Type" Then
SelectedSheet = 12
End If
If ComboBoxSupprimer1 = "Paramètres" Then
SelectedSheet = 13
End If
If ComboBoxSupprimer1 = "Raison Oui" Then
SelectedSheet = 14
End If
If ComboBoxSupprimer1 = "Raison Non" Then
SelectedSheet = 15
End If
Set Cellule = Sheets(SelectedSheet).Cells.Find(What:=ComboBoxSupprimer2, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False)
If Not Cellule Is Nothing Then
CelluleRow = Cellule.Row
Sheets(SelectedSheet).Rows(CelluleRow & ":" & CelluleRow).Delete shift:=xlUp
MsgBox ComboBoxSupprimer1 & " : " & ComboBoxSupprimer2 & " a été supprimé."
ComboBoxSupprimer2.MatchRequired = False
ComboBoxSupprimer2.Clear
ComboBoxSupprimer1.Value = ""
ComboBoxSupprimer2.Value = ""
End If
Label1:
End Sub
J'aimerait pouvoir utiliser d'autre fonction comme .clearcontents par exemple mais j'ai un problème quand j'efface un champ entre 2 champs car ça créer un vide dans ma combobox à moins que je supprime le dernier champ.
Donc présentement j'ai autant de feuille que j'ai de combobox, et ça grossi mon fichier d'au moins 25% 🙁
Quelqu'un aurait une piste?
Merci !
Bonne journée à tous!
Dernière édition: