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:

job75

XLDnaute Barbatruc
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

  • ComboBox(4).xlsm
    99.6 KB · Affichages: 4
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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 :)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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

  • ComboBox_test.xlsm
    123.9 KB · Affichages: 2

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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,
 

job75

XLDnaute Barbatruc
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é.
 

job75

XLDnaute Barbatruc
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

  • ComboBox_test(3).xlsm
    32.3 KB · Affichages: 14
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 010
Membres
101 866
dernier inscrit
XFPRO