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 :

Performance macros sous excel 2016 [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    J'utilise très souvent l'export d'une table avec filtre avancé et suppression de l'ancienne feuille.
    Le temps est relativement bref

    un sujet où j'illustrais la mécanique avec création (et suppression) de la zone de critère : https://www.developpez.net/forums/d1...s/#post8499166

  2. #2
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Je rejoins l'analyse de Pierre Fauconnier, ma fille sera enchantée d'avoir ce petit logiciel qui va lui permettre de passer une commande en un rien de temps (une petite demi-heure au lieu d'une 1/2 journée avec du word bidouillé à la main à chaque fois en ce moment)
    Alors 2 mn de plus... Ne soyons pas plus royaliste que le roi...
    Merci à tous

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Mon grain de sel…

    Avant de vouloir faire du tout en un avec un code non maîtrisé par le demandeur (et éviter ainsi une laborieuse adaptation à son cas), il serait peut-être déjà judicieux d'inhiber le calcul et le rafraîchissement d'écran avant la suppression.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      Dim CalculationMode As XlCalculation
     
      CalculationMode = Application.Calculation
      Application.ScreenUpdating = False
     
      ' Ici, la boucle de suppression
     
      Application.Calculation = CalculationMode
      application.ScreenUpdating=true
    Idéalement, on encadre cela dans une gestion d'erreur
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    oui Pierre aussi
    je me suis seulement attaqué a demultiplier les supressions a les ramener donc a une seule suppression (shapes/cells)
    rien empleche effectivement les screenupdating=false les calculate a false et tout le toin toin

    une version un peu plus precise +gestion de la non occurence dans un if

    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
    Sub test()
        Dim i&, a&, tabloshap(), tabshapesauvée(), rng As Range, calculateMode
        Application.ScreenUpdating = False
        calculateMode = Application.Calculation 
        Application.Calculation = xlCalculationManual
        For Each shap In ActiveSheet.Shapes
            If ActiveSheet.Cells(shap.TopLeftCell.Row, 7).Value = "X" Then
                i = i + 1: ReDim Preserve tabloshap(1 To i): tabloshap(i) = shap.Name
                If rng Is Nothing Then Set rng = shap.TopLeftCell Else Set rng = Union(rng, shap.TopLeftCell)
            Else
                a = a + 1: ReDim Preserve tabshapesauvée(1 To a): tabshapesauvée(a) = shap.Name & ":" & shap.Top
            End If
        Next
        If UBound(tabloshap) > 0 Then
            ActiveSheet.Shapes.Range(tabloshap).Group.Name = "toto"
            ActiveSheet.Shapes("toto").Delete
            rng.EntireRow.Delete
            '************************************************************************************************
            'IMPORTANT!!!!! si LA  correspondence shape/ligne n'est pas a prendre en compte dans le contexte
            ' on remet a leur place les shapes restantes qui ont forcement été decalées
            For i = 1 To UBound(tabshapesauvée)
                ActiveSheet.Shapes(Split(tabshapesauvée(i), ":")(0)).Top = Split(tabshapesauvée(i), ":")(1)
            Next
            '*************************************************************************************************
        End If
        Application.Calculation = calculateMode
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    merci à tous,
    je regarderai cela tranquillement à mon retour de vacances, bon mois d'aout à tous

  6. #6
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Juste, il est vrai que les perfomances des manips sur l'interface ou via code dépendent toujours de la méthode e,ployée.

    Selectionner les donnée de la colonne cible SHIFT + DOWN ou clic sur l'en tête de la lettre de colonne, clic sur outil filtre, clic sur la fléchette pour dérouler, filtre textuel est égal à x et hop, selection du resultat filtré et CTRL + - .
    Selectionner une cellule contenant le critère, clic droit, filtrer, combinaison CTRL plus - et hop.

    la réalisation ne prendra pas le temps de lecture de la description de la méthode, je crois.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ca va devenir une discussion d'experts à la fin de laquelle personne n'aura convaincu personne.

    Si les données source sont dans une table de données, il faudra la renommer. Si la feuille a un codename utilisé dans du code, il faudra lui réattribuer...

    Et si des formules pointent vers la feuille que vous supprimez, vous faites quoi? Parce qu'un RECHERCHEV, par exemple, qui pointerait vers une table créée sur cette feuille se prendrait un beau petit #REF!, non?

    Je veux bien, à la rigueur, envisager un export, une vidange de la table et un réimport (avec des tables de données, pas des plages simples), mais une suppression de la feuille, j'attends de voir les dégâts collatéraux...

    Ca ne me paraît donc pas très réaliste de supprimer la feuille après l'export et de simplement renommer la nouvelle feuille comme l'ancienne... Mais bon, je veux bien vous croire quand vous dites que vous faites cela tous les jours...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Tu as raison, tout dépend du contexte, du projet, des dépendances, des liaisons.

    Au moins on a encore une fois le mérite de présenter des pistes diverses et variées

  9. #9
    Invité
    Invité(e)
    Par défaut
    sur une page de A1:V1048576

    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
    Sub test()t = Time
    With ThisWorkbook
        .Sheets(2).Range("A1") = "cham1": .Sheets(2).Range("A2") = "<>x"
    FiltreActif .Sheets(1).UsedRange, .Sheets(2).UsedRange, .Sheets(3).Range("A1"), False
    n = .Sheets(1).Name: Application.DisplayAlerts = False: .Sheets(1).Delete: .Sheets(2).Name = n
    End With
    Debug.Print (Time - t) / 100
    End Sub
    Private Function FiltreActif(RangeSource As Range, CriterRange As Range, CopyRange As Range, Optional Unique As Boolean = True) As Boolean
    FiltreActif = False
    On Error Resume Next
     RangeSource.AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=CriterRange _
            , CopyToRange:=CopyRange, Unique:=Unique
            DoEvents
            If Err = 0 Then FiltreActif = True
            'MsgBox Err.Description
            On Error GoTo 0
    End Function
    Nom : Sans titre.png
Affichages : 802
Taille : 19,7 Ko

  10. #10
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Et si un jour je dois modifier cela ?

    je vais mettre plus de 2mn...
    Je laisse cette solution aux experts
    merci quand même

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    sur une page de A1:V1048576

    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
    Sub test()t = Time
    With ThisWorkbook
        .Sheets(2).Range("A1") = "cham1": .Sheets(2).Range("A2") = "<>x"
    FiltreActif .Sheets(1).UsedRange, .Sheets(2).UsedRange, .Sheets(3).Range("A1"), False
    n = .Sheets(1).Name: Application.DisplayAlerts = False: .Sheets(1).Delete: .Sheets(2).Name = n
    End With
    Debug.Print (Time - t) / 100
    End Sub
    Private Function FiltreActif(RangeSource As Range, CriterRange As Range, CopyRange As Range, Optional Unique As Boolean = True) As Boolean
    FiltreActif = False
    On Error Resume Next
     RangeSource.AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=CriterRange _
            , CopyToRange:=CopyRange, Unique:=Unique
            DoEvents
            If Err = 0 Then FiltreActif = True
            'MsgBox Err.Description
            On Error GoTo 0
    End Function
    Nom : Sans titre.png
Affichages : 802
Taille : 19,7 Ko
    comme dab pas de justification du
    -1, perso j'en mets jamais!

  12. #12
    Membre confirmé Avatar de GESCOM2000
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 107
    Par défaut
    Bonjour

    Moi je mettrais tout dans a tab() puis traitement en boucle et après un apllication.transpose....

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    comme dab pas de justification du
    -1, perso j'en mets jamais!
    Bah. Je m'en suis pris un sur chaque message de la discussion, alors que j'ai chaque fois justifié mes dires. Ne t'arrête pas à ça

    Cela étant, il faut reconnaître que la solution que tu proposes pose des problèmes, et j'en ai soulevé un tout à l'heure, en mentionnant les conséquences fâcheuses de la suppression d'une feuille. J'y ajouterai qu'elle ne fonctionnera que si une deuxième feuille de calcul est présente, car tu utilises sheets(2). Il faut donc qu'il y ait une deuxième feuille ET que ce soit une feuille de calcul. Si pas de deuxième feuille ou que c'est une feuille de graphique, le code plantera... Tu as le même problème avec Sheets(3).

    Comme autre conséquence, si sheets(2) et sheets(3) existent, voilà que tu massacres ce qui se trouve dessus pour mettre ta plage de critère et ta place de copie.

    Et tu proposes tout cela à un débutant sans le mettre le garde. A ta place, je ne serais pas étonné de recevoir un -1... Tu en mérites 10 sur ce coup-là (et ce n'est pas une attaque personnelle, crois-le bien, c'est une simple constatation technique des dangers d'une solution que je persiste à considérer comme non professionnelle)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Bah. Je m'en suis pris un sur chaque message de la discussion, alors que j'ai chaque fois justifié mes dires. Ne t'arrête pas à ça
    Vos remarques m'ont mis la puce à l'oreille. Il y a effectivement un participant silencieux qui a voté sur presque tous les posts.

    Ce qui à mon humble avis n'a pas de sens.

  15. #15
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Je ré-ouvre cette discussion après avoir lu le document "Formation Excel- VBA débutant" (EXCELLENT ! écrit par l'un de vous je crois)
    A l'époque je n'avais rien compris à ce document, maintenant il m'éclaire parfaitement

    J'ai été attiré par l'article en bas de la page 179
    Nom : doc VBA.jpg
Affichages : 220
Taille : 260,5 Ko

    Je tente de voir comment améliorer une macro qui supprime les lignes ayant en "X" en colonne 40 pour finaliser une mise en page, voici le code qui tourne parfaitement mais assez long (j'ai plusieurs macros qui font ce type de mise en page)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For i = derligPdf To 1 Step -1
    If Cells(i, 40).Value = "X" Then
        For Each shap In ActiveSheet.Shapes
        If shap.TopLeftCell.Row = i Then shap.Delete
        Next
    Cells(i, 40).EntireRow.Delete
    End If
    Next i
    Dans un premier temps si quelqu'un peut me dire si le code du cours (incompréhensible pour moi pour le moment) peut être adapté pour remplacer ma macro.

    le faire sera une autre histoire

  16. #16
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    Je tente de voir comment améliorer une macro qui supprime les lignes ayant en "X" en colonne 40 pour finaliser une mise en page, voici le code qui tourne parfaitement mais assez long (j'ai plusieurs macros qui font ce type de mise en page)

    Dans un premier temps si quelqu'un peut me dire si le code du cours (incompréhensible pour moi pour le moment) peut être adapté pour remplacer ma macro.
    Tu cherches a supprimer des choses (lignes + shape) alors que la macro de ton cours sert a faire un copier coller (c'est écrit dans le texte), donc non je pense que tu ne regardes pas au bon endroit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For i = derligPdf To 1 Step -1
    If Cells(i, 40).Value = "X" Then
        For Each shap In ActiveSheet.Shapes
        If shap.TopLeftCell.Row = i Then shap.Delete
        Next
    Cells(i, 40).EntireRow.Delete
    End If
    Next i
    Ce qui est long, c'est que pour chaque ligne X tu boucles sur toutes les shapes
    Voici ce que je ferais, une seule boucle sur les shapes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each shap In ActiveSheet.Shapes
        If cells(shap.TopLeftCell.Row,40).value = "X" Then shap.Delete
        Next
    Puis un filtre sur la colonne 40 avec la valeur X pour supprimer toutes les lignes d'un coup

  17. #17
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    merci je vais voir cela,

    qu'entends tu par un filtre sur la colonne 40?

  18. #18
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    qu'entends tu par un filtre sur la colonne 40?
    Pour le filtre, voir l'aide: https://support.office.com/fr-fr/art...6-38c37dcc180e
    Pour la colonne 40, c'est dans ton code If Cells(i, 40).Value = "X" ThenUne fois les données filtrées tu peux faire la suppression sans boucle, ce qui est bien plus rapide (un des membres du forum a mis un tuto la dessus dans la sous-section contribuez: https://www.developpez.net/forums/d1...on-lignes-vba/)

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    NVCfrm,

    Je suis d'accord que la manip sur filtre automatique sera plus rapide, mais elle ne s'intègre pas dans un processus VBA global. J'imagine mal, lors d'un traitement global, le code s'arrêter et envoyer un popup "Merci de supprimer à la main puis de lancer la suite du code"...

    Donc parfois, même si la solution paraît très simple et rapide via l'interface Excel, la demande globale impose qu'on la fasse en VBA. Et dans ce cas, il y a des solutions moins catastrophiques qu'un filtre avancé avec export et suppression de la feuille qui ne me semble pas du tout réaliste. Par contre, singer en VBA les manips dont tu parles au niveau Excel me semble être une piste intéressante si le besoin existe d'optimiser
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    NVCfrm,

    Je suis d'accord que la manip sur filtre automatique sera plus rapide, mais elle ne s'intègre pas dans un processus VBA global. J'imagine mal, lors d'un traitement global, le code s'arrêter et envoyer un popup "Merci de supprimer à la main puis de lancer la suite du code"...

    Donc parfois, même si la solution paraît très simple et rapide via l'interface Excel, la demande globale impose qu'on la fasse en VBA. Et dans ce cas, il y a des solutions moins catastrophiques qu'un filtre avancé avec export et suppression de la feuille qui ne me semble pas du tout réaliste. Par contre, singer en VBA les manips dont tu parles au niveau Excel me semble être une piste intéressante si le besoin existe d'optimiser
    Bah à chaque champ de bataille ses propres moyens de combat. Sur le terrain VBA j'imagine qu'une ligne de code, au plus deux suffiront.

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

Discussions similaires

  1. [XL-2016] Problème macro qui fonctionne que en pas à pas sous Excel 2016
    Par Gorzyne dans le forum Excel
    Réponses: 3
    Dernier message: 01/02/2018, 11h58
  2. [XL-2016] Macro Excel 2010 ne fonctionne plus sous Excel 2016
    Par leloup84 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/07/2016, 15h20
  3. [VBA-E][débutant]aide pour macro sous excel
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/06/2006, 22h42
  4. Activation des macros sous Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2005, 11h44
  5. macro sous excel
    Par julien13200 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2005, 15h49

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