Microsoft 365 ComBox directement dans la feuille

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
J'espère que vous allez bien et je vous souhaite un beau et bon WE :)

Sur les conseils toujours avisés de Job75, j'ai créé une ComboBox directement dans ma feuille de travail :)

Mais je n'arrive pas à coder pour répondre à mes besoins :
J'aurais besoin que :

J'aurais besoin que :
si message sélectionné dans "Rappels"

1 quand clic dans cellules colonne "J" : la liste "Rappels" s'affiche
et je sélectionne un message qui est écrit dans la cellule cliquée après les msg déjà existants
2 la liste "OK Rappels" s'affiche et le msg sélectionné est écrit dans la cellule après les msg déjà existants
3 enfin, la liste déroulante se vide

si message sélectionné dans "NE PAS RAPPELER"
1 quand clic dans cellules colonne "J" : la liste déroute s'affiche
et je sélectionne un message qui est écrit dans la cellule cliquée après les msg déjà existants
2 la liste déroulante se vide.

Pourriez-vous m'aider ?
Je joins le fichier test.

Avec mes remerciements,
lionel,
 

Pièces jointes

  • ComboBox.xlsm
    20.6 KB · Affichages: 27
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
je veux pas jouer les troubles fait mais est ce normal que cela soit possible
demo4.gif
 

job75

XLDnaute Barbatruc
Maintenant prends ce fichier (2), la macro ComboBox1_Change est un peu plus simple :
VB:
Private Sub Combobox1_Change()
With ComboBox1
    If .ListIndex = -1 Then .Text = "": Exit Sub
    If .Text = "RAPPELS" Then
        .List = [Rappels].Value
    ElseIf .Text = "NE PAS RAPPELER" Then
        .List = [Ne_pas_Rappeler].Value
    ElseIf .Text = "<effacer>" And ActiveCell <> "" Then
        ActiveCell = Left(ActiveCell, Len(ActiveCell) - 1)
        ActiveCell = Left(ActiveCell, InStrRev(ActiveCell, "-"))
        .Visible = False
    Else
        ActiveCell = ActiveCell & " " & .Text & " -"
        If IsError(Application.Match(.Text, [Rappels], 0)) Then
            .Visible = False
        Else
            .List = [OKRappels].Value
        End If
    End If
End With
ActiveCell.Activate
Application.OnTime 1, Me.CodeName & ".Deroule"
End Sub
 

Pièces jointes

  • ComboBox(2).xlsm
    98.1 KB · Affichages: 8

job75

XLDnaute Barbatruc
En fait, dans le fichier de travail, dansles Rappels, j'ai 27 lignes de commentaires,
est-il possible d'agrandir l'affichage du menu pour tout afficher ?
L'intérêt de la ComboBox c'est d'avoir une liste déroulante pas trop grande (=> barre de défilement).

Maintenant si tu veux l'agrandir mets-toi d'abord en mode Création.

Clic droit sur la ComboBox => Propriétés => ListRows => 27 => Quitter le mode Création.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard, Patrick, le forum,
Je vous souhaite un très bon dimanche :)
@Gérard :
C'est presque tout bon j'ai réussi à intégrer la feuille et son code dans mon fichier de travail.
Il me reste 2 choses à résoudre :
1 - j'ai besoin de la sortie, en fin de traitement, de la ligne en sélectionnant a1 par exemple et, bon sang, je n'arrive pas à le faire,

2 - pour avoir la date du commentaire j'ai modifié ce code :
VB:
ActiveCell = ActiveCell & " " & .Text & " -"
comme ça :
Code:
ActiveCell = ActiveCell & " - " & Format(Date, "dd/mm/yy") & " - " & .Text & " - "

J'obtiens, par exemple cette écriture : " - 17.05.20 - Agence(s) - Agents pas maintenant - 17.05.20 - OK Rappel : OUI + OK RDV SPV - "

Il faudrait que quand c'est un "Rappel" il n'inscrive pas la date pour le message "OK Rappel" car la date est déjà dans le 1er message sélectionné.
Encore merci,
lionel,
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Lionel, le forum,

Fichier (3) avec cette macro :
VB:
Private Sub Combobox1_Change()
Dim dat$
With ComboBox1
    If .ListIndex = -1 Then .Text = "": Exit Sub
    If .Text = "RAPPELS" Then
        .List = [Rappels].Value
    ElseIf .Text = "NE PAS RAPPELER" Then
        .List = [Ne_pas_Rappeler].Value
    ElseIf .Text = "<effacer>" And ActiveCell <> "" Then
        ActiveCell = Left(ActiveCell, Len(ActiveCell) - 1)
        ActiveCell = Left(ActiveCell, InStrRev(ActiveCell, "-"))
    ElseIf IsError(Application.Match(.Text, [Rappels], 0)) Then
        ActiveCell = ActiveCell & " " & .Text & " -"
        [A1].Select 'la ComboBox se masque
    Else
        dat = Format(Date, "dd/mm/yy")
        ActiveCell = Trim(ActiveCell & " " & IIf(InStr(ActiveCell, dat), "", dat & " - ") & .Text & " -")
        .List = [OKRappels].Value
    End If
End With
ActiveCell.Activate
Application.OnTime 1, Me.CodeName & ".Deroule"
End Sub
La date du jour n'est pas ajoutée si elle existe déjà dans la cellule.

Et maintenant la commande <effacer> est uniquement dans la toute première liste.

Bon dimanche.
 

Pièces jointes

  • ComboBox(3).xlsm
    98.6 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 257
Membres
102 842
dernier inscrit
Miguelita