Bonsoir.
Pourtant, c'est le même code que celui de ton message du 22 à 22h29, non?
Tu as changé quelque chose?
PGZ
Bonsoir.
Pourtant, c'est le même code que celui de ton message du 22 à 22h29, non?
Tu as changé quelque chose?
PGZ
non, je l'ai copier coller tel quel juste derrière then
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 For i = 0 To boxreliquat.ListCount - 1 If boxreliquat.Selected(i) = True Then 'chercher dans TableauCommandes le nom boxreliquat.List(i). On considère qu'il peut se trouver sur plusieurs lignes vC() = Application.Evaluate("TableauCommandes").Value 'comme les tableaux commencent en ligne1 et pas de titre = pas de décalage entre indice et num ligne 'on commence à la fin pour ne pas introduire de décalage For L = UBound(vC, 1) To 1 Step -1 If vC(L, 1) = boxreliquat(i) Then boxreliquat.List (i) 'en ligne lCopie = Application.Evaluate("TableauFactures").Rows.Count + 1 'il faut copier la ligne L shC.Range(shC.Cells(L, 1), shC.Cells(L, 14)).Copy shF.Range(shF.Cells(lCopie, 1), shF.Cells(lCopie, 14)) 'et l'effacer shC.Rows(L).Delete End If Next L End If Next i
D'où l'erreur.
La ligne s'écrit ainsiOK? Ca dit quoi?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If vC(L, 1) = boxreliquat.List(i) Then 'en ligne
PGZ
erreur corigé
nouvel erreur
erreur d'execution 424
objet requis
focus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part lCopie = Application.Evaluate("TableauFactures").Rows.Count + 1
Bonjour.
Dans la feuille Prepafact, le tableau doit avoir au moins 1 ligne, ne serait-ce que la ligne de titres.
En plus, si la listbox est directement alimentée par les valeurs du tableau de la feuille commandeelectro, alors il faut mémoriser la liste avant de modifier la plage en question.
LE code devientTesté cette fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 Sub subBosk() Dim i As Integer Dim vC() As Variant Dim L As Long, lCopie As Long Dim shC As Excel.Worksheet, shF As Excel.Worksheet Dim sListe() As String, bSelection() As Boolean Set shC = Application.ThisWorkbook.Worksheets("commandeelectro") Set shF = Application.ThisWorkbook.Worksheets("prepafact") Application.ScreenUpdating = False 'mémorisation de la liste avant modication de la plage source de liste ReDim sListe(0 To boxreliquat.ListCount - 1) ReDim bSelection(0 To boxreliquat.ListCount - 1) For i = 0 To boxreliquat.ListCount - 1 sListe(i) = boxreliquat.List(i) bSelection(i) = boxreliquat.Selected(i) Next i For i = UBound(sListe) To 0 Step -1 If bSelection(i) = True Then 'chercher dans TableauCommandes (nom de plage)le nom boxreliquat.List(i). On considère qu'il peut se trouver sur plusieurs lignes vC() = Application.Evaluate("TableauCommandes").Value 'comme les tableaux commencent en ligne1 et pas de titre = pas de décalage entre indice et num ligne 'on commence à la fin pour ne pas introduire de décalage For L = UBound(vC, 1) To 1 Step -1 If vC(L, 1) = sListe(i) Then 'en ligne (TableauFactures = nom de plage) lCopie = Application.Evaluate("TableauFactures").Rows.Count + 1 'il faut copier la ligne L shC.Range(shC.Cells(L, 1), shC.Cells(L, 14)).Copy shF.Cells(lCopie, 1) 'et l'effacer shC.Rows(L).Delete End If Next L End If Next i 'libération mémoire Set shC = Nothing Set shF = Nothing Erase vC Erase sListe Erase bSelection Application.ScreenUpdating = True End Sub
Cordialement,
PGZ
PGZ
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager