Problème : Fichier Partagé - ComboBox

pacoako

XLDnaute Occasionnel
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 :

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:

pacoako

XLDnaute Occasionnel
Re : Problème : Fichier Partagé - ComboBox

Bonjour

Un exemple de suppression de données dans des combobox.
https://www.excel-downloads.com/threads/combobox-avec-maj-des-items.110645/

JP

Merci JP, en fait je sais comment ajouter/supprimer des éléments dans mes combobox, le problème est que j'aimerais pouvoir tout mettre les ranges de mes combobox sur la même feuille, mais vu que le fichier Excel est partagé je ne peux pas simplement supprimer une cellule, ou un block de cellule.. je dois donc supprimer une ligne complète à la fois.. ce qui implique que je ne peux pas mettre plusieurs listes d'items une à côté de l'autre sur la même feuille car en supprimant une ligne pour la liste #1.. je supprimerai des éléments dans la liste # 2 et 3 et 4 etc... C'est pourquoi je met une liste/feuille ce qui rend mon fichier très lourd pour rien.

Suis-je assez clair dans mes explications? Sinon faite moi le savoir! =)

Merci encore pour ton temps JP, A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 136
Membres
104 043
dernier inscrit
SpideyCodeWarrior