Re salut @tous
Au sujet de la syntaxe, ravi d'apprendre que msgbox "toto", suffit voilà qui m'explique peut être l'inexplicable incapacité que j'avais à affecter d'autres paramètres à mes msgbox....(vais tester ça aussi)
Pour la raison logique des msgbox c'était juste pendant mes tests pour vérifier que ça me renvoyait bien ce que je voulais à savoir le numéro de ligne de ma feuille excel correspondant à la valeur sélectionnée dans l'userform.
Mais j'ai été surpris de constater que ça me les renvoyait x fois(autant de fois que j'avais réaffiché l'userform...
En fait il me semble qu'il y a un problème de réinitialisation...
En fait c'était la suite de ce matin sauf qu'entre temps les combobox sont devenus des listbox... ça tu l'avais sans doute compris.
Bon voici tout le code lié à mon userform
Je le soumets volontiers aux critiques en tout genre
L'objectif est que l'utilisateur choisisse facilement les lignes à recopier dans un autre classeur
Les donées à copier vont de la plage 017:r17 à .....
Public varselectedDernLigne As Integer
Public varselectedPremLigne As Integer
Private Sub UserForm_Initialize()
Dim VarDerLigneSaisie As Integer
Dim VarPlageLigneSaisies As String
VarDerLigneSaisie = Sheets("Saisie_actions").Range("a65536").End(xlUp).Row
VarPlageLigneSaisies = Sheets("Saisie_actions").Range("o17:r" & VarDerLigneSaisie).Address
ListBoxPremLigne.ColumnCount = 4
ListBoxPremLigne.RowSource = "Saisie_actions!" & VarPlageLigneSaisies
ListBoxPremLigne.ColumnWidths = "80;280;80;80"
ListBoxDernLigne.ColumnCount = 4
ListBoxDernLigne.ColumnWidths = "80;280;80;80"
ListBoxDernLigne.RowSource = "Saisie_actions!" & VarPlageLigneSaisies
End Sub
Private Sub BoutonAnnuler_Click()
UserForm1.Hide
End Sub
Private Sub BoutonOk_Click()
Dim zoneacopier As String
Dim p4ouvert As Boolean
UserForm1.Hide
'*************Traitement erreur sélection première ligne à copier: ligne non saisie*************
If varselectedPremLigne < 17 Then
MsgBox ("Vous devez cliquer sur une ligne pour la sélectioner")
UserForm1.Show
ListBoxPremLigne.SetFocus
End If
'****Traitement erreur sélection deuxième ligne à copie: ligne non saisie ou avant la*************
'**************************numero ligne saisie avant premiere ligne sélectionnée**************
If varselectedPremLigne > varselectedDernLigne Then
MsgBox ("la dernière ligne ne doit pas être avant la première ou vous n'avez pas cliquer sur la ligne choisie pour la sélectionner")
UserForm1.Show
ListBoxDernLigne.SetFocus
End If
'ici je m'étonne du fait que j'ai décrit dans mon post
à savoir l'affichage plusieurs fois de mes msgbox je ne comprends pas pourquoi...
'la partie ci-après est la copie dans autre classeur
Sheets(1).Activate
zoneacopier = "o" & varselectedPremLigne & ":r" & varselectedDernLigne
p4ouvert = False
For Each w In Workbooks
Select Case UCase$(w.Name)
Case UCase$("p4.xls")
p4ouvert = True
End Select
If p4ouvert = False Then Workbooks.Open Filename:="E:\P4.xls"
ThisWorkbook.Activate
Range(zoneacopier).Select
Selection.Copy
Windows("P4.xls").Activate
Sheets("0 communes").Range("A14").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Select
End Sub
Private Sub ListBoxDernLigne_Change() 'là je n'ai pas bien vu la diff entre click et change les 2 ont semblé fonctioner...
varselectedDernLigne = UserForm1.ListBoxDernLigne.ListIndex + 17
End Sub
Private Sub ListBoxPremLigne_Change()'idem ici
varselectedPremLigne = UserForm1.ListBoxPremLigne.ListIndex + 17
If varselectedPremLigne < 17 Then
MsgBox ("Vous devez cliquer sur une ligne pour la sélectioner")
ListBoxPremLigne.SetFocus
End If
End Sub
Merci encore de votre aide
Steplof