IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

vitesse d'exécution sur plage > 100000 celles


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    C'est une plage en gros ? Si oui est-ce que cela ne va pas augmenté le ralentissement
    non, c'est une variable tableau, renseignes-toi à ce sujet, tout se fait grace à ces tableaux et c'est donc beaucoup plus rapide, d'ailleurs, prends de préférence, ma dernière version

    pour voir sur les tableaux http://silkyroad.developpez.com/vba/tableaux/
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  2. #22
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    le code s'arrête sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ReDim Tb1(1 To x, 1 To 2)

    'erreur d'execution 9'

    l'indice n'appartient pas à la sélection



    sinon au boulot ça met 14s pour balayer 500 000 lignes

  3. #23
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    mets un point d'arrêt sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TbG = .Range("B9", .Range("J" & Rows.Count).End(xlUp)) 'voir ci-dessus
    et controles la valeur de x juste au-dessus car mes tests sont positifs, maintenant
    500 000 lignes je n'ai pas pu tester, je ne penses pas qu'il y ait une limite à "CountIf"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #24
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    j'ai remis 100 lignes à ma base pour ne pas alourdir.

    Le traitement sur le point d'arrêt donne

    x = 0

    je sais pourquoi x = 0

    worksheet n'est pas "feuil1" porte un autre nom
    oubli mon dernier message

    du coup avec 1tab à 2D pour 500 000 lignes environ 2s (application.screenupdating et events) ne changent pas grand chose.

    et à part le tableau, y aurait-il d'autres solutions plus efficace?

  5. #25
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    une autre méthode, filtre avancé (gràce à Philippe Tulliez ), à tester sur plein, plein, plein de lignes

    j'ai fait l'effort de tester sur 250 000 lignes, ça n'a pas mis une seconde chez moi

    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
    Private Sub ComboBox1_Click() 'donc à toi de voir l'évènement
    Dim TbG, Dcel As Range
    With Sheets("Feuil1")
      .Range("P1") = .Range("H7") 'si la place est libre
      .Range("Q1") = .Range("B7") 'si la place est libre
      .Range("R1") = .Range("J7") 'si la place est libre
      .Range("R2") = ComboBox1.Value
      Set Dcel = .Range("B" & .Rows.Count).End(xlUp)
      .AutoFilterMode = False
      'on crée un filtre avancé qu'on dirige de col P à R
      .Range("B7", Dcel(1, 13)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "P1:R2"), CopyToRange:=.Range("P1:Q1"), Unique:=False
      TbG = .Range("P3").CurrentRegion.Offset(1, 0).Resize(.Range("P3").CurrentRegion.Rows.Count - 1, _
     .Range("P3").CurrentRegion.Columns.Count)
      ListBox1.List = TbG 'le résultat dans la ListBox
      Range("P3").CurrentRegion.Delete 'on supprime la plage filtrée
    End With
     
    End Sub
    le fichier
    Fichiers attachés Fichiers attachés
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #26
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    Merci bien philippe alors

    ça ressemble peut être au point évoqué par joe.

    histoire de autofiltre.

    je testerai demain au taff, là actuellement je suis emmerdé par un optionbutton , je me demande parfois si le compilateur peut être capricieux et lors de crash planté le code pour toujours...

    bon je dirai tout ça demain

    Un grand merci aux participants, sympa !

  7. #27
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    en attendant, une dernière version, à peine retouché (la retouche est en couleur et en gras) mais mieux expliquée
    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
    Private Sub ComboBox1_Click() 'donc à toi de voir l'évènement
    Dim TbG, Dcel As Range
    With Sheets("Feuil1")
      .Range("P1") = .Range("H7") 'si la place est libre, entête H7
      .Range("Q1") = .Range("B7") 'si la place est libre, entête B7
      .Range("R1") = .Range("J7") 'si la place est libre, entête J7 colonne qui triera les données
      .Range("R2") = ComboBox1.Value 'la valeur de la combo donne le filtre
      Set Dcel = .Range("B" & .Rows.Count).End(xlUp) 'ça tu le comprends
      .AutoFilterMode = False 'par sécurité, j'enlève les filtres, ça ne mange pas de pain
      'on crée un filtre avancé qu'on dirige de col P à R, si tu choisis autre ci-dessus que _
       P1, Q1, R1, il faudra adapter ci-dessous en conséquence
      .Range("B7", Dcel(1, 13)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "P1:R2"), CopyToRange:=.Range("P1:Q1"), Unique:=False
      'ci-dessous un seul tableau qui reprend la plage filtrée
      TbG = .Range("P3").CurrentRegion.Offset(1, 0).Resize(.Range("P3").CurrentRegion.Rows.Count - 1, _
     .Range("P3").CurrentRegion.Columns.Count - 1)
      ListBox1.List = TbG 'le résultat dans la ListBox
      Range("P3").CurrentRegion.Delete 'on supprime la plage filtrée
    End With
    
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #28
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    pas de bol erreur d'exécution "1004"
    Nom de champ introuvable ou incorrect dans la plage d'extraction
    c'est ce passage là qui est surligné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("B7", Dcel(1, 31)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("AH1:AG2"), CopyToRange:=.Range("AH1:I1"), Unique:=False
    no j'ai oublié le AI et non I1

    de tout manière il tourne en rond malgré la création en manuelle de la feuille PM3

    là je ne sais pas ce qu'il fait je regarde en mode pas à pas voir ou il coince

  9. #29
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    perso, je t'ai envoyé un fichier avec un code qui fonctionne, maintenant si ton original n'est pas structuré de la même façon, à toi d'adapter
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #30
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut


    16 secondes pour seulement 14 000 lignes, je ne tente même pas les 250 000



    pffffffff,

  11. #31
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    je me demande ce qu'est ton original car je confirme que le fichier (qui est de toi) que je t'ai envoyé met 1 seconde pour 250 000 lignes chez moi
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #32
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    Je me suis interrogé sur deux choses :
    - Est-ce que le compilateur peux déconner un peu lorsque mes macros se sont mal comportées
    - différence entre pc et mac




    De plus je ne comprends pas le dcel(1,13) ligne 1 colonne13 ?
    Mai cela en est trop pour moi,
    actuellement c'est comme si je montais l'everest... Pas équipé

  13. #33
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    - différence entre pc et mac
    pourquoi, tu es sur Mac ?, tu ne l'a pas signalé dans ton titre
    De plus je ne comprends pas le dcel(1,13) ligne 1 colonne13 ?
    on va chercher la dernière cellule rnseignée en B donc " dcel(1,13)" représente la colonne N, c'est comme si j'écrivais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Range("B7", Dcel.Offset(0, 12)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "P1:R2"), CopyToRange:=.Range("P1:Q1"), Unique:=False
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #34
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    Oui chez moi sous mac et au boulot sous pc.

    La je suis un peu crevé, mais au taff avec ta méthode de 1tableau à 2D j'obtenais 2s pour 100000 lignes de mémoire hélas je n'ai pas comparé sur mac


    Deplus
    Je crois que c'est range("B7",.offset(0,12)) qui me pertube
    Msdn microsft dit que range(cell1,cell2) grosso modo c'est un rectangle coin référence cell1 à autre coin cell2
    Donc une selection quelque part
    Et donc
    Est ce que ça veut dire qu'on selectionne une plage B7:N7 ?

    Et je ne pige pas pourquoi il faut commencer en B7 alors que mes données commencent en b9

  15. #35
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Dcel = .Range("B" & .Rows.Count).End(xlUp)
    variable "Range" qui représente la dernière cellule renseignée en B donc, admettons que ce soit B15(au hasard) en conséquence ".Range("B7", Dcel(1, 13))" ou ".Range("B7", Dcel.Offset(0, 12))" représente Range("B7:N15")
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  16. #36
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    Ah bon, je m'attendais à B7:N15.

    Bon ok je vois tout ça demain à tête reposée

  17. #37
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonsoir,
    je suis sur Mac aussi, et tu auras de meilleurs résultat avec les tableaux.
    Après selon les tâches à accomplir, cela prendra plus ou moins de temps;
    Donc avant tout c'est comprendre ce qui est chronophage dans ces tâches afin de choisir la meilleurs méthode pour que la macro soit plus rapide

    Un exemple : sur un de mes posts , assez long, mais dont le cheminement est formateur (Merci Marc ) , on découvre petit à petit ce qui est chronophage pour la macro (en l'occurence, dans mon post, c'est la suppression des lignes (si je me souviens bien)):
    Aide pour optimisation code doublons spécifique svp
    Bonne lecture
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  18. #38
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Ah bon, je m'attendais à B7:N15
    oui, une coquille, c'est bien B7:N15
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  19. #39
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    bon

    5s pour 20 000 lignes avec la méthode du advancedfilter

    contre 0,15s en tab1D

  20. #40
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    comme je l'ai dit, maxi 1 seconde chez moi pour le filtre avancé (250 000 lignes) et n'ai pas vérifié avec mon tableau donc je pense que ton original a d'autres contraintes, que te dire, j'ai fait le max en l'état de mes connaissances

    Re,
    j'ai remarqué une paire de lignes ui alourdissent le code, je ne sais pas si ça améliorera la rapidité mais ça fait plus propre, libre à toi, ensuite d'ajouter les "application.ScreenUpdating" ou autre pour gagner.....je ne sais trop quoi
    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
    Private Sub ComboBox1_Click() 'donc à toi de voir l'évènement
    Dim TbG, Dcel As Range
    With Sheets("Feuil1")
      .Range("P1") = .Range("H7") 'si la place est libre, entête H7
      .Range("Q1") = .Range("B7") 'si la place est libre, entête B7
      .Range("R1") = .Range("J7") 'si la place est libre, entête J7 colonne qui triera les données
      .Range("R2") = ComboBox1.Value 'la valeur de la combo donne le filtre
      Set Dcel = .Range("B" & .Rows.Count).End(xlUp) 'ça tu le comprends
      .AutoFilterMode = False 'par sécurité, j'enlève les filtres, ça ne mange pas de pain
      'on crée un filtre avancé qu'on dirige de col P à R, si tu choisis autre ci-dessus que _
       P1, Q1, R1, il faudra adapter ci-dessous en conséquence
      .Range("B7", Dcel(1, 13)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("P1:R2"), _
            CopyToRange:=.Range("P1:Q1"), Unique:=False
      'ci-dessous un seul tableau qui reprend la plage filtrée
      TbG = .Range("P3", .Range("Q" & .Rows.Count).End(xlUp))
      ListBox1.List = TbG 'le résultat dans la ListBox
      .Columns("P:R").Delete 'on supprime les colonnes devenues inutiles
    End With
     
    End Sub
    et lis ou relis quand même ce que j'écris dans ma signature
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [XL-2010] Optimisation exécution de code : suppression espace de fin sur plage de données
    Par Poussemousse dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/02/2015, 14h25
  2. Problème d'exécution sur un OnMouseWheel
    Par Omeggg dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/04/2006, 18h24
  3. Réponses: 4
    Dernier message: 02/04/2006, 18h42
  4. [VBA-E]Arrêt d'exécution sur une requette d'enregistrement
    Par thierry27 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/02/2006, 18h53
  5. Exécutable sur un autre PC
    Par Yphon dans le forum Langage
    Réponses: 6
    Dernier message: 13/01/2006, 21h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo