OVH Cloud OVH Cloud

Argument non valide

12 réponses
Avatar
jacques-zeziola
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques

10 réponses

1 2
Avatar
michdenis
Bonjour Jacques,

si tu remplaces ceci If Selected(i) = True Then

par If Me.Selected(i) = True Then


est-ce que cela résout ton problème ?


Salutations!


a écrit dans le message de news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques
Avatar
j
essaie de mettre un msgbox(i) avant, pour voir ce que tu as dans i au moment
où ça plante


a écrit dans le message de news:

Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques


Avatar
Michel Gaboly
Bonsoir,

Tu ne peux pas utiliser Selected sans qualificatif. VBA ne peut pas
deviner tout seul quel ListBox (ou CheckBox) est concerné.

Donc :

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then UserForm2.TextBox10 UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13

Ou plus de lignes, mais peut-être plus lisible :

With ListBox1
For i = 1 to .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) & Chr(13)
End If
Next i
End With

If .Selected(i) suffit ; le "= True" ne sert à rien.

Par ailleurs pourquoi commences-tu à 1 comme valeur de i ?

Sauf si "Option Base 1" dans le module, en principe, il faudrait com-
mencer à 0 (zéro). Avec

For i = 1 to .ListCount - 1

Le nombre de passages dans la boucle n'est pas égal à ListCount
il manque un passage.


a écrit dans le message de
news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques


Avatar
Hervé
Salut Jacques,
Si tu ne précise pas l'objet, il y a effectivement erreur car le compilateur
ne peux pas savoir lequel utiliser :

Private Sub CommandButton1_Click()

Dim I As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

With ListBox1
For I = 1 To .ListCount - 1
If .Selected(I) = True Then UserForm2.TextBox10 = _
UserForm2.TextBox10 & .List(I) & Chr(13)
End With
Next I

End Sub

Hervé.

a écrit dans le message news:

Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques


Avatar
jacques-zeziola
, Michel Denis, Michel GABOLY, le Forum

Je vous remercie tous les trois de vos réponses.

, j'essayerai ton astuce pour voir ce que cela donne, pour
information personnelle.

Michel Denis, j'ai essayer avec : If Me.Selected(i) = True
et cela me mets aussi Argument non valide.

Michel GABOLY, j'ai utilisé ton code,J'ai du ajouter la déclaration de
la variable, et j'ai essayé avec For i = 1 et for i = 0 je n'ai point
vu de différence, es-ce normale?

Dim i As Integer

With ListBox1
For i = 1 To .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With

Encore merci, a vous trois cela faisait une plombe que je tourné et
retourné ce code en vain, Jacques

"Michel Gaboly" wrote in message news:...
Bonsoir,

Tu ne peux pas utiliser Selected sans qualificatif. VBA ne peut pas
deviner tout seul quel ListBox (ou CheckBox) est concerné.

Donc :

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then UserForm2.TextBox10 > UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13

Ou plus de lignes, mais peut-être plus lisible :

With ListBox1
For i = 1 to .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) & Chr(13)
End If
Next i
End With

If .Selected(i) suffit ; le "= True" ne sert à rien.

Par ailleurs pourquoi commences-tu à 1 comme valeur de i ?

Sauf si "Option Base 1" dans le module, en principe, il faudrait com-
mencer à 0 (zéro). Avec

For i = 1 to .ListCount - 1

Le nombre de passages dans la boucle n'est pas égal à ListCount
il manque un passage.


a écrit dans le message de
news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques




Avatar
Michel Gaboly
Rebonjour,

La différence n'intervient que si le premier élément est sélectionné :

Entre ce code (Il faut un UserForm avec un ListBox nommé ListBox1
et un CommandButton nommé BOK

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 10
ListBox1.AddItem i
Next i
End Sub

Private Sub BOK_Click()
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox i
End If
Next i
End With
End Sub

Appuie ensuite sur F4 pour afficher le UserForm.

Clique sur le premier élément de la liste (le chiffres), et clique sur
le bouton. Un message s'affiche avec la valeur de 1 (0, zéro).

Modifie ensuite la ligne "For ..." ainsi :

For i = 1 To .ListCount - 1

Recommence le test (affichage du UserForm, sélection du premier
élément et clic sur le bouton).

Aucun message n'est affiché, car .Selected(i) n'est vrai que pour = 0,
qui n'est pas testé dans cette seconde version.

De la même façon, avec un ListBox pour lequel il n'y a pas de Multi-
selection, au lieu de Selected, on teste la propriété ListBox, dont la
valeur est "-1" quand aucun élément n'est sélectionné, et "n-1", quand
le enième élément est sélectionné (donc 0 pour le premier élément).

Voilà.

a écrit dans le message de
news:
, Michel Denis, Michel GABOLY, le Forum

Je vous remercie tous les trois de vos réponses.

, j'essayerai ton astuce pour voir ce que cela donne, pour
information personnelle.

Michel Denis, j'ai essayer avec : If Me.Selected(i) = True
et cela me mets aussi Argument non valide.

Michel GABOLY, j'ai utilisé ton code,J'ai du ajouter la déclaration de
la variable, et j'ai essayé avec For i = 1 et for i = 0 je n'ai point
vu de différence, es-ce normale?

Dim i As Integer

With ListBox1
For i = 1 To .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With

Encore merci, a vous trois cela faisait une plombe que je tourné et
retourné ce code en vain, Jacques

"Michel Gaboly" wrote in message
news:...

Bonsoir,

Tu ne peux pas utiliser Selected sans qualificatif. VBA ne peut pas
deviner tout seul quel ListBox (ou CheckBox) est concerné.

Donc :

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then UserForm2.TextBox10 > > UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13

Ou plus de lignes, mais peut-être plus lisible :

With ListBox1
For i = 1 to .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)


End If
Next i
End With

If .Selected(i) suffit ; le "= True" ne sert à rien.

Par ailleurs pourquoi commences-tu à 1 comme valeur de i ?

Sauf si "Option Base 1" dans le module, en principe, il faudrait com-
mencer à 0 (zéro). Avec

For i = 1 to .ListCount - 1

Le nombre de passages dans la boucle n'est pas égal à ListCount
il manque un passage.


a écrit dans le message de
news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques






Avatar
jacques-zeziola
Michem Gaboly,Hervé, le forum

Merci, Hervé

Alors dans mon cas comment je sais lequel des deux je dois utilisé.

Merci, jacques

"Michel Gaboly" wrote in message news:<#...
Rebonjour,

La différence n'intervient que si le premier élément est sélectionné :

Entre ce code (Il faut un UserForm avec un ListBox nommé ListBox1
et un CommandButton nommé BOK

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 10
ListBox1.AddItem i
Next i
End Sub

Private Sub BOK_Click()
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox i
End If
Next i
End With
End Sub

Appuie ensuite sur F4 pour afficher le UserForm.

Clique sur le premier élément de la liste (le chiffres), et clique sur
le bouton. Un message s'affiche avec la valeur de 1 (0, zéro).

Modifie ensuite la ligne "For ..." ainsi :

For i = 1 To .ListCount - 1

Recommence le test (affichage du UserForm, sélection du premier
élément et clic sur le bouton).

Aucun message n'est affiché, car .Selected(i) n'est vrai que pour = 0,
qui n'est pas testé dans cette seconde version.

De la même façon, avec un ListBox pour lequel il n'y a pas de Multi-
selection, au lieu de Selected, on teste la propriété ListBox, dont la
valeur est "-1" quand aucun élément n'est sélectionné, et "n-1", quand
le enième élément est sélectionné (donc 0 pour le premier élément).

Voilà.

a écrit dans le message de
news:
, Michel Denis, Michel GABOLY, le Forum

Je vous remercie tous les trois de vos réponses.

, j'essayerai ton astuce pour voir ce que cela donne, pour
information personnelle.

Michel Denis, j'ai essayer avec : If Me.Selected(i) = True
et cela me mets aussi Argument non valide.

Michel GABOLY, j'ai utilisé ton code,J'ai du ajouter la déclaration de
la variable, et j'ai essayé avec For i = 1 et for i = 0 je n'ai point
vu de différence, es-ce normale?

Dim i As Integer

With ListBox1
For i = 1 To .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With

Encore merci, a vous trois cela faisait une plombe que je tourné et
retourné ce code en vain, Jacques

"Michel Gaboly" wrote in message
news:...

Bonsoir,

Tu ne peux pas utiliser Selected sans qualificatif. VBA ne peut pas
deviner tout seul quel ListBox (ou CheckBox) est concerné.

Donc :

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then UserForm2.TextBox10 > > > UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13

Ou plus de lignes, mais peut-être plus lisible :

With ListBox1
For i = 1 to .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)


End If
Next i
End With

If .Selected(i) suffit ; le "= True" ne sert à rien.

Par ailleurs pourquoi commences-tu à 1 comme valeur de i ?

Sauf si "Option Base 1" dans le module, en principe, il faudrait com-
mencer à 0 (zéro). Avec

For i = 1 to .ListCount - 1

Le nombre de passages dans la boucle n'est pas égal à ListCount
il manque un passage.


a écrit dans le message de
news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques








Avatar
Michel Gaboly
Re,

C'est la première variante qui est la bonne ;-)))

La seconde (For i = 1 to ..) correspond à ce que tu utilsais dans
le code que nous a initialement soumis. Je la rappelais ici juste
pour montrer qu'elle ne permet pas détecter si le premier élément
est sélectionner perce que la valeur 0 qui correspond à vett éven-
tuelle sélection n'est pas testée.

En résumé avec For i = 1 ..., il manque un passaage dans la boucles :
n - 1 passages seulement pour n éléments.

Pour t'en convaincre crée un UserForm contenant un ListBox avec
un seul élément, et exécute le code en pas à pas.



Michem Gaboly,Hervé, le forum

Merci, Hervé

Alors dans mon cas comment je sais lequel des deux je dois utilisé.

Merci, jacques

"Michel Gaboly" wrote in message news:<#...
Rebonjour,

La différence n'intervient que si le premier élément est sélectionné :

Entre ce code (Il faut un UserForm avec un ListBox nommé ListBox1
et un CommandButton nommé BOK

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 10
ListBox1.AddItem i
Next i
End Sub

Private Sub BOK_Click()
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox i
End If
Next i
End With
End Sub

Appuie ensuite sur F4 pour afficher le UserForm.

Clique sur le premier élément de la liste (le chiffres), et clique sur
le bouton. Un message s'affiche avec la valeur de 1 (0, zéro).

Modifie ensuite la ligne "For ..." ainsi :

For i = 1 To .ListCount - 1

Recommence le test (affichage du UserForm, sélection du premier
élément et clic sur le bouton).

Aucun message n'est affiché, car .Selected(i) n'est vrai que pour = 0,
qui n'est pas testé dans cette seconde version.

De la même façon, avec un ListBox pour lequel il n'y a pas de Multi-
selection, au lieu de Selected, on teste la propriété ListBox, dont la
valeur est "-1" quand aucun élément n'est sélectionné, et "n-1", quand
le enième élément est sélectionné (donc 0 pour le premier élément).

Voilà.

a écrit dans le message de
news:
, Michel Denis, Michel GABOLY, le Forum

Je vous remercie tous les trois de vos réponses.

, j'essayerai ton astuce pour voir ce que cela donne, pour
information personnelle.

Michel Denis, j'ai essayer avec : If Me.Selected(i) = True
et cela me mets aussi Argument non valide.

Michel GABOLY, j'ai utilisé ton code,J'ai du ajouter la déclaration de
la variable, et j'ai essayé avec For i = 1 et for i = 0 je n'ai point
vu de différence, es-ce normale?

Dim i As Integer

With ListBox1
For i = 1 To .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With

Encore merci, a vous trois cela faisait une plombe que je tourné et
retourné ce code en vain, Jacques

"Michel Gaboly" wrote in message
news:...

Bonsoir,

Tu ne peux pas utiliser Selected sans qualificatif. VBA ne peut pas
deviner tout seul quel ListBox (ou CheckBox) est concerné.

Donc :

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then UserForm2.TextBox10 > > > > UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13

Ou plus de lignes, mais peut-être plus lisible :

With ListBox1
For i = 1 to .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)


End If
Next i
End With

If .Selected(i) suffit ; le "= True" ne sert à rien.

Par ailleurs pourquoi commences-tu à 1 comme valeur de i ?

Sauf si "Option Base 1" dans le module, en principe, il faudrait com-
mencer à 0 (zéro). Avec

For i = 1 to .ListCount - 1

Le nombre de passages dans la boucle n'est pas égal à ListCount
il manque un passage.


a écrit dans le message de
news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques






--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
jacques-zeziola
Michel, Le forum,

Merci de ton aide.

Pour la creation d'une fiche cela fonctionne super.

Mais comme cette liste peu évolluer, il y a donc un UserForm
"UserFormRésultat" avec une possibilité de modification qui utilise la
même pratique, donc je fais "Ajout d'un nouveau cableur", le UserForm
"Ajout" s'ouvre je fais la sélection de un ou plusieur cableur dans la
ListBox je fait "valider", le TextBox del'UserForm "Resultat" est bien
rempli, mais quand je revien dans celui-ci pour faire "modifier", ces
données s'effacent.

Qu'est-ce que j'ai pu oublier?

Merci, trés beaucoup,Jacques


wrote in message news:...
Michem Gaboly,Hervé, le forum

Merci, Hervé

Alors dans mon cas comment je sais lequel des deux je dois utilisé.

Merci, jacques

"Michel Gaboly" wrote in message news:<#...
Rebonjour,

La différence n'intervient que si le premier élément est sélectionné :

Entre ce code (Il faut un UserForm avec un ListBox nommé ListBox1
et un CommandButton nommé BOK

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 10
ListBox1.AddItem i
Next i
End Sub

Private Sub BOK_Click()
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox i
End If
Next i
End With
End Sub

Appuie ensuite sur F4 pour afficher le UserForm.

Clique sur le premier élément de la liste (le chiffres), et clique sur
le bouton. Un message s'affiche avec la valeur de 1 (0, zéro).

Modifie ensuite la ligne "For ..." ainsi :

For i = 1 To .ListCount - 1

Recommence le test (affichage du UserForm, sélection du premier
élément et clic sur le bouton).

Aucun message n'est affiché, car .Selected(i) n'est vrai que pour = 0,
qui n'est pas testé dans cette seconde version.

De la même façon, avec un ListBox pour lequel il n'y a pas de Multi-
selection, au lieu de Selected, on teste la propriété ListBox, dont la
valeur est "-1" quand aucun élément n'est sélectionné, et "n-1", quand
le enième élément est sélectionné (donc 0 pour le premier élément).

Voilà.

a écrit dans le message de
news:
, Michel Denis, Michel GABOLY, le Forum

Je vous remercie tous les trois de vos réponses.

, j'essayerai ton astuce pour voir ce que cela donne, pour
information personnelle.

Michel Denis, j'ai essayer avec : If Me.Selected(i) = True
et cela me mets aussi Argument non valide.

Michel GABOLY, j'ai utilisé ton code,J'ai du ajouter la déclaration de
la variable, et j'ai essayé avec For i = 1 et for i = 0 je n'ai point
vu de différence, es-ce normale?

Dim i As Integer

With ListBox1
For i = 1 To .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With

Encore merci, a vous trois cela faisait une plombe que je tourné et
retourné ce code en vain, Jacques

"Michel Gaboly" wrote in message
news:...


Bonsoir,

Tu ne peux pas utiliser Selected sans qualificatif. VBA ne peut pas
deviner tout seul quel ListBox (ou CheckBox) est concerné.

Donc :

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then UserForm2.TextBox10 > > > > UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13

Ou plus de lignes, mais peut-être plus lisible :

With ListBox1
For i = 1 to .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)



End If
Next i
End With

If .Selected(i) suffit ; le "= True" ne sert à rien.

Par ailleurs pourquoi commences-tu à 1 comme valeur de i ?

Sauf si "Option Base 1" dans le module, en principe, il faudrait com-
mencer à 0 (zéro). Avec

For i = 1 to .ListCount - 1

Le nombre de passages dans la boucle n'est pas égal à ListCount
il manque un passage.


a écrit dans le message de
news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques










Avatar
Michel Gaboly
Bonsoir,

De rien ;-))

Pour la suite peux-tuêtre un peu + précis ? ;-))

Quand on n'a jamais vu le classeur, ce n'est pas tout à fait limpide.

Indique ton code.

PS - Qu'appelles-tu revenir dans le UserForm : est-il caché (Hide) et réaffiché
ou déchargé (Unload) et réaffiché ?


Michel, Le forum,

Merci de ton aide.

Pour la creation d'une fiche cela fonctionne super.

Mais comme cette liste peu évolluer, il y a donc un UserForm
"UserFormRésultat" avec une possibilité de modification qui utilise la
même pratique, donc je fais "Ajout d'un nouveau cableur", le UserForm
"Ajout" s'ouvre je fais la sélection de un ou plusieur cableur dans la
ListBox je fait "valider", le TextBox del'UserForm "Resultat" est bien
rempli, mais quand je revien dans celui-ci pour faire "modifier", ces
données s'effacent.

Qu'est-ce que j'ai pu oublier?

Merci, trés beaucoup,Jacques

wrote in message news:...
Michem Gaboly,Hervé, le forum

Merci, Hervé

Alors dans mon cas comment je sais lequel des deux je dois utilisé.

Merci, jacques

"Michel Gaboly" wrote in message news:<#...
Rebonjour,

La différence n'intervient que si le premier élément est sélectionné :

Entre ce code (Il faut un UserForm avec un ListBox nommé ListBox1
et un CommandButton nommé BOK

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 10
ListBox1.AddItem i
Next i
End Sub

Private Sub BOK_Click()
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox i
End If
Next i
End With
End Sub

Appuie ensuite sur F4 pour afficher le UserForm.

Clique sur le premier élément de la liste (le chiffres), et clique sur
le bouton. Un message s'affiche avec la valeur de 1 (0, zéro).

Modifie ensuite la ligne "For ..." ainsi :

For i = 1 To .ListCount - 1

Recommence le test (affichage du UserForm, sélection du premier
élément et clic sur le bouton).

Aucun message n'est affiché, car .Selected(i) n'est vrai que pour = 0,
qui n'est pas testé dans cette seconde version.

De la même façon, avec un ListBox pour lequel il n'y a pas de Multi-
selection, au lieu de Selected, on teste la propriété ListBox, dont la
valeur est "-1" quand aucun élément n'est sélectionné, et "n-1", quand
le enième élément est sélectionné (donc 0 pour le premier élément).

Voilà.

a écrit dans le message de
news:
, Michel Denis, Michel GABOLY, le Forum

Je vous remercie tous les trois de vos réponses.

, j'essayerai ton astuce pour voir ce que cela donne, pour
information personnelle.

Michel Denis, j'ai essayer avec : If Me.Selected(i) = True
et cela me mets aussi Argument non valide.

Michel GABOLY, j'ai utilisé ton code,J'ai du ajouter la déclaration de
la variable, et j'ai essayé avec For i = 1 et for i = 0 je n'ai point
vu de différence, es-ce normale?

Dim i As Integer

With ListBox1
For i = 1 To .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With

Encore merci, a vous trois cela faisait une plombe que je tourné et
retourné ce code en vain, Jacques

"Michel Gaboly" wrote in message
news:...


Bonsoir,

Tu ne peux pas utiliser Selected sans qualificatif. VBA ne peut pas
deviner tout seul quel ListBox (ou CheckBox) est concerné.

Donc :

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then UserForm2.TextBox10 > > > > > UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13

Ou plus de lignes, mais peut-être plus lisible :

With ListBox1
For i = 1 to .ListCount - 1
If .Selected(i) Then
UserForm2.TextBox10 = UserForm2.TextBox10 & .List(i) &
Chr(13)



End If
Next i
End With

If .Selected(i) suffit ; le "= True" ne sert à rien.

Par ailleurs pourquoi commences-tu à 1 comme valeur de i ?

Sauf si "Option Base 1" dans le module, en principe, il faudrait com-
mencer à 0 (zéro). Avec

For i = 1 to .ListCount - 1

Le nombre de passages dans la boucle n'est pas égal à ListCount
il manque un passage.


a écrit dans le message de
news:
Salut le forum,

J'utilise un code, pour récupérer dans une ListBox (ListBox1) d'un
UserForm (USF_AjoutCableur) des données dans une feuille
(Tool_Intervenants!C6:C20.

Une fois ces données récupérées, je fais une sélection (Simple ou
Multiselect)dans la ListBox (ListBox1) qui aprés validation devraient
étre envoyé dans un TextBox (TextBox10 ) d'un autre UserForm
(UserForm2)

La récupération ce passe bien , mais une fois que je sélectionne les
données dans la ListBox en validant pour les envoyer dans un TextBox
d'un autre UserForm
cela le met un message d'erreur : Argument Non Valide et me souligne
en Jaune le code suivant : If Selected(i) = True Then .......


Voici ce code,

Option Explicit

Private Sub CommandButton1_Click()

Dim i As Integer

UserForm2.TextBox10 = "Les choix possibles sont:"

For i = 1 To ListBox1.ListCount - 1
If Selected(i) = True Then UserForm2.TextBox10 = UserForm2.TextBox10 &
ListBox1.List(i) & Chr(13)

Next i

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox1.RowSource = "Feuil1!C6:C20"

End Sub

Si quelqu'un peu m'expliquer d'ou vien l'erreur, je l'en remercie
d'avance, Jacques







--
Cordialement,

Michel Gaboly
http://www.gaboly.com






1 2