erreur de compil????

dakama

XLDnaute Nouveau
bonsoir tous!!!

ma macro se réfère à la listbox d un userform : après sélection dans cette listbox elle doit agir en fonction de la colonne sélectionnée... c est là que cela se complique puisque je n arrive pas à compiler les deux arguments... je mets ci dessous ma macro... si besoin je peux également préparer une pièce jointe mais connaissant les pros qui visitent le forum peut être cela ne sera t il pas utile???? :)

merci d avance

--------------------------------------------------------------------------
Sub EFFACE_SEMAINE()
Dim col, j As Integer
Dim var As Variant
var = 0
If UserForm7.ListBox1.ListIndex = -1 Then
MsgBox 'Vous n'avez pas sélectionné de camion', vbCritical, 'LM'
Exit Sub
Else
LISTBOXVAL = UserForm7.ListBox1.Value
If LISTBOXVAL = cells(11, 2).Value Then
col = 2
GoTo line1
End If
If LISTBOXVAL = cells(11, 4).Value Then
col = 4
GoTo line2
End If
If LISTBOXVAL = cells(11, 6).Value Then
col = 6
GoTo line1
End If
If LISTBOXVAL = cells(11, 10).Value Then
col = 10
GoTo line1
End If
If LISTBOXVAL = cells(11, 12).Value Then
col = 12
GoTo line2
End If
If LISTBOXVAL = cells(11, 8).Value Then
col = 8
GoTo line2
Else
Exit Sub
End If
End If
line1:
For j = 1 To 7
Range('D317:D339').Select
Selection.Copy
cells(13 + var, col).Select
ActiveSheet.Paste
var = var + 30
Next j je pense qu il manque un 'end quelquechose' à ce niveau là
line2:
For j = 1 To 7
Range('F317:F339').Select
Selection.Copy
cells(13 + var, col).Select
ActiveSheet.Paste
var = var + 30
Next j
End If
Range('B9:c9').Select
UserForm7.Hide
End Sub :p :p

Message édité par: dakama, à: 08/10/2005 23:37
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Dakama, bonsoir le forum,

J'ai repéré plusieurs anomalies dans tes codes je te les livre en espérant que cela t'apporte la solution :

1. Dim col, j As Integer

Dim col As Integer, J As Integer, car sinon col est déclarée comme Variant.

2. Dim var As Variant

Dim var As Byte, puisque sa valeur maxi est de 210.

3. À la fin de la balise line1, juste avant line2 je rajouterais une ligne renvoyant à la fin de la macro par une nouvelle balise :

Next j 'je pense qu il manque un 'end quelquechose' à ce niveau là
GoTo fin
line2:


cette balise fin serait ici :
fin:
Range('B9:c9').Select
UserForm7.Hide
End Sub

sinon le renvoi sur line1 execute forcément line2 après (je crois que ton vrai problème est là)

4. je supprimerais le dernier End If (avant Range('B9:c9').Select) car il me paraît être en trop.


Message édité par: Robert, à: 09/10/2005 00:24
 

Hervé

XLDnaute Barbatruc
Bonsoir Dakama, cher robert, le forum


Sinon, une autre syntaxe possible, sans avoir testé :

Sub EFFACE_SEMAINE()
Dim col As Byte, j As Byte
Dim plage As Range
Dim var As Byte
Dim LISTBOXVAL As String

var = 0

If UserForm7.ListBox1.ListIndex = -1 Then
    MsgBox 'Vous n
'avez pas sélectionné de camion', vbCritical, 'LM'
   
Exit Sub
End If

LISTBOXVAL = UserForm7.ListBox1.Value

For col = 2 To 12 Step 2
   
If LISTBOXVAL = Cells(11, col).Value Then Exit For
Next col


Select Case col
   
Case 2, 6, 10
       
Set plage = Range('D317:D339')
   
Case 4, 8, 12
       
Set plage = Range('F317:F339')
End Select
   

For j = 1 To 7
    plage.Copy Destination:=Cells(13 + var, col)
    var = var + 30
Next j

Range('B9:c9').Select
UserForm7.Hide
End Sub

On doit pouvoir aussi se passer des variables LISTBOXVAL et VAE.

salut
 

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11