Microsoft 365 Valeur d'une liste dans la requête ADODB

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour,

J'ai une liste déroulante avec des valeurs. Je voudrais cliquer dans cette liste et afficher la valeur correspondante via une requête ADODB dans une autre cellule.
Mon code pour passer la valeur de la liste dans une variable que je vais utiliser dans la requête est:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "E15" Then
GET_GROUPE Split(Target.Value, " - ")(1)
End If
End Sub


J'ai mis Split(Target.Value, " - ")(1) car mes variables se presente comme LMM - 55C, KPCF - 5577 , je dois récupérer les caractères après le tiret. Ce code ne marche pas :(
 
Dernière édition:

laurent950

XLDnaute Accro
Re,
Target c'est une variable Objet de Type Range (La valeur ou plage de valeur renvoyé)
On peut stocker le résultat dans une variable tableau comme l'exemple que j'ai posté
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TabRes() As Variant
If Target.Value = [E15].Value Then
    ReDim TabRes(0 To UBound(Split([Target], ",")))
        For i = LBound(TabRes) To UBound(TabRes)
            TabRes(i) = Split(Split([Target], ",")(i), "-")(1)
        Next i
End If
MsgBox TabRes(0)
MsgBox TabRes(1)
End Sub
cdt
 

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Re,
Target c'est une variable Objet de Type Range (La valeur ou plage de valeur renvoyé)
On peut stocker le résultat dans une variable tableau comme l'exemple que j'ai posté
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TabRes() As Variant
If Target.Value = [E15].Value Then
    ReDim TabRes(0 To UBound(Split([Target], ",")))
        For i = LBound(TabRes) To UBound(TabRes)
            TabRes(i) = Split(Split([Target], ",")(i), "-")(1)
        Next i
End If
MsgBox TabRes(0)
MsgBox TabRes(1)
End Sub
cdt
Merci, mais je ne comprends pas, comment, par la suite, je peux utiliser cette variable dans ma requête ADODB.
 

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Voici mon code complet :
Module dans la feuille :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
If Not Intersect(Target, Range("C6")) Is Nothing Then
Call CLICK_BTN_INFOS_CONTRAT
End If

Dim TabRes() As Variant
If Target.Value = [E15].Value Then
ReDim TabRes(0 To UBound(Split([Target], ",")))
For i = LBound(TabRes) To UBound(TabRes)
TabRes(i) = Split(Split([Target], ",")(i), "-")(1)
Next i
End If
MsgBox TabRes(0)
GET_GROUPE_GESTION_CIBLE TabRes(0)
End Sub
 

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Module Général:



Public Sub GET_GROUPE_GESTION_CIBLE(strQ As String)
Dim cnn_Pegase As ADODB.Connection 'Connexion Pegase

Dim RECSET As New ADODB.Recordset
Call CONNEXION_PEG("select", "test", "PEG")
RECSET.Open "select serv.lb_long||' (AT: '||pers.s_nom||' '||pers.s_prenom||')' as groupecible from db_tiers as ti, dr_collaborateur_tiers cp,db_collaborateur col,db_personne pers,dr_service_collaborateur sc,db_service_compagnie serv" & _
" where ti.CD_TIERS='" & strQ & "' ti.is_tiers=cp.is_tiers and cp.is_collaborateur = col.is_collaborateur and col.is_personne = pers.is_personne and col.is_collaborateur = sc.is_collaborateur and sc.is_service_compagnie = serv.is_service_compagnie", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic
If Not RECSET.EOF Then
Worksheets("1 - Feuille de Suivi Commercial").Range("GET_GROUPE_GESTION_CIBLE").Value = RECSET.Fields("groupecible").Value
Else
Worksheets("1 - Feuille de Suivi Commercial").Range("GET_GROUPE_GESTION_CIBLE").Value = "Inconnu"
End If
RECSET.Close
Call DECONNEXION_PEG
End Sub
Peut-être j'ai omis une option dans le code :(
 

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Re,
Target c'est une variable Objet de Type Range (La valeur ou plage de valeur renvoyé)
On peut stocker le résultat dans une variable tableau comme l'exemple que j'ai posté
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TabRes() As Variant
If Target.Value = [E15].Value Then
    ReDim TabRes(0 To UBound(Split([Target], ",")))
        For i = LBound(TabRes) To UBound(TabRes)
            TabRes(i) = Split(Split([Target], ",")(i), "-")(1)
        Next i
End If
MsgBox TabRes(0)
MsgBox TabRes(1)
End Sub
cdt
Je n'ai qu'un seul choix dans la liste, du coup je n'ai pas besoin de TabRes(1), n'est-ce pas ?
Merci
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 920
Membres
101 840
dernier inscrit
SamynoT