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
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
jacques-zeziola@wanadoo.fr wrote in message news:<5ee3abf8.0311161047.7ba5c4c@posting.google.com>...
Michem Gaboly,Hervé, le forum
Merci, Hervé
Alors dans mon cas comment je sais lequel des deux je dois utilisé.
Merci, jacques
"Michel Gaboly" <michel@suppgaboly.com> wrote in message news:<#GTQkIErDHA.2772@TK2MSFTNGP12.phx.gbl>...
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à.
<jacques-zeziola@wanadoo.fr> a écrit dans le message de
news:5ee3abf8.0311160144.2541ef63@posting.google.com...
J@c, Michel Denis, Michel GABOLY, le Forum
Je vous remercie tous les trois de vos réponses.
J@c, 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" <michel@suppgaboly.com> wrote in message
news:<Oya3fH9qDHA.2188@TK2MSFTNGP11.phx.gbl>...
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.
<jacques-zeziola@wanadoo.fr> a écrit dans le message de
news:5ee3abf8.0311151331.2d8649d8@posting.google.com...
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
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
Michel, le forum.
Je vous écrit le code des différents UserForms:
1)UserForm Recherche rapide par référence "UserForm5"
Option Explicit
Private Sub CommandButton3_Click()
Unload UserForm3
End Sub
Private Sub CommandButton4_Click()
Range("a1").Value = TextBox1.Value
Range("H7").Select
Call Lancer
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
If UserForm3.ListBox1.ListCount = 0 Then Exit Sub
'Parcourir les entrées de liste de la dernière à la première
For i = UserForm3.ListBox1.ListCount - 1 To 0 Step -1
'Entrée en cours
If UserForm3.ListBox1.Selected(i) Then
'MsgBox (" Entrees " + UserForm3.ListBox1.List(i))
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End If
Next i
End Sub
Private Sub TextBox1_Change()
Dim i As Integer
If TextBox1 = "" Then
ListBox1.Clear
Exit Sub
End If
ListBox1.Clear
With Worksheets("Feuil1")
If .Range("A8") = "" Then Exit Sub 'aucune saisie en Feuil1 (Je ne
sais pas si c'est nécessaire ou non)
For i = 1 To .Range("A65536").End(xlUp).Row - 7
If Left(.Range("A8").Cells(i, 1), Len(TextBox1)) = TextBox1
Then ListBox1.AddItem .Range("A8").Cells(i, 1)
Next i
End With
End Sub
Private Sub UserForm_Activate()
SupprimerFermeture Me
TextBox1.SetFocus
End Sub
Private Sub initialize()
SupprimerFermeture Me
Sheets("Feuil1").Activate
Range("A7").Select
Range("F3").Value = ""
End Sub
2) L'UserForm Recherche par morceau de référence : "UserForm3A
Option Explicit
Private Sub BoutSupprime_Click()
Dim réponse
réponse = MsgBox(" Etes vous sur de vouloir supprimer cette fiche
? ", vbYesNo + vbQuestion, "Validation")
If réponse = vbNo Then Exit Sub
Ligne3 = ListBox1.ListIndex + 8
Range("A" & Ligne3).EntireRow.Delete Shift:=xlUp
ActiveWorkbook.Save
MsgBox " La fiche est Archivée et supprimée "
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
'comptage nb de fiches
Call calculnombrefiches
Call calculnombrefichesArchives
End Sub
Private Sub CommandButton1_Click()
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End Sub
Private Sub CommandButton2_Click()
Call calculnombrefiches
Unload UserForm5
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
If UserForm5.ListBox1.ListCount = 0 Then Exit Sub
'Parcourir les entrées de liste de la dernière à la première
For i = UserForm5.ListBox1.ListCount - 1 To 0 Step -1
'Entrée en cours
If UserForm5.ListBox1.Selected(i) Then
'MsgBox (" Entrees " + UserForm5.ListBox1.List(i))
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End If
Next i
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
SupprimerFermeture Me
For i = 1 To Worksheets("Feuil1").Range("F1") ' Boucle sur le nombre
de données
ListBox1.AddItem Worksheets("Feuil1").Range("A8").Cells(i, 1)
Next i
End Sub
3) L'UserForm résultat de la recherche "Résultat"
Option Explicit
Private Sub BoutModif_Click()
If résultat.TextBox1.Value = "" Then
MsgBox " Le champ Référence produit est obligatoire . "
Exit Sub
Else
'modification
Dim réponse
réponse = MsgBox(" Etes vous sur de vouloir modifier cette fiche ?
", vbYesNo + vbQuestion, "Validation")
If réponse = vbNo Then Exit Sub
TextBox3 = Format(Now, "DD/MM/YYYY")
ActiveCell.EntireRow.Select
ActiveCell.Offset(0, 2).Value = résultat.TextBox11.Value 'TextBox
Version
ActiveCell.Offset(0, 7).Value = résultat.TextBox4.Value 'TextBox
Nom & Prénom
ActiveCell.Offset(0, 8).Value = résultat.TextBox10.Value 'TextBox
Observations
ActiveCell.Offset(0, 4).Value = résultat.TextBox5.Value 'TextBox N°
de casier
' gestion des nombres commençant par 0 avec " ' "
ActiveCell.Value = "'" & LTrim(résultat.TextBox1.Value) +
résultat.TextBox11.Value 'TexteBox Référence produit + version
ActiveCell.Offset(0, 1).Value = "'" & résultat.TextBox1.Value
'TexteBox Référence produit
ActiveCell.Offset(0, 5).Value = "'" & résultat.TextBox3.Value
'TextBox date d'enregistrement
ActiveCell.Offset(0, 6).Value = "'" & résultat.ComboBox1.Value
'ComboBox N° de Matricule
ActiveCell.Offset(0, 3).Value = "'" & résultat.TextBox2.Value
'TextBox Désignation produit
ActiveWorkbook.Save
MsgBox " La fiche est modifiée . "
Dim réponse1
réponse1 = MsgBox(" Voulez-vous faire d'autres modifications dans
cette fiche ? ", vbYesNo + vbQuestion, "Validation")
If réponse1 = vbNo Then Unload résultat
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
End If
End Sub
Private Sub BoutNouvelle_Click()
Unload résultat
ActiveCell.Offset(0, 7).Select
Call Lancer
End Sub
Private Sub BoutSupprime_Click()
'MsgBox Ligne
Dim réponse, L As Long
réponse = MsgBox(" Etes vous sur de vouloir supprimer et de archiver
cette fiche ? ", vbYesNo + vbQuestion, "Validation")
If réponse = vbYes Then
'Créer dans la feuille Archive
With Sheets(Archi1)
L = .[A65536].End(xlUp).Row + 1
.Range("A" & L, "I" & L) = Sheets(NomF11).Range("A" & Ligne1, "I"
& Ligne1).Value
End With
With Sheets(NomF11)
.Rows(Ligne1).Delete
End With
'ActiveWorkbook.Save
'MsgBox " La fiche est archivée et Supprimée "
USF_ArchivageEtSuppressionFiche.Show 0
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
'comptage nb de fiches
Call calculnombrefiches
Call calculnombrefichesArchives
Sheets("feuil1").Activate
Range("a7").Select
Range("F3").Value = ""
'sortir
Unload résultat
End If
End Sub
Private Sub ComboBox1_Change()
Dim h As Integer
h = ComboBox1.ListIndex + 6
TextBox4 = Sheets("Tool_Intervenants").Range("C" & h)
End Sub
Private Sub CommandButton2_Click()
Range("I8").Select
Unload résultat
End Sub
Private Sub CommandButton3_Click()
USF_AjoutCableurResultat.Show 0
End Sub
Private Sub Image1_Click()
End Sub
Private Sub TextBox1_Change()
Dim Cell As Object
On Error GoTo gestion
With Range("A8:A" & Range("A65536").End(xlUp).Row)
Set Cell = .Find(TextBox1, LookIn:=xlValues)
Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & Cell &
".jpg")
Label16.Visible = False
End With
Exit Sub
gestion: 'si pas d'image disponible pour chargement
If Err.Number = 53 Then
Label16.Caption = "Pas de photo disponible pour cette référence. "
Image1.Picture = LoadPicture()
End If
End Sub
Private Sub TextBox2_Change()
TextBox2.Value = WorksheetFunction.Proper(TextBox2.Value)
End Sub
Private Sub TextBox3_Change()
End Sub
Private Sub TextBox5_Change()
If Len(TextBox5) = 0 Then Exit Sub
'Mettre les lettres en majuscules
TextBox5 = UCase(TextBox5)
' Ajout éventuel d'un espace avant les chiffres
If Len(TextBox5) <= 1 Or InStr(TextBox5, " ") > 0 Then Exit Sub
If Not IsNumeric(Mid(TextBox5, Len(TextBox5) - 1, 1)) And
IsNumeric(Right(TextBox5, 1)) Then
TextBox5 = Left(TextBox5, Len(TextBox5) - 1) & " " & Right(TextBox5,
1)
End If
End Sub
Private Sub UserForm_Activate()
ActiveCell.EntireRow.Select
résultat.TextBox1.Value = ActiveCell.Offset(0, 1).Value 'TexteBox
Référence produit
résultat.TextBox2.Value = ActiveCell.Offset(0, 3).Value 'TextBox
Désignation produit
résultat.TextBox3.Value = ActiveCell.Offset(0, 5).Value 'TextBox
date d'enregistrement
résultat.TextBox4.Value = ActiveCell.Offset(0, 7).Value 'TextBox
Nom & Prénom
résultat.TextBox5.Value = ActiveCell.Offset(0, 4).Value 'TextBox
N° de casier
résultat.TextBox10.Value = ActiveCell.Offset(0, 8).Value 'TextBox
Observations
résultat.TextBox11.Value = ActiveCell.Offset(0, 2).Value 'TextBox
Version
résultat.ComboBox1.Value = ActiveCell.Offset(0, 6).Value 'ComboBox
N° de Matricule
End Sub
Private Sub UserForm_Initialize()
SupprimerFermeture Me
ComboBox1.RowSource = "Tool_Intervenants!B6:B25" 'Récupération des
N°Matricule
End Sub
4) L'UserForm ajout d'un cableur "USF_AjoutCableurResultat"
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Integer, Msg
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
résultat.TextBox10 = résultat.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With
Msg = MsgBox("Voulez-vous ajouter un cableur ? ", vbYesNo, "AJOUT D'UN
CABLEUR")
If Msg = vbYes Then
Unload USF_AjoutCableurResultat
USF_AjoutCableurResultat.Show 0
Else
'sortir
Unload USF_AjoutCableurResultat
'résultat.Show 0
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Initialize()
SupprimerFermeture Me
ListBox1.RowSource = "Tool_Intervenants!C6:C20"
End Sub
5) Le mondule Lancer "Lancer"
Option Explicit
Public Const NomF11 As String = "Feuil1" 'feuille database
Public Const Archi1 As String = "Archive" 'Feuille archive
Public Ligne As Long
Public Ligne1 As Long
Public Ligne3 As Long
Public Ligne5 As Long
Sub Lancer()
Sheets("feuil1").Activate
'pour eviter de demarrer avec la case A1 vide
If Sheets("feuil1").Range("a1") = "" Then Exit Sub
'permet de débuger les valeurs totalement ide
tiques
Sheets("feuil1").Range("a1").Value = "*" & Range("a1").Value & "*"
'correction accentuations
Worksheets("Feuil1").Columns("A:H").Replace What:="é",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="è",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ê",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="û",
Replacement:="u", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ù",
Replacement:="u", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="à",
Replacement:="a", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ç",
Replacement:="c", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ô",
Replacement:="o", SearchOrder:=xlByColumns, MatchCase:=True
'rechercher
Cells.Find(What:=Range("A1"), After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse).Activate
If ActiveCell = Range("A1") Then MsgBox " pas d'autre résultat ",
vbInformation, " Résultat de votre requète"
Select Case ActiveCell
Case Is <> Range("A1")
résultat.Show 0
End Select
End Sub
6) Le module Test "test"
Sub test()
'ordre alphabetique
Sheets("Feuil1").Range("A8").Sort
Key1:=Sheets("Feuil1").Range("A8"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
Call calculnombrefiches
'redéfini selection
Sheets("Feuil1").Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
UserForm5.Show 0
End Sub
7) Le module calcule nombre de fiches "calculnombrefiches"
Sub calculnombrefiches()
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("f1").Value = Range("a65500",
Range("A7").End(xlDown)).Row - 7
If Sheets("Feuil1").Range("A8").Value = "" Then
Sheets("Feuil1").Range("f1").Value = 0
End If
UserForm1.Label3.Caption = " Il y a actuellement " &
Sheets("Feuil1").Range("F1").Value & " fiche(s) de créée(s) dans cette
base . "
End Sub
Voila pour les codes, j'espère que vous avez tout pour pouvoir
m'aider, je vous en remercie d'avance, Jacques
Michel Gaboly wrote in message news:...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
Michel, le forum.
Je vous écrit le code des différents UserForms:
1)UserForm Recherche rapide par référence "UserForm5"
Option Explicit
Private Sub CommandButton3_Click()
Unload UserForm3
End Sub
Private Sub CommandButton4_Click()
Range("a1").Value = TextBox1.Value
Range("H7").Select
Call Lancer
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
If UserForm3.ListBox1.ListCount = 0 Then Exit Sub
'Parcourir les entrées de liste de la dernière à la première
For i = UserForm3.ListBox1.ListCount - 1 To 0 Step -1
'Entrée en cours
If UserForm3.ListBox1.Selected(i) Then
'MsgBox (" Entrees " + UserForm3.ListBox1.List(i))
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End If
Next i
End Sub
Private Sub TextBox1_Change()
Dim i As Integer
If TextBox1 = "" Then
ListBox1.Clear
Exit Sub
End If
ListBox1.Clear
With Worksheets("Feuil1")
If .Range("A8") = "" Then Exit Sub 'aucune saisie en Feuil1 (Je ne
sais pas si c'est nécessaire ou non)
For i = 1 To .Range("A65536").End(xlUp).Row - 7
If Left(.Range("A8").Cells(i, 1), Len(TextBox1)) = TextBox1
Then ListBox1.AddItem .Range("A8").Cells(i, 1)
Next i
End With
End Sub
Private Sub UserForm_Activate()
SupprimerFermeture Me
TextBox1.SetFocus
End Sub
Private Sub initialize()
SupprimerFermeture Me
Sheets("Feuil1").Activate
Range("A7").Select
Range("F3").Value = ""
End Sub
2) L'UserForm Recherche par morceau de référence : "UserForm3A
Option Explicit
Private Sub BoutSupprime_Click()
Dim réponse
réponse = MsgBox(" Etes vous sur de vouloir supprimer cette fiche
? ", vbYesNo + vbQuestion, "Validation")
If réponse = vbNo Then Exit Sub
Ligne3 = ListBox1.ListIndex + 8
Range("A" & Ligne3).EntireRow.Delete Shift:=xlUp
ActiveWorkbook.Save
MsgBox " La fiche est Archivée et supprimée "
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
'comptage nb de fiches
Call calculnombrefiches
Call calculnombrefichesArchives
End Sub
Private Sub CommandButton1_Click()
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End Sub
Private Sub CommandButton2_Click()
Call calculnombrefiches
Unload UserForm5
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
If UserForm5.ListBox1.ListCount = 0 Then Exit Sub
'Parcourir les entrées de liste de la dernière à la première
For i = UserForm5.ListBox1.ListCount - 1 To 0 Step -1
'Entrée en cours
If UserForm5.ListBox1.Selected(i) Then
'MsgBox (" Entrees " + UserForm5.ListBox1.List(i))
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End If
Next i
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
SupprimerFermeture Me
For i = 1 To Worksheets("Feuil1").Range("F1") ' Boucle sur le nombre
de données
ListBox1.AddItem Worksheets("Feuil1").Range("A8").Cells(i, 1)
Next i
End Sub
3) L'UserForm résultat de la recherche "Résultat"
Option Explicit
Private Sub BoutModif_Click()
If résultat.TextBox1.Value = "" Then
MsgBox " Le champ Référence produit est obligatoire . "
Exit Sub
Else
'modification
Dim réponse
réponse = MsgBox(" Etes vous sur de vouloir modifier cette fiche ?
", vbYesNo + vbQuestion, "Validation")
If réponse = vbNo Then Exit Sub
TextBox3 = Format(Now, "DD/MM/YYYY")
ActiveCell.EntireRow.Select
ActiveCell.Offset(0, 2).Value = résultat.TextBox11.Value 'TextBox
Version
ActiveCell.Offset(0, 7).Value = résultat.TextBox4.Value 'TextBox
Nom & Prénom
ActiveCell.Offset(0, 8).Value = résultat.TextBox10.Value 'TextBox
Observations
ActiveCell.Offset(0, 4).Value = résultat.TextBox5.Value 'TextBox N°
de casier
' gestion des nombres commençant par 0 avec " ' "
ActiveCell.Value = "'" & LTrim(résultat.TextBox1.Value) +
résultat.TextBox11.Value 'TexteBox Référence produit + version
ActiveCell.Offset(0, 1).Value = "'" & résultat.TextBox1.Value
'TexteBox Référence produit
ActiveCell.Offset(0, 5).Value = "'" & résultat.TextBox3.Value
'TextBox date d'enregistrement
ActiveCell.Offset(0, 6).Value = "'" & résultat.ComboBox1.Value
'ComboBox N° de Matricule
ActiveCell.Offset(0, 3).Value = "'" & résultat.TextBox2.Value
'TextBox Désignation produit
ActiveWorkbook.Save
MsgBox " La fiche est modifiée . "
Dim réponse1
réponse1 = MsgBox(" Voulez-vous faire d'autres modifications dans
cette fiche ? ", vbYesNo + vbQuestion, "Validation")
If réponse1 = vbNo Then Unload résultat
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
End If
End Sub
Private Sub BoutNouvelle_Click()
Unload résultat
ActiveCell.Offset(0, 7).Select
Call Lancer
End Sub
Private Sub BoutSupprime_Click()
'MsgBox Ligne
Dim réponse, L As Long
réponse = MsgBox(" Etes vous sur de vouloir supprimer et de archiver
cette fiche ? ", vbYesNo + vbQuestion, "Validation")
If réponse = vbYes Then
'Créer dans la feuille Archive
With Sheets(Archi1)
L = .[A65536].End(xlUp).Row + 1
.Range("A" & L, "I" & L) = Sheets(NomF11).Range("A" & Ligne1, "I"
& Ligne1).Value
End With
With Sheets(NomF11)
.Rows(Ligne1).Delete
End With
'ActiveWorkbook.Save
'MsgBox " La fiche est archivée et Supprimée "
USF_ArchivageEtSuppressionFiche.Show 0
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
'comptage nb de fiches
Call calculnombrefiches
Call calculnombrefichesArchives
Sheets("feuil1").Activate
Range("a7").Select
Range("F3").Value = ""
'sortir
Unload résultat
End If
End Sub
Private Sub ComboBox1_Change()
Dim h As Integer
h = ComboBox1.ListIndex + 6
TextBox4 = Sheets("Tool_Intervenants").Range("C" & h)
End Sub
Private Sub CommandButton2_Click()
Range("I8").Select
Unload résultat
End Sub
Private Sub CommandButton3_Click()
USF_AjoutCableurResultat.Show 0
End Sub
Private Sub Image1_Click()
End Sub
Private Sub TextBox1_Change()
Dim Cell As Object
On Error GoTo gestion
With Range("A8:A" & Range("A65536").End(xlUp).Row)
Set Cell = .Find(TextBox1, LookIn:=xlValues)
Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & Cell &
".jpg")
Label16.Visible = False
End With
Exit Sub
gestion: 'si pas d'image disponible pour chargement
If Err.Number = 53 Then
Label16.Caption = "Pas de photo disponible pour cette référence. "
Image1.Picture = LoadPicture()
End If
End Sub
Private Sub TextBox2_Change()
TextBox2.Value = WorksheetFunction.Proper(TextBox2.Value)
End Sub
Private Sub TextBox3_Change()
End Sub
Private Sub TextBox5_Change()
If Len(TextBox5) = 0 Then Exit Sub
'Mettre les lettres en majuscules
TextBox5 = UCase(TextBox5)
' Ajout éventuel d'un espace avant les chiffres
If Len(TextBox5) <= 1 Or InStr(TextBox5, " ") > 0 Then Exit Sub
If Not IsNumeric(Mid(TextBox5, Len(TextBox5) - 1, 1)) And
IsNumeric(Right(TextBox5, 1)) Then
TextBox5 = Left(TextBox5, Len(TextBox5) - 1) & " " & Right(TextBox5,
1)
End If
End Sub
Private Sub UserForm_Activate()
ActiveCell.EntireRow.Select
résultat.TextBox1.Value = ActiveCell.Offset(0, 1).Value 'TexteBox
Référence produit
résultat.TextBox2.Value = ActiveCell.Offset(0, 3).Value 'TextBox
Désignation produit
résultat.TextBox3.Value = ActiveCell.Offset(0, 5).Value 'TextBox
date d'enregistrement
résultat.TextBox4.Value = ActiveCell.Offset(0, 7).Value 'TextBox
Nom & Prénom
résultat.TextBox5.Value = ActiveCell.Offset(0, 4).Value 'TextBox
N° de casier
résultat.TextBox10.Value = ActiveCell.Offset(0, 8).Value 'TextBox
Observations
résultat.TextBox11.Value = ActiveCell.Offset(0, 2).Value 'TextBox
Version
résultat.ComboBox1.Value = ActiveCell.Offset(0, 6).Value 'ComboBox
N° de Matricule
End Sub
Private Sub UserForm_Initialize()
SupprimerFermeture Me
ComboBox1.RowSource = "Tool_Intervenants!B6:B25" 'Récupération des
N°Matricule
End Sub
4) L'UserForm ajout d'un cableur "USF_AjoutCableurResultat"
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Integer, Msg
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
résultat.TextBox10 = résultat.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With
Msg = MsgBox("Voulez-vous ajouter un cableur ? ", vbYesNo, "AJOUT D'UN
CABLEUR")
If Msg = vbYes Then
Unload USF_AjoutCableurResultat
USF_AjoutCableurResultat.Show 0
Else
'sortir
Unload USF_AjoutCableurResultat
'résultat.Show 0
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Initialize()
SupprimerFermeture Me
ListBox1.RowSource = "Tool_Intervenants!C6:C20"
End Sub
5) Le mondule Lancer "Lancer"
Option Explicit
Public Const NomF11 As String = "Feuil1" 'feuille database
Public Const Archi1 As String = "Archive" 'Feuille archive
Public Ligne As Long
Public Ligne1 As Long
Public Ligne3 As Long
Public Ligne5 As Long
Sub Lancer()
Sheets("feuil1").Activate
'pour eviter de demarrer avec la case A1 vide
If Sheets("feuil1").Range("a1") = "" Then Exit Sub
'permet de débuger les valeurs totalement ide
tiques
Sheets("feuil1").Range("a1").Value = "*" & Range("a1").Value & "*"
'correction accentuations
Worksheets("Feuil1").Columns("A:H").Replace What:="é",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="è",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ê",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="û",
Replacement:="u", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ù",
Replacement:="u", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="à",
Replacement:="a", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ç",
Replacement:="c", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ô",
Replacement:="o", SearchOrder:=xlByColumns, MatchCase:=True
'rechercher
Cells.Find(What:=Range("A1"), After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse).Activate
If ActiveCell = Range("A1") Then MsgBox " pas d'autre résultat ",
vbInformation, " Résultat de votre requète"
Select Case ActiveCell
Case Is <> Range("A1")
résultat.Show 0
End Select
End Sub
6) Le module Test "test"
Sub test()
'ordre alphabetique
Sheets("Feuil1").Range("A8").Sort
Key1:=Sheets("Feuil1").Range("A8"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
Call calculnombrefiches
'redéfini selection
Sheets("Feuil1").Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
UserForm5.Show 0
End Sub
7) Le module calcule nombre de fiches "calculnombrefiches"
Sub calculnombrefiches()
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("f1").Value = Range("a65500",
Range("A7").End(xlDown)).Row - 7
If Sheets("Feuil1").Range("A8").Value = "" Then
Sheets("Feuil1").Range("f1").Value = 0
End If
UserForm1.Label3.Caption = " Il y a actuellement " &
Sheets("Feuil1").Range("F1").Value & " fiche(s) de créée(s) dans cette
base . "
End Sub
Voila pour les codes, j'espère que vous avez tout pour pouvoir
m'aider, je vous en remercie d'avance, Jacques
Michel Gaboly <michel@Suppgaboly.com> wrote in message news:<3FB940A3.8DDECA55@Suppgaboly.com>...
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
jacques-zeziola@wanadoo.fr wrote in message news:<5ee3abf8.0311161047.7ba5c4c@posting.google.com>...
Michem Gaboly,Hervé, le forum
Merci, Hervé
Alors dans mon cas comment je sais lequel des deux je dois utilisé.
Merci, jacques
"Michel Gaboly" <michel@suppgaboly.com> wrote in message news:<#GTQkIErDHA.2772@TK2MSFTNGP12.phx.gbl>...
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à.
<jacques-zeziola@wanadoo.fr> a écrit dans le message de
news:5ee3abf8.0311160144.2541ef63@posting.google.com...
J@c, Michel Denis, Michel GABOLY, le Forum
Je vous remercie tous les trois de vos réponses.
J@c, 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" <michel@suppgaboly.com> wrote in message
news:<Oya3fH9qDHA.2188@TK2MSFTNGP11.phx.gbl>...
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.
<jacques-zeziola@wanadoo.fr> a écrit dans le message de
news:5ee3abf8.0311151331.2d8649d8@posting.google.com...
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
Michel, le forum.
Je vous écrit le code des différents UserForms:
1)UserForm Recherche rapide par référence "UserForm5"
Option Explicit
Private Sub CommandButton3_Click()
Unload UserForm3
End Sub
Private Sub CommandButton4_Click()
Range("a1").Value = TextBox1.Value
Range("H7").Select
Call Lancer
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
If UserForm3.ListBox1.ListCount = 0 Then Exit Sub
'Parcourir les entrées de liste de la dernière à la première
For i = UserForm3.ListBox1.ListCount - 1 To 0 Step -1
'Entrée en cours
If UserForm3.ListBox1.Selected(i) Then
'MsgBox (" Entrees " + UserForm3.ListBox1.List(i))
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End If
Next i
End Sub
Private Sub TextBox1_Change()
Dim i As Integer
If TextBox1 = "" Then
ListBox1.Clear
Exit Sub
End If
ListBox1.Clear
With Worksheets("Feuil1")
If .Range("A8") = "" Then Exit Sub 'aucune saisie en Feuil1 (Je ne
sais pas si c'est nécessaire ou non)
For i = 1 To .Range("A65536").End(xlUp).Row - 7
If Left(.Range("A8").Cells(i, 1), Len(TextBox1)) = TextBox1
Then ListBox1.AddItem .Range("A8").Cells(i, 1)
Next i
End With
End Sub
Private Sub UserForm_Activate()
SupprimerFermeture Me
TextBox1.SetFocus
End Sub
Private Sub initialize()
SupprimerFermeture Me
Sheets("Feuil1").Activate
Range("A7").Select
Range("F3").Value = ""
End Sub
2) L'UserForm Recherche par morceau de référence : "UserForm3A
Option Explicit
Private Sub BoutSupprime_Click()
Dim réponse
réponse = MsgBox(" Etes vous sur de vouloir supprimer cette fiche
? ", vbYesNo + vbQuestion, "Validation")
If réponse = vbNo Then Exit Sub
Ligne3 = ListBox1.ListIndex + 8
Range("A" & Ligne3).EntireRow.Delete Shift:=xlUp
ActiveWorkbook.Save
MsgBox " La fiche est Archivée et supprimée "
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
'comptage nb de fiches
Call calculnombrefiches
Call calculnombrefichesArchives
End Sub
Private Sub CommandButton1_Click()
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End Sub
Private Sub CommandButton2_Click()
Call calculnombrefiches
Unload UserForm5
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
If UserForm5.ListBox1.ListCount = 0 Then Exit Sub
'Parcourir les entrées de liste de la dernière à la première
For i = UserForm5.ListBox1.ListCount - 1 To 0 Step -1
'Entrée en cours
If UserForm5.ListBox1.Selected(i) Then
'MsgBox (" Entrees " + UserForm5.ListBox1.List(i))
Ligne1 = ListBox1.ListIndex + 8
Range("A1").Value = ListBox1.Value
Range("I7").Select
Call Lancer
End If
Next i
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
SupprimerFermeture Me
For i = 1 To Worksheets("Feuil1").Range("F1") ' Boucle sur le nombre
de données
ListBox1.AddItem Worksheets("Feuil1").Range("A8").Cells(i, 1)
Next i
End Sub
3) L'UserForm résultat de la recherche "Résultat"
Option Explicit
Private Sub BoutModif_Click()
If résultat.TextBox1.Value = "" Then
MsgBox " Le champ Référence produit est obligatoire . "
Exit Sub
Else
'modification
Dim réponse
réponse = MsgBox(" Etes vous sur de vouloir modifier cette fiche ?
", vbYesNo + vbQuestion, "Validation")
If réponse = vbNo Then Exit Sub
TextBox3 = Format(Now, "DD/MM/YYYY")
ActiveCell.EntireRow.Select
ActiveCell.Offset(0, 2).Value = résultat.TextBox11.Value 'TextBox
Version
ActiveCell.Offset(0, 7).Value = résultat.TextBox4.Value 'TextBox
Nom & Prénom
ActiveCell.Offset(0, 8).Value = résultat.TextBox10.Value 'TextBox
Observations
ActiveCell.Offset(0, 4).Value = résultat.TextBox5.Value 'TextBox N°
de casier
' gestion des nombres commençant par 0 avec " ' "
ActiveCell.Value = "'" & LTrim(résultat.TextBox1.Value) +
résultat.TextBox11.Value 'TexteBox Référence produit + version
ActiveCell.Offset(0, 1).Value = "'" & résultat.TextBox1.Value
'TexteBox Référence produit
ActiveCell.Offset(0, 5).Value = "'" & résultat.TextBox3.Value
'TextBox date d'enregistrement
ActiveCell.Offset(0, 6).Value = "'" & résultat.ComboBox1.Value
'ComboBox N° de Matricule
ActiveCell.Offset(0, 3).Value = "'" & résultat.TextBox2.Value
'TextBox Désignation produit
ActiveWorkbook.Save
MsgBox " La fiche est modifiée . "
Dim réponse1
réponse1 = MsgBox(" Voulez-vous faire d'autres modifications dans
cette fiche ? ", vbYesNo + vbQuestion, "Validation")
If réponse1 = vbNo Then Unload résultat
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
End If
End Sub
Private Sub BoutNouvelle_Click()
Unload résultat
ActiveCell.Offset(0, 7).Select
Call Lancer
End Sub
Private Sub BoutSupprime_Click()
'MsgBox Ligne
Dim réponse, L As Long
réponse = MsgBox(" Etes vous sur de vouloir supprimer et de archiver
cette fiche ? ", vbYesNo + vbQuestion, "Validation")
If réponse = vbYes Then
'Créer dans la feuille Archive
With Sheets(Archi1)
L = .[A65536].End(xlUp).Row + 1
.Range("A" & L, "I" & L) = Sheets(NomF11).Range("A" & Ligne1, "I"
& Ligne1).Value
End With
With Sheets(NomF11)
.Rows(Ligne1).Delete
End With
'ActiveWorkbook.Save
'MsgBox " La fiche est archivée et Supprimée "
USF_ArchivageEtSuppressionFiche.Show 0
Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
'comptage nb de fiches
Call calculnombrefiches
Call calculnombrefichesArchives
Sheets("feuil1").Activate
Range("a7").Select
Range("F3").Value = ""
'sortir
Unload résultat
End If
End Sub
Private Sub ComboBox1_Change()
Dim h As Integer
h = ComboBox1.ListIndex + 6
TextBox4 = Sheets("Tool_Intervenants").Range("C" & h)
End Sub
Private Sub CommandButton2_Click()
Range("I8").Select
Unload résultat
End Sub
Private Sub CommandButton3_Click()
USF_AjoutCableurResultat.Show 0
End Sub
Private Sub Image1_Click()
End Sub
Private Sub TextBox1_Change()
Dim Cell As Object
On Error GoTo gestion
With Range("A8:A" & Range("A65536").End(xlUp).Row)
Set Cell = .Find(TextBox1, LookIn:=xlValues)
Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & Cell &
".jpg")
Label16.Visible = False
End With
Exit Sub
gestion: 'si pas d'image disponible pour chargement
If Err.Number = 53 Then
Label16.Caption = "Pas de photo disponible pour cette référence. "
Image1.Picture = LoadPicture()
End If
End Sub
Private Sub TextBox2_Change()
TextBox2.Value = WorksheetFunction.Proper(TextBox2.Value)
End Sub
Private Sub TextBox3_Change()
End Sub
Private Sub TextBox5_Change()
If Len(TextBox5) = 0 Then Exit Sub
'Mettre les lettres en majuscules
TextBox5 = UCase(TextBox5)
' Ajout éventuel d'un espace avant les chiffres
If Len(TextBox5) <= 1 Or InStr(TextBox5, " ") > 0 Then Exit Sub
If Not IsNumeric(Mid(TextBox5, Len(TextBox5) - 1, 1)) And
IsNumeric(Right(TextBox5, 1)) Then
TextBox5 = Left(TextBox5, Len(TextBox5) - 1) & " " & Right(TextBox5,
1)
End If
End Sub
Private Sub UserForm_Activate()
ActiveCell.EntireRow.Select
résultat.TextBox1.Value = ActiveCell.Offset(0, 1).Value 'TexteBox
Référence produit
résultat.TextBox2.Value = ActiveCell.Offset(0, 3).Value 'TextBox
Désignation produit
résultat.TextBox3.Value = ActiveCell.Offset(0, 5).Value 'TextBox
date d'enregistrement
résultat.TextBox4.Value = ActiveCell.Offset(0, 7).Value 'TextBox
Nom & Prénom
résultat.TextBox5.Value = ActiveCell.Offset(0, 4).Value 'TextBox
N° de casier
résultat.TextBox10.Value = ActiveCell.Offset(0, 8).Value 'TextBox
Observations
résultat.TextBox11.Value = ActiveCell.Offset(0, 2).Value 'TextBox
Version
résultat.ComboBox1.Value = ActiveCell.Offset(0, 6).Value 'ComboBox
N° de Matricule
End Sub
Private Sub UserForm_Initialize()
SupprimerFermeture Me
ComboBox1.RowSource = "Tool_Intervenants!B6:B25" 'Récupération des
N°Matricule
End Sub
4) L'UserForm ajout d'un cableur "USF_AjoutCableurResultat"
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Integer, Msg
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
résultat.TextBox10 = résultat.TextBox10 & .List(i) &
Chr(13)
End If
Next i
End With
Msg = MsgBox("Voulez-vous ajouter un cableur ? ", vbYesNo, "AJOUT D'UN
CABLEUR")
If Msg = vbYes Then
Unload USF_AjoutCableurResultat
USF_AjoutCableurResultat.Show 0
Else
'sortir
Unload USF_AjoutCableurResultat
'résultat.Show 0
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Initialize()
SupprimerFermeture Me
ListBox1.RowSource = "Tool_Intervenants!C6:C20"
End Sub
5) Le mondule Lancer "Lancer"
Option Explicit
Public Const NomF11 As String = "Feuil1" 'feuille database
Public Const Archi1 As String = "Archive" 'Feuille archive
Public Ligne As Long
Public Ligne1 As Long
Public Ligne3 As Long
Public Ligne5 As Long
Sub Lancer()
Sheets("feuil1").Activate
'pour eviter de demarrer avec la case A1 vide
If Sheets("feuil1").Range("a1") = "" Then Exit Sub
'permet de débuger les valeurs totalement ide
tiques
Sheets("feuil1").Range("a1").Value = "*" & Range("a1").Value & "*"
'correction accentuations
Worksheets("Feuil1").Columns("A:H").Replace What:="é",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="è",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ê",
Replacement:="e", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="û",
Replacement:="u", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ù",
Replacement:="u", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="à",
Replacement:="a", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ç",
Replacement:="c", SearchOrder:=xlByColumns, MatchCase:=True
Worksheets("Feuil1").Columns("A:H").Replace What:="ô",
Replacement:="o", SearchOrder:=xlByColumns, MatchCase:=True
'rechercher
Cells.Find(What:=Range("A1"), After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse).Activate
If ActiveCell = Range("A1") Then MsgBox " pas d'autre résultat ",
vbInformation, " Résultat de votre requète"
Select Case ActiveCell
Case Is <> Range("A1")
résultat.Show 0
End Select
End Sub
6) Le module Test "test"
Sub test()
'ordre alphabetique
Sheets("Feuil1").Range("A8").Sort
Key1:=Sheets("Feuil1").Range("A8"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
Call calculnombrefiches
'redéfini selection
Sheets("Feuil1").Range("A8").Resize(rowsize:=Range("F1").Value,
columnsize:=1).Select
UserForm5.ListBox1.List = Selection.Value
UserForm5.Show 0
End Sub
7) Le module calcule nombre de fiches "calculnombrefiches"
Sub calculnombrefiches()
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("f1").Value = Range("a65500",
Range("A7").End(xlDown)).Row - 7
If Sheets("Feuil1").Range("A8").Value = "" Then
Sheets("Feuil1").Range("f1").Value = 0
End If
UserForm1.Label3.Caption = " Il y a actuellement " &
Sheets("Feuil1").Range("F1").Value & " fiche(s) de créée(s) dans cette
base . "
End Sub
Voila pour les codes, j'espère que vous avez tout pour pouvoir
m'aider, je vous en remercie d'avance, Jacques
Michel Gaboly wrote in message news:...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