Accelerer ma procedure

Papouni122 Messages postés 19 Statut Membre -  
Papouni122 Messages postés 19 Statut Membre -
Bonjour,

je viens d ecrire un scripte en vba excel pour une liste box

mais j ai des probleme pour le conditionner de la facon optimal c est a dire ajouter les jobs selectionner si il ne sont pas existante dans la liste deja choisis et en plus il prend beaucoup de temps car il check toute la liste avant d ecrire les jobs selectionner dans lisbox
le code que j avais ecris si il il ya quelqu un qui peut m aider avec ca
merci d avance

code ecris en vba (excel) pour userform avec une lisbox avec option multiselect

Private Sub CommandButton2_Click()
Dim nbre_ligne As Integer
nbre_ligne = ListBox2.ListCount

Dim MyTable() As Variant
Dim i As Integer
Dim j As Integer
j = 1

ReDim MyTable(1 To nbre_ligne, 1 To 7)

For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) Then
MyTable(j, 1) = Format(ListBox2.List(i, 0), "YYYY-MM-DD")
MyTable(j, 2) = ListBox2.List(i, 1)
MyTable(j, 3) = ListBox2.List(i, 2)
MyTable(j, 4) = ListBox2.List(i, 3)
MyTable(j, 5) = ListBox2.List(i, 4)
MyTable(j, 6) = ListBox2.List(i, 5)
MyTable(j, 7) = ListBox2.List(i, 6)
j = j + 1
End If
Next i
For j = 1 To UBound(MyTable)
'Worksheets("Liste_selectionnée").Select

Worksheets("Liste_selectionnée").Cells(j + 5, 1) = MyTable(j, 1)
Worksheets("Liste_selectionnée").Cells(j + 5, 2) = MyTable(j, 2)
Worksheets("Liste_selectionnée").Cells(j + 5, 3) = MyTable(j, 3)
Worksheets("Liste_selectionnée").Cells(j + 5, 4) = MyTable(j, 4)
Worksheets("Liste_selectionnée").Cells(j + 5, 5) = MyTable(j, 5)
Worksheets("Liste_selectionnée").Cells(j + 5, 6) = MyTable(j, 6)
Worksheets("Liste_selectionnée").Cells(j + 5, 7) = MyTable(j, 7)

Next

End Sub

A voir également:

11 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour

a la place de
For j = 1 To UBound(MyTable) 
 ....
Next

essaies
Application.ScreenUpdating = False
Worksheets("Liste_selectionnée").Range("A6").Resize(j, 7) = MyTable


"Application.ScreenUpdating = False" est une instruction précieuse qui fige le défilement de l'cran à utiliser dans la plupart des procédures modifiant des feuille
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour a vous tous,

Une autre facon de voir.

Propriete multiselectmulti ou pas.

Private Sub ListBox2_Change()
  Dim i As Integer, j As Integer, Plage As Range, c
  
  'Index liste
  i = ListBox2.ListIndex
  'Feuille a adapter
  With Worksheets("feuil2")
    'pour la dernière cellule de la colonne A
    j = .Range("A" & Rows.Count).End(xlUp).Row + 1
    'defintion plage a tester pour eviter doublon
    With Worksheets("feuil2").Range("A6:G" & j)
      'Choix du test:
      Set c = .Find(ListBox2.List(i, 1), LookIn:=xlValues)
      If Not c Is Nothing Then
        MsgBox "deja existante"
        Exit Sub
      End If
    End With
    'ecriture ligne
    .Cells(j, 1) = Format(ListBox2.List(i, 0), "YYYY-MM-DD")
    .Cells(j, 2) = ListBox2.List(i, 1)
    .Cells(j, 3) = ListBox2.List(i, 2)
    .Cells(j, 4) = ListBox2.List(i, 3)
    .Cells(j, 5) = ListBox2.List(i, 4)
    .Cells(j, 6) = ListBox2.List(i, 5)
    .Cells(j, 7) = ListBox2.List(i, 6)
  End With
End Sub


Bonne suite
0
Papouni122 Messages postés 19 Statut Membre
 
un grand merci je vais essayer vos proposition et je vous reviens :)
0
Papouni122 Messages postés 19 Statut Membre
 
J ai essayer les deux
les deux marche mais celle a f894009927 son execution plus rapides que la mienne avec la modification de notre ami Michel_M
Encore merci pour vous deux de m avoir aide

La maintenant j ai encore besoin de votre aide c est que la colonne deux de ma liste selectionnee je veux l utilise comme un filter de ma base de donnee (range data_Live) pour l extraire et faire un nouveau range des donnee brute relies a cette liste

si vous avez une idee ou vous avez deja passee par une experience pareil j aimerai bien savoir comment faire merci et mille merci de votre aide d avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Papouni122 Messages postés 19 Statut Membre
 
Rebonjour
J ai travaille comme je peux pour regler mon probleme je suis arrive au code suivant
mais je le trouve trop long et j aimerai bien votre point de vue ou une autre facon de faire
le code est le suivant:
Sub Pivot_table()
'
' Supprime_ancien_cree_un_nouveau Macro

Cells.Select
Selection.ClearContents

Range("B4").Select
ActiveWorkbook.Worksheets("Feuil3").PivotTables("Tableau croisé dynamique2"). _
PivotCache.CreatePivotTable TableDestination:="Feuil1!R4C2", TableName:= _
"Tableau croisé dynamique6", DefaultVersion:=xlPivotTableVersion14
Sheets("Feuil1").Select
Cells(4, 2).Select

' affectation_Pt Macro
'
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Due date")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Customer Name")
.Orientation = xlRowField
.Position = 2
End With
Range("B14").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Description")
.Orientation = xlRowField
.Position = 3
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("OP#")
.Orientation = xlRowField
.Position = 4
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("W/C")
.Orientation = xlRowField
.Position = 5
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Dev W/C" _
)
.Orientation = xlRowField
.Position = 6
End With
ActiveSheet.PivotTables("Tableau croisé dynamique6").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique6").PivotFields("Estimated"), _
"Somme de Estimated", xlSum
ActiveSheet.PivotTables("Tableau croisé dynamique6").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique6").PivotFields("Actuel " & Chr(10) & "Used"), _
"Somme de Actuel " & Chr(10) & "Used", xlSum
ActiveSheet.PivotTables("Tableau croisé dynamique6").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique6").PivotFields("Unused"), _
"Somme de Unused", xlSum
With ActiveSheet.PivotTables("Tableau croisé dynamique6")
.RowGrand = False
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Order#"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Line#"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("WO"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Customer Name").Subtotals = Array(False, False, False, False, False, False, False, _
False, False, False, False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Description") _
.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Date"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Status"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("W/C"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("OP#"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Estimated"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Used"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Unused"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Dev W/C"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Dev used"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Due date"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Actuel " & Chr(10) & "WC"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Actuel " & Chr(10) & "Used" _
).Subtotals = Array(False, False, False, False, False, False, False, False, False, False _
, False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Desc/WC"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Actual WC"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Actual used") _
.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Criteria1"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Criteria2"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Occurrence"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Time Used"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Time Unused") _
.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Estimated2"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Month"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Week"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Year"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("jour"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Capacity"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Cumul/" & Chr(10) & "WC-Sem-Used").Subtotals = Array(False, False, False, False, False, False, _
False, False, False, False, False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Cumul/" & Chr(10) & "WC-Sem-Estimated").Subtotals = Array(False, False, False, False, False, _
False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Month2"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Year2"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Poste de travail").Subtotals = Array(False, False, False, False, False, False, False _
, False, False, False, False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Ligne_OP"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields("Nbre_hr_Cmd") _
.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Columns("B:B").ColumnWidth = 16.43
Columns("E:E").ColumnWidth = 6.57
Columns("F:F").ColumnWidth = 7.43
ActiveSheet.PivotTables("Tableau croisé dynamique6").RepeatAllLabels _
xlRepeatLabels
End Sub
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

La maintenant j ai encore besoin de votre aide c est que la colonne deux de ma liste selectionnee je veux l utilise comme un filter de ma base de donnee (range data_Live) pour l extraire et faire un nouveau range des donnee brute relies a cette liste

Pas facile a tester, il faudrait votre fichier ou une maquette pour vous aider a avancer.

click sur ce lien pour mettre a dispo.

https://www.cjoint.com/

A+
0
Papouni122 Messages postés 19 Statut Membre
 
Bonjour j ai adapter le code a mon fichier mais il reste encore un probleme
c est que c est vrai qui avise msgbox que c est deja existant si in fait le choix sur une commande deja selectionné mais il apprend quand meme dan la liste

voila le code
''
Private Sub ListBox2_Change()
Dim i As Integer, j As Integer, Plage As Range, c

'Index liste
i = ListBox2.ListIndex
'Feuille a adapter
With Worksheets("Liste_selectionnée")
'pour la dernière cellule de la colonne A
j = .Range("A" & Rows.Count).End(xlUp).Row + 1
'defintion plage a tester pour eviter doublon
With Worksheets("Liste_selectionnée").Range("A4:G" & j)
'Choix du test:
Set c = .Find(ListBox2.List(i, 1), LookIn:=xlValues)
If Not c Is Nothing Then
MsgBox "Cette commande est deja existante"
Exit Sub
End If
End With
'ecriture ligne
.Cells(j, 1) = Format(ListBox2.List(i, 0), "YYYY-MM-DD")
.Cells(j, 2) = ListBox2.List(i, 1)
.Cells(j, 3) = ListBox2.List(i, 2)
.Cells(j, 4) = ListBox2.List(i, 3)
.Cells(j, 5) = ListBox2.List(i, 4)
.Cells(j, 6) = ListBox2.List(i, 5)
.Cells(j, 7) = ListBox2.List(i, 6)
End With
End Sub
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

Meme si le choix fait parti de la liste, il ne faut pas le copier plus d'une fois. Vous pouvez mettre la ligne msgbox en commentaire.

Bonne suite
0
Papouni122 Messages postés 19 Statut Membre
 
oui mem si
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

Alors, prenez le code ci-dessous:

Private Sub ListBox2_Change() 
  Dim i As Integer, j As Integer, Plage As Range, c 
   
  'Index liste 
  i = ListBox2.ListIndex 
  'Feuille a adapter 
  With Worksheets("Liste_selectionnée") 
    'pour la dernière cellule de la colonne A 
    j = .Range("A" & Rows.Count).End(xlUp).Row + 1 
    'ecriture ligne 
    .Cells(j, 1) = Format(ListBox2.List(i, 0), "YYYY-MM-DD") 
    .Cells(j, 2) = ListBox2.List(i, 1) 
    .Cells(j, 3) = ListBox2.List(i, 2) 
    .Cells(j, 4) = ListBox2.List(i, 3) 
    .Cells(j, 5) = ListBox2.List(i, 4) 
    .Cells(j, 6) = ListBox2.List(i, 5) 
    .Cells(j, 7) = ListBox2.List(i, 6) 
  End With 
End Sub 


Bonne suite
0
Papouni122 Messages postés 19 Statut Membre
 
merci je vais l essayer
0