Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ListBox et page active

6 réponses
Avatar
Peponne31
Bonsoir,

Je voudrais valider le choix fait dans un ListBox
dans la Feuille active. Il y a 5 feuilles.
voici ce que j'ai fais sans succé.

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Not IsNull(Me.ListBox1.Value) Then
vIndex = ListBox1.ListIndex
If ActiveSheet = "Devis1page" Then
ElseIf ActiveSheet = "Devis2pages" Then
ElseIf ActiveSheet = "Devis" Then
ElseIf ActiveSheet = "Facture1page" Then
ElseIf ActiveSheet = "Facture2pages" Then
Range("J6") = Selection_Clients.ListBox1.List(vIndex)
End If
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
"CONCEPT Habitat")
End If
End Sub
Si quelqu'un peut me corriger, merci par avance
Peponne31

6 réponses

Avatar
PolareBear
Bonjour

Il manque quelques éléments pour pouvoir répondre de manière très
précise, mais voici une piste :

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Me.ListBox1.ListIndex > 1 Then
vIndex = ListBox1.ListIndex
ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!",
VbInformation, "CONCEPT Habitat")
End If
End Sub

Sinon, pourrais-tu préciser les points suivants :
- Lors de l'affichage de ton UserForm, la feuille active est-elle
nécessairement une des feuilles qui doit être mise à jour en J9 ?
- que veux-tu afficher en J9 ? Le texte affiché par ta liste ?

Bonne continuation

Rai


Peponne31 a écrit :
Bonsoir,

Je voudrais valider le choix fait dans un ListBox
dans la Feuille active. Il y a 5 feuilles.
voici ce que j'ai fais sans succé.

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Not IsNull(Me.ListBox1.Value) Then
vIndex = ListBox1.ListIndex
If ActiveSheet = "Devis1page" Then
ElseIf ActiveSheet = "Devis2pages" Then
ElseIf ActiveSheet = "Devis" Then
ElseIf ActiveSheet = "Facture1page" Then
ElseIf ActiveSheet = "Facture2pages" Then
Range("J6") = Selection_Clients.ListBox1.List(vIndex)
End If
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
"CONCEPT Habitat")
End If
End Sub
Si quelqu'un peut me corriger, merci par avance
Peponne31


Avatar
Peponne31
Bonjour polareBear,

Merci de ta réponse, en J6 je rentre le N° du client qui se trouve sur une
feuille "Fiche Client", ce N° correspond aux informations du client que je
rentre en entète de la feuille active qui peut-ètre une des 5 feuilles mais
jamais 2 feuilles à la fois.
Merci encore
Peponne31

"PolareBear" a écrit :

Bonjour

Il manque quelques éléments pour pouvoir répondre de manière très
précise, mais voici une piste :

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Me.ListBox1.ListIndex > 1 Then
vIndex = ListBox1.ListIndex
ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!",
VbInformation, "CONCEPT Habitat")
End If
End Sub

Sinon, pourrais-tu préciser les points suivants :
- Lors de l'affichage de ton UserForm, la feuille active est-elle
nécessairement une des feuilles qui doit être mise à jour en J9 ?
- que veux-tu afficher en J9 ? Le texte affiché par ta liste ?

Bonne continuation

Rai


Peponne31 a écrit :
> Bonsoir,
>
> Je voudrais valider le choix fait dans un ListBox
> dans la Feuille active. Il y a 5 feuilles.
> voici ce que j'ai fais sans succé.
>
> Private Sub Valider_Click()
> Dim LisBox1 As ListBox
> Dim vIndex
> If Not IsNull(Me.ListBox1.Value) Then
> vIndex = ListBox1.ListIndex
> If ActiveSheet = "Devis1page" Then
> ElseIf ActiveSheet = "Devis2pages" Then
> ElseIf ActiveSheet = "Devis" Then
> ElseIf ActiveSheet = "Facture1page" Then
> ElseIf ActiveSheet = "Facture2pages" Then
> Range("J6") = Selection_Clients.ListBox1.List(vIndex)
> End If
> Else
> Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
> "CONCEPT Habitat")
> End If
> End Sub
> Si quelqu'un peut me corriger, merci par avance
> Peponne31



Avatar
PolareBear
OK.
donc ta ListBox est alimentée par la feuille "Fiche Client"
et tu choisis le N° dans la ListBox.
Dans ce cas le code proposé devrait fonctionner.

En cas de besoin... le newsgroup est ton ami. loL

Rai


Peponne31 a écrit :
Bonjour polareBear,

Merci de ta réponse, en J6 je rentre le N° du client qui se trouve sur une
feuille "Fiche Client", ce N° correspond aux informations du client que je
rentre en entète de la feuille active qui peut-ètre une des 5 feuilles mais
jamais 2 feuilles à la fois.
Merci encore
Peponne31

"PolareBear" a écrit :

Bonjour

Il manque quelques éléments pour pouvoir répondre de manière très
précise, mais voici une piste :

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Me.ListBox1.ListIndex > 1 Then
vIndex = ListBox1.ListIndex
ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!",
VbInformation, "CONCEPT Habitat")
End If
End Sub

Sinon, pourrais-tu préciser les points suivants :
- Lors de l'affichage de ton UserForm, la feuille active est-elle
nécessairement une des feuilles qui doit être mise à jour en J9 ?
- que veux-tu afficher en J9 ? Le texte affiché par ta liste ?

Bonne continuation

Rai


Peponne31 a écrit :
Bonsoir,

Je voudrais valider le choix fait dans un ListBox
dans la Feuille active. Il y a 5 feuilles.
voici ce que j'ai fais sans succé.

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Not IsNull(Me.ListBox1.Value) Then
vIndex = ListBox1.ListIndex
If ActiveSheet = "Devis1page" Then
ElseIf ActiveSheet = "Devis2pages" Then
ElseIf ActiveSheet = "Devis" Then
ElseIf ActiveSheet = "Facture1page" Then
ElseIf ActiveSheet = "Facture2pages" Then
Range("J6") = Selection_Clients.ListBox1.List(vIndex)
End If
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
"CONCEPT Habitat")
End If
End Sub
Si quelqu'un peut me corriger, merci par avance
Peponne31






Avatar
Peponne31
Re,

Merci pour tes infos,
j'ai modifié comme ceci,

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Not IsNull(Me.ListBox1.Value) Then
vIndex = ListBox1.ListIndex
ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
End
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
"CONCEPT Habitat")
End If
End Sub

Je ne pouvais pas sélectionner les 2 premiers items de la liste.
Merci à toi
Peponne31
"PolareBear" a écrit :

OK.
donc ta ListBox est alimentée par la feuille "Fiche Client"
et tu choisis le N° dans la ListBox.
Dans ce cas le code proposé devrait fonctionner.

En cas de besoin... le newsgroup est ton ami. loL

Rai


Peponne31 a écrit :
> Bonjour polareBear,
>
> Merci de ta réponse, en J6 je rentre le N° du client qui se trouve sur une
> feuille "Fiche Client", ce N° correspond aux informations du client que je
> rentre en entète de la feuille active qui peut-ètre une des 5 feuilles mais
> jamais 2 feuilles à la fois.
> Merci encore
> Peponne31
>
> "PolareBear" a écrit :
>
>> Bonjour
>>
>> Il manque quelques éléments pour pouvoir répondre de manière très
>> précise, mais voici une piste :
>>
>> Private Sub Valider_Click()
>> Dim LisBox1 As ListBox
>> Dim vIndex
>> If Me.ListBox1.ListIndex > 1 Then
>> vIndex = ListBox1.ListIndex
>> ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
>> Else
>> Message = MsgBox("Veuillez sélectionner un Numéro !!!",
>> VbInformation, "CONCEPT Habitat")
>> End If
>> End Sub
>>
>> Sinon, pourrais-tu préciser les points suivants :
>> - Lors de l'affichage de ton UserForm, la feuille active est-elle
>> nécessairement une des feuilles qui doit être mise à jour en J9 ?
>> - que veux-tu afficher en J9 ? Le texte affiché par ta liste ?
>>
>> Bonne continuation
>>
>> Rai
>>
>>
>> Peponne31 a écrit :
>>> Bonsoir,
>>>
>>> Je voudrais valider le choix fait dans un ListBox
>>> dans la Feuille active. Il y a 5 feuilles.
>>> voici ce que j'ai fais sans succé.
>>>
>>> Private Sub Valider_Click()
>>> Dim LisBox1 As ListBox
>>> Dim vIndex
>>> If Not IsNull(Me.ListBox1.Value) Then
>>> vIndex = ListBox1.ListIndex
>>> If ActiveSheet = "Devis1page" Then
>>> ElseIf ActiveSheet = "Devis2pages" Then
>>> ElseIf ActiveSheet = "Devis" Then
>>> ElseIf ActiveSheet = "Facture1page" Then
>>> ElseIf ActiveSheet = "Facture2pages" Then
>>> Range("J6") = Selection_Clients.ListBox1.List(vIndex)
>>> End If
>>> Else
>>> Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
>>> "CONCEPT Habitat")
>>> End If
>>> End Sub
>>> Si quelqu'un peut me corriger, merci par avance
>>> Peponne31



Avatar
PolareBear
Peponne31 a écrit :
Re,

Merci pour tes infos,
j'ai modifié comme ceci,

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Not IsNull(Me.ListBox1.Value) Then
vIndex = ListBox1.ListIndex
ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
End
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
"CONCEPT Habitat")
End If
End Sub

Je ne pouvais pas sélectionner les 2 premiers items de la liste.
Merci à toi
Peponne31
"PolareBear" a écrit :

OK.
donc ta ListBox est alimentée par la feuille "Fiche Client"
et tu choisis le N° dans la ListBox.
Dans ce cas le code proposé devrait fonctionner.

En cas de besoin... le newsgroup est ton ami. loL

Rai


Peponne31 a écrit :
Bonjour polareBear,

Merci de ta réponse, en J6 je rentre le N° du client qui se trouve sur une
feuille "Fiche Client", ce N° correspond aux informations du client que je
rentre en entète de la feuille active qui peut-ètre une des 5 feuilles mais
jamais 2 feuilles à la fois.
Merci encore
Peponne31

"PolareBear" a écrit :

Bonjour

Il manque quelques éléments pour pouvoir répondre de manière très
précise, mais voici une piste :

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Me.ListBox1.ListIndex > 1 Then
vIndex = ListBox1.ListIndex
ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!",
VbInformation, "CONCEPT Habitat")
End If
End Sub

Sinon, pourrais-tu préciser les points suivants :
- Lors de l'affichage de ton UserForm, la feuille active est-elle
nécessairement une des feuilles qui doit être mise à jour en J9 ?
- que veux-tu afficher en J9 ? Le texte affiché par ta liste ?

Bonne continuation

Rai


Peponne31 a écrit :
Bonsoir,

Je voudrais valider le choix fait dans un ListBox
dans la Feuille active. Il y a 5 feuilles.
voici ce que j'ai fais sans succé.

Private Sub Valider_Click()
Dim LisBox1 As ListBox
Dim vIndex
If Not IsNull(Me.ListBox1.Value) Then
vIndex = ListBox1.ListIndex
If ActiveSheet = "Devis1page" Then
ElseIf ActiveSheet = "Devis2pages" Then
ElseIf ActiveSheet = "Devis" Then
ElseIf ActiveSheet = "Facture1page" Then
ElseIf ActiveSheet = "Facture2pages" Then
Range("J6") = Selection_Clients.ListBox1.List(vIndex)
End If
Else
Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
"CONCEPT Habitat")
End If
End Sub
Si quelqu'un peut me corriger, merci par avance
Peponne31











OK,
J'ai juste 2 questions (pour satisfaire ma curiosité, LoL) :
- pourquoi "Not IsNull(Me.ListBox1.Value)" ?
ListIndex te renvoie une valeur comprise entre -1 (rien de
sélectionné) et n-1 (n étant le nombre d'éléments de la liste)
du coup tu peux faire des tests sur ce chiffre. Plus tes conditions If
sont simples, plus ton code sera lisible .... des mois plus tard quand
tu reviendras dessus.
- pourquoi "Range("J6") = Selection_Clients.ListBox1.List(vIndex)" ?
si j'ai bien saisi ce que tu veux faire, .list(vIndex) est égal à .value
ca te permet de supprimer une ligne et de gagner en lisibilité.

Bon codage

rai
Avatar
Peponne31
Re

à ta première question, si je clique sur valider sans avoir fait de
sélection dans le ListBox, j'ai un message d'erreur non géré par le programme.
Pour la seconde question, je ne suis pas trop fort en vba, à l'origine, je
me servais de J6 pour entrer un N° de client et quand je validai ma réponse
"J6" j'activais un code que voici:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$J$6" Then
ValideSaisie '** ici, je rentre un client sur le formulaire **
ActiveSheet.Unprotect
LectureDeJ6
EcritureDeB10
ActiveSheet.Protect
Feuille = ActiveSheet.Name
ElseIf Target.Address = "$K$3" Then
RéouvreDevis1page Target.Value
ActiveSheet.Unprotect
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End Sub

Ce code va me chercher les informations du client dans la feuille "Fichier
Client" et me rentre les informations relatives au client dans ma feuille
"Devis" idem pour les autre feuilles.
Merci à toi
Peponne31

"PolareBear" a écrit :

Peponne31 a écrit :
> Re,
>
> Merci pour tes infos,
> j'ai modifié comme ceci,
>
> Private Sub Valider_Click()
> Dim LisBox1 As ListBox
> Dim vIndex
> If Not IsNull(Me.ListBox1.Value) Then
> vIndex = ListBox1.ListIndex
> ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
> End
> Else
> Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
> "CONCEPT Habitat")
> End If
> End Sub
>
> Je ne pouvais pas sélectionner les 2 premiers items de la liste.
> Merci à toi
> Peponne31
> "PolareBear" a écrit :
>
>> OK.
>> donc ta ListBox est alimentée par la feuille "Fiche Client"
>> et tu choisis le N° dans la ListBox.
>> Dans ce cas le code proposé devrait fonctionner.
>>
>> En cas de besoin... le newsgroup est ton ami. loL
>>
>> Rai
>>
>>
>> Peponne31 a écrit :
>>> Bonjour polareBear,
>>>
>>> Merci de ta réponse, en J6 je rentre le N° du client qui se trouve sur une
>>> feuille "Fiche Client", ce N° correspond aux informations du client que je
>>> rentre en entète de la feuille active qui peut-ètre une des 5 feuilles mais
>>> jamais 2 feuilles à la fois.
>>> Merci encore
>>> Peponne31
>>>
>>> "PolareBear" a écrit :
>>>
>>>> Bonjour
>>>>
>>>> Il manque quelques éléments pour pouvoir répondre de manière très
>>>> précise, mais voici une piste :
>>>>
>>>> Private Sub Valider_Click()
>>>> Dim LisBox1 As ListBox
>>>> Dim vIndex
>>>> If Me.ListBox1.ListIndex > 1 Then
>>>> vIndex = ListBox1.ListIndex
>>>> ActiveSheet.Range("J6") = Selection_Clients.ListBox1.Value
>>>> Else
>>>> Message = MsgBox("Veuillez sélectionner un Numéro !!!",
>>>> VbInformation, "CONCEPT Habitat")
>>>> End If
>>>> End Sub
>>>>
>>>> Sinon, pourrais-tu préciser les points suivants :
>>>> - Lors de l'affichage de ton UserForm, la feuille active est-elle
>>>> nécessairement une des feuilles qui doit être mise à jour en J9 ?
>>>> - que veux-tu afficher en J9 ? Le texte affiché par ta liste ?
>>>>
>>>> Bonne continuation
>>>>
>>>> Rai
>>>>
>>>>
>>>> Peponne31 a écrit :
>>>>> Bonsoir,
>>>>>
>>>>> Je voudrais valider le choix fait dans un ListBox
>>>>> dans la Feuille active. Il y a 5 feuilles.
>>>>> voici ce que j'ai fais sans succé.
>>>>>
>>>>> Private Sub Valider_Click()
>>>>> Dim LisBox1 As ListBox
>>>>> Dim vIndex
>>>>> If Not IsNull(Me.ListBox1.Value) Then
>>>>> vIndex = ListBox1.ListIndex
>>>>> If ActiveSheet = "Devis1page" Then
>>>>> ElseIf ActiveSheet = "Devis2pages" Then
>>>>> ElseIf ActiveSheet = "Devis" Then
>>>>> ElseIf ActiveSheet = "Facture1page" Then
>>>>> ElseIf ActiveSheet = "Facture2pages" Then
>>>>> Range("J6") = Selection_Clients.ListBox1.List(vIndex)
>>>>> End If
>>>>> Else
>>>>> Message = MsgBox("Veuillez sélectionner un Numéro !!!", vbInformation,
>>>>> "CONCEPT Habitat")
>>>>> End If
>>>>> End Sub
>>>>> Si quelqu'un peut me corriger, merci par avance
>>>>> Peponne31

OK,
J'ai juste 2 questions (pour satisfaire ma curiosité, LoL) :
- pourquoi "Not IsNull(Me.ListBox1.Value)" ?
ListIndex te renvoie une valeur comprise entre -1 (rien de
sélectionné) et n-1 (n étant le nombre d'éléments de la liste)
du coup tu peux faire des tests sur ce chiffre. Plus tes conditions If
sont simples, plus ton code sera lisible .... des mois plus tard quand
tu reviendras dessus.
- pourquoi "Range("J6") = Selection_Clients.ListBox1.List(vIndex)" ?
si j'ai bien saisi ce que tu veux faire, .list(vIndex) est égal à .value
ca te permet de supprimer une ligne et de gagner en lisibilité.

Bon codage

rai