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

2 réponses

1 2
Avatar
jacques-zeziola
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 identiques
Sheets("feuil1").Range("a1").Value = "*" & Range("a1").Value & "*"

'correction accentuations
Worksheets("Feuil1").Columns("A:H").Replace What:="é",
Replacement:="e", Se
rchOrder:=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














Avatar
Michel Gaboly
Bonjour,

Trop long à reconstituer pour tester ;-(((

Envoie-moi le classeur si tu veux en Bal perso (enlève "supp"
dans mon adresse).

Un conseil : donne des noms plus explicites à tes boutons, ListBox
et autres contrôles, ainsi qu'aux UserForm.

Pour ce faire, utilise simplement la fenêtre Propriétés.

Ton code sera + facile à lire et à maintenir ;-))



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









--
Cordialement,

Michel Gaboly
http://www.gaboly.com








1 2