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

11 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  3. Papouni122 Messages postés 19 Statut Membre
     
    un grand merci je vais essayer vos proposition et je vous reviens :)
    0
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  8. 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
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  10. Papouni122 Messages postés 19 Statut Membre
     
    oui mem si
    0
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  12. Papouni122 Messages postés 19 Statut Membre
     
    merci je vais l essayer
    0