Microsoft 365 ComBox directement dans la feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
Re-Gérard,
Je suis désolé d'y revenir encore mais il ne me met plus la date quand je choisi un message dans "NE PAS RAPPELER"

15/05/20 - msg existant -(sans date) NPR : Msg 4 -

C'est possible de modifier encore le code ?
Je suis désolé 🙁
lionel,
 
Fichier (4) :
VB:
Private Sub Combobox1_Change()
Dim dat$
dat = Format(Date, "dd/mm/yy")
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 .Text <> "<effacer>" Then
        ActiveCell = Trim(ActiveCell & " " & IIf(InStr(ActiveCell, dat), "", dat & " - ") & .Text & " -")
        If IsError(Application.Match(.Text, [Rappels], 0)) Then
            [A1].Select 'la ComboBox se masque
        Else
            .List = [OKRappels].Value
        End If
    End If
End With
ActiveCell.Activate
Application.OnTime 1, Me.CodeName & ".Deroule"
End Sub
 

Pièces jointes

Dernière édition:
Bonsoir Gérard, Patrick, le Forum,
@Gérard,

Merci pour la dernière version qui est complètement nickel 🙂

J'ai intégré tout ça dans notre fichier de travail et ça fonctionne.
Charlotte a fait environ 200 test d'appels avec affectations = aucun ralentissement
Donc apparemment il ne devrait plus y en avoir.

Merci Gérard ... pas de mots pour te dire. sans ton intervention, nous ne pouvions pas travailler demain ni après ... sauf à ce que Charlotte ne change d'ordinateur.
lionel heureux 🙂
 
Bonjour Gérard, le Forum,
Je vous souhaite une belle journée 🙂

Gérard, ça fonctionne super bien et aucun ralentissement sur l'ordi de Charlotte .... Génial et vraiment merci 🙂

Après utilisation, j'ai commencé à tenter d'apporter des modifications pour faciliter le travail de Charlotte :
1 - j'ai doublé les codes pour séparer les "Rappels" et "NE PAS RAPPELER", (car ils sont très proches et il est facile quand on travaille vite de se tromper),
2 - Ce serait super qu'en cliquant dans la cellule J3 le menu des Rappels s'ouvre "DIRECT"
pareil pour le menu NE PAS RAPPELER en cliquant dans J6

Je joins le fichier test que j'ai modifié.
Est-ce possible ?
Si tu trouves que c'est trop lol, laisses car tu as déjà tellement fait 🙂
lionel,
 

Pièces jointes

Re-Bonjour Gérard,

Le code fonctionne super ainsi que le nouveau.
lol j'en ai encore une petite dernière.

Est-il possible de bloquer la sortie de la liste OK Rappel si on a pas sélectionné UN message ?

RAPPEL : sélection du 1er message = obligé dans OK Rappel de sélectionner un message pour pouvoir cliquer ailleurs 🙂

lionel,
 
Est-il possible de bloquer la sortie de la liste OK Rappel si on a pas sélectionné UN message ?
C'est typiquement avec des demandes de ce genre qu'on aboutit à des usines à gaz.

Vouloir tout encadrer sans faire confiance à l'utilisateur c'est une erreur grossière des débutants.

Si j'ai prévu la commande <effacer> c'est pour qu'on s'en serve lorsqu'on s'est trompé.
 
Bonjour Lionel, le forum,

Bon tu peux à la rigueur utiliser ce fichier (3), ce n'est pas encore une usine à gaz.

J'ai modifié la Worksheet_SelectionChange pour adapter la liste déroulante au contenu de J3 :
VB:
Dim NonDate As Boolean, choix As Boolean 'mémorise les variables

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim s, ub%, x$
NonDate = False
ComboBox1.Visible = False: ComboBox2.Visible = False
If Intersect(ActiveCell, [J3,J6]) Is Nothing Then Exit Sub
choix = ActiveCell.Address = "$J$3" 'True ou False
With IIf(choix, ComboBox1, ComboBox2)
    .Left = ActiveCell.Left - .Width 'affichage à gauche de la cellule
    .Top = ActiveCell.Top
    If choix Then
        .List = [Rappels].Value
        s = Split([J3], "-")
        ub = UBound(s)
        If ub > -1 Then
            x = Trim(s(ub))
            If x = "" And ub Then x = Trim(s(ub - 1))
            If Application.CountIf([OKRappels], x) = 0 And Not IsDate(x) Then .List = [OKRappels].Value: NonDate = True
        End If
    Else
        .List = [Ne_pas_Rappeler].Value
    End If
    .Visible = True
    Application.OnTime 1, Me.CodeName & ".Deroule"
End With
End Sub
La macro Change a été aussi un peu modifiée.

Bonne journée.
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
243
Réponses
1
Affichages
513
Réponses
5
Affichages
485
Deleted member 453598
D
Retour