pb de vitesse pr la suite du code

  • Initiateur de la discussion Initiateur de la discussion davidan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

davidan

XLDnaute Nouveau
merci ça a super bien marché pour l'initialisatio mais je me retrouve incapable de l'appliquer au reste, mais je crois pas que se soit tellement mon histoire de date qui ralentisse mon code.
je pense que je dois scanner encore plusieur fois ma feuille.
si tu peut m'aider avec un bout de code car j'ai du mal à appliquer les indication que tu m'as donné.
merci d'avance

Private Sub bouton_OK_Click()
On Error Resume Next
Application.ScreenUpdating = False
If ComboBox1.Value = 'tous' Then
Range('G12').AutoFilter field:=7
Else
Range('G12').AutoFilter field:=7, Criteria1:=ComboBox1.Value
End If
If ComboBox2.Value = 'tous' Then
Range('K12').AutoFilter field:=11
Else
Range('K12').AutoFilter field:=11, Criteria1:=ComboBox2.Value
End If
If ComboBox3.Value = 'tous' Then
Range('C12').AutoFilter field:=3
Else
Range('C12').AutoFilter field:=3, Criteria1:=ComboBox3.Value
End If
If ComboBox4.Value = 'tous' Then
Range('D12').AutoFilter field:=4
Else
Range('D12').AutoFilter field:=4, Criteria1:=ComboBox4.Value
End If
If ComboBox5.Value = 'tous' Then
Selection.AutoFilter field:=12
Else
Range('feuil1!L12').AutoFilter field:=12
Range('feuil1!L12:L65536').NumberFormat = '0'
Range('feuil2!A1').Value = ComboBox5.Value
Range('feuil2!A1') = CDate(ComboBox5.Value)
Range('feuil2!A1').NumberFormat = 'dd/mm/yy'
Range('feuil2!A1').Font.ColorIndex = 35
Range('L12').AutoFilter field:=12, Criteria1:=Range('feuil2!A1')
Range('L12') = ''
End If

If ComboBox5.Value = 'non émise' Then
Range('feuil1!L12').AutoFilter field:=12, Criteria1:=Empty
End If

If ComboBox6.Value = 'tous' Then
Range('M12').AutoFilter field:=13
Else
Range('feuil1!M12').AutoFilter field:=13
Range('feuil1!M12:M65536').NumberFormat = '0'
Range('feuil2!B1').Value = ComboBox6.Value
Range('feuil2!B1') = CDate(ComboBox6.Value)
Range('feuil2!B1').NumberFormat = 'dd/mm/yy'
Range('feuil2!B1').Font.ColorIndex = 35
Range('M12').AutoFilter field:=13, Criteria1:=Range('feuil2!B1')
Range('M12') = ''
End If

If ComboBox6.Value = 'non levée' Then
Range('feuil1!M12').AutoFilter field:=13, Criteria1:=Empty
End If

If ComboBox7.Value = 'tous' Then
Range('N12').AutoFilter field:=14
Else
Range('feuil1!N12').AutoFilter field:=14
Range('feuil1!N12:N65536').NumberFormat = '0'
Range('feuil2!C1').Value = ComboBox7.Value
Range('feuil2!C1') = CDate(ComboBox7.Value)
Range('feuil2!C1').NumberFormat = 'dd/mm/yy'
Range('feuil2!C1').Font.ColorIndex = 35
Range('M12').AutoFilter field:=14, Criteria1:=Range('feuil2!C1')
Range('M12') = ''
End If

If ComboBox7.Value = 'non contrôlée' Then
Range('feuil1!L14').AutoFilter field:=14, Criteria1:=Empty
End If

Range('feuil1!L12:L65536').NumberFormat = 'dd/mm/yy'
Range('feuil1!M12:M65536').NumberFormat = 'dd/mm/yy'
Range('feuil1!N12:N65536').NumberFormat = 'dd/mm/yy'

Range('A12').Select
ActiveCell.FormulaR1C1 = 'tous'
Selection.AutoFill Destination:=Range('A12:Q12'), Type:=xlFillDefault
Unload UserForm1
End Sub


voila le fameux code qui prend temps de temps.
merci de ton aide
 
Bonjour,

heu excuse moi mais tu t'adresses à qui là. le 'merci...', 'ton aide ...'

Si tu as ouvert un autre fil précédemment pourquoi ne pas rester sur celui là...

C'est pas Lien supprimé par hasard ?

Si oui, merci de lire la Charte.

Bon AP

Message édité par: Dan, à: 08/08/2005 13:24
 
Hello,

Je suis entierement d'accord avec DAn, mais je pense que tu as du faire une fausse manip.

Bref

J'ai regardé ton code c'est le bronxe !!

Je ne comprends pas bien certaines choses, mais bon.

Petite remarque, quand tu fait appel plusieurs fois à la même cellule pas la peine de repeter tu fais un with end with et puis voila.

Code:
Option Explicit

Private Sub bouton_OK_Click()
On Error Resume Next

Application.ScreenUpdating = False
If ComboBox1.Value = 'tous' Then
    Range('G12').AutoFilter field:=7
Else
    Range('G12').AutoFilter field:=7, Criteria1:=ComboBox1.Value
End If
If ComboBox2.Value = 'tous' Then
    Range('K12').AutoFilter field:=11
Else
    Range('K12').AutoFilter field:=11, Criteria1:=ComboBox2.Value
End If
If ComboBox3.Value = 'tous' Then
    Range('C12').AutoFilter field:=3
Else
    Range('C12').AutoFilter field:=3, Criteria1:=ComboBox3.Value
End If
If ComboBox4.Value = 'tous' Then
    Range('D12').AutoFilter field:=4
Else
    Range('D12').AutoFilter field:=4, Criteria1:=ComboBox4.Value
End If
If ComboBox5.Value = 'tous' Then
    Selection.AutoFilter field:=12
Else
    Range('feuil1!L12').AutoFilter field:=12
Range('feuil1!L12:L65536').NumberFormat = '0'

With Feuil2.Range('A1')
    .Value = CDate(ComboBox6.Value)
    .NumberFormat = 'dd/mm/yy'
    .Font.ColorIndex = 35
End With


Range('L12').AutoFilter field:=12, Criteria1:=Range('feuil2!A1')
Range('L12') = ''
End If

If ComboBox5.Value = 'non émise' Then
Range('feuil1!L12').AutoFilter field:=12, Criteria1:=Empty
End If

If ComboBox6.Value = 'tous' Then
Range('M12').AutoFilter field:=13
Else
Range('feuil1!M12').AutoFilter field:=13
Range('feuil1!M12:M65536').NumberFormat = '0'
Range('feuil2!B1').Value = ComboBox6.Value

With Feuil2.Range('B1')
    .Value = CDate(ComboBox6.Value)
    .NumberFormat = 'dd/mm/yy'
    .Font.ColorIndex = 35
End With

Range('M12').AutoFilter field:=13, Criteria1:=Range('feuil2!B1')
Range('M12') = ''
End If

If ComboBox6.Value = 'non levée' Then
Range('feuil1!M12').AutoFilter field:=13, Criteria1:=Empty
End If

If ComboBox7.Value = 'tous' Then
Range('N12').AutoFilter field:=14
Else
Range('feuil1!N12').AutoFilter field:=14
Range('feuil1!N12:N65536').NumberFormat = '0'

With Feuil2.Range('C1')
    .Value = CDate(ComboBox7.Value)
    .NumberFormat = 'dd/mm/yy'
    .Font.ColorIndex = 35
End With

Range('M12').AutoFilter field:=14, Criteria1:=Range('feuil2!C1')
Range('M12') = ''
End If

If ComboBox7.Value = 'non contrôlée' Then
Range('feuil1!L14').AutoFilter field:=14, Criteria1:=Empty
End If

Range('feuil1!L12:N65536').NumberFormat = 'dd/mm/yy'

Range('A12').Select
ActiveCell.FormulaR1C1 = 'tous'
Selection.AutoFill Destination:=Range('A12:Q12'), Type:=xlFillDefault
Unload UserForm1
End Sub

Pour le reste faudrait mettre en PJ un exemple il doit y avoir moyen d'accelerer encore.

++

Creepy
 
merci et désolé pour mon erreur mais n'as tu pas une méthode plus performante,
en fait ce code a pour but de remplacer les filtre automatiques
il trie du texte pour les 3 premier champ et des dates pour les 3 derniers.
merci d'avance
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
731
Réponses
2
Affichages
433
Réponses
4
Affichages
465
Réponses
4
Affichages
727
Réponses
33
Affichages
3 K
Retour