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

  1. #41
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Ta réflexion est incomplète.
    Si, avec ce code, tu commences par le début, tu te feras inévitablement des croche-pieds avec la numérotation des lignes !
    Imagine que tu supprimes la ligne 2 -->> la 3ème deviendra ipso-facto la 2ème et ta boucle perdra donc son efficacité.
    On ne peut faire cela qu'à la condition :
    - de créer une plage (par Application.Union) de toutes les lignes à supprimer
    - de supprimer d'un seul coup, in fine, les rangs entiers de cette plage. Mais ce serait alors un code totalement distinct.

  2. #42
    Membre Expert
    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
    Par défaut
    Bonjour,

    Comme on ne pourras pas changer la logique de VBA sur Excel, dans ce cas là autant changer la méthode de suppression de ligne, ce que je proposais en vba et expliquais aussi par Marc puis moi à faire manuellement prenant moins de 2 minutes

    PS : mettre le code entre balise avec la touche # pour la lisibilité de celui-ci - cf lien dans ma signature
    Dans le code donner en lien peu de chose à changer (Bien sur pour comprendre le code, utiliser le pas à pas avec la fenêtre des variables locales pour voir à quoi correspond les variables et l'aide VBA))

    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
    Sub Demo()
    Dim DL As Long, Col As Integer, V
        DL = Cells(Rows.Count, 1).End(xlUp).Row 'Dernière ligne remplie
        Col = Cells(1).CurrentRegion.Columns.Count + 1 ' Numéro de la colonne après la dernière colonne utilisé
       Application.ScreenUpdating = False
        With Range(Cells(1, Col), Cells(DL, Col))
            .FormulaLocal = "=SI($A1 = ""X"";1;0)" 'on applique la formule sur la colonne supplémentaire
            .Value = .Value
        End With
        With Cells(1).CurrentRegion
            .Sort Columns(Col), xlAscending, Header:=xlNo 'on trie dans l'ordre croissant les données via la colonne supplémentaire ou l'on a mis la formule
            V = Application.Match(1, .Columns(Col), 0) 'on repère ou se trouve le 1er "1" dans la colonne supp
            If Not IsError(V) Then
                Rows(V & ":" & .Rows.Count).EntireRow.Clear 'on efface l'ensemble des lignes dont la valeur est 1 dans la colonne supp. précédemment triée
            End If
            .Columns(Col).Clear 'on efface la colonne supplémentaire
        End With
        Application.ScreenUpdating = True
       ' PS : et tout cela peut se faire manuellement comme expliqué dans les posts ci-dessus
    End Sub
    Edit : Corr. d'orthographe
    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 :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  3. #43
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Vba ne fait pas les chose à l'envers ! Ne dit on pas que la nature a horreurs du vide!

    Quand un électron s'en va un autre prend sa place!

    Telle est la raison de commencer par la fin pour notre ca si on veut parcourir tous les éléments!
    Si je supprime la ligne 1 la ligne 2 prend sa place; après si je supprime la ligne 2 je supprime la ligne qui avant avait la position 3!

  4. #44
    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 unparia Voir le message
    ...
    On ne peut faire cela qu'à la condition :
    - de créer une plage (par Application.Union) de toutes les lignes à supprimer
    - de supprimer d'un seul coup, in fine, les rangs entiers de cette plage. Mais ce serait alors un code totalement distinct.

    Ce qui lui a ete donn2 dans un exemple de code au post #38 en se passant de boucle. Il lui suffit de mettre la bonne valeur de colonne à la ligne n°2 de ce code.

    Maintenant s'il veut vraiment pour une raison obscure, savoir comment faire une boucle de suppression de lignes dans le sens qu'il veut avec for, il doit juste s'armer en conséquence avec une variable compteur qui s'incrémente dans la condition à l'intérieur de la boucle For i (IF condition -> supprimer ligne c - ELSE c +1). Ce qui n'a pas d'intérêt si la boucle For vise juste à supprimer des lignes, autrement pour passer outre les limitations de For se tourner vers Do ... Loop [ Until | Wend | <,>,<=,>= ]

  5. #45
    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 : 224
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

  6. #46
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 683
    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 683
    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

  7. #47
    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?

  8. #48
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 683
    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 683
    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/)

  9. #49
    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
    pour tester j'ai fait cela après avoir mis en un titre sur la ligne 1 de la colonne 40 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each shap In ActiveSheet.Shapes
        If Cells(shap.TopLeftCell.Row, 40).Value = "X" Then shap.Delete
    Next
     
    Range("AN1:AN1365").AutoFilter Field:=1, Criteria1:="X"
    Rows("2:1365").Delete
    Range("AN1:AN1365").AutoFilter Field:=1
    1365 sera une variable mais j'ai mis en valeur absolue pour le test

    J'ai le message en boucle "les cellules fusionnées ne le seront plus" sur la ligne

  10. #50
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si ta feuille Excel ne dispose pas de formules tu peux utiliser un filtre élaboré.

    Il collera tous ce que tu veux garder dans un autre onglet. Il ne te restera qu'à remplacer l'existant par le nouveau.

    C'est quasi instantané.

  11. #51
    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
    Il y a beaucoup de formule dans cette feuille (mise en page pour être éditée)

  12. #52
    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
    J'ai fait un test sur un autre cas sans image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Range("AO:AO2685").AutoFilter Field:=1, Criteria1:="X"
    Rows("2:2685").Delete
    Range("AO1:AO2685").AutoFilter Field:=1
    Cela marche très bien, IMPRESSIONNANT 4 secondes au lieu d'une minute sur les 2685 lignes

    par contre avec les images
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    For Each shap In ActiveSheet.Shapes
        If Cells(shap.TopLeftCell.Row, 40).Value = "X" Then shap.Delete
    Next
     
    Range("AN1:AN1365").AutoFilter Field:=1, Criteria1:="X"
    Rows("2:1365").Delete
    Range("AN1:AN1365").AutoFilter Field:=1
    Cela ne marche pas, toujours boucle sur le message disant que les cellules fusionnées ne le seront plus… En allant au bout il y a un décalage dans le résultat final dans la mise en page

    Je reprendrai mes tests après mes vacances (je pars demain, je ne vais pas prendre de risque la veille…)

    Merci

  13. #53
    Membre Expert
    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
    Par défaut
    Bonjour,

    Si tu aimes les tests et que tes shapes sont liées à tes cellules.
    Regarde ce post : https://www.developpez.net/forums/d1...a/#post9636196

    À adapter bien sûr.
    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 :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  14. #54
    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
    re
    bonjour
    le probleme de lenteur avec une boucle c'est justement que tu declanche forcement le calculate meme a l'envers

    si j'ai bien compris
    tu veux suprimer toutes les shapes si elles ont la cellules (shap.topleftcell.row,40)avec un "X" et tu veux par la meme occasion supprimer la ligne

    seulement a chaque suppression les emplacement shape changent forcement deja on a un hic ici sans parler du calculate qui va se repeter autant de fois que de lignes supprimées


    je te propose de boucler mais de rien supprimer
    ca y est le toulonnais il a craqué !!!
    nan!!nan!!

    on va tout simplement dans une boucle sur les shapes créer un groupe de shapes que l'on appelera "toto" ET!!!!! par la meme occasion créer un range avec union
    voila en sortie de boucle tu a ta plage de cellules a supprimer ainsi que toute les shapes a supprimer aussi
    une derniere chose a faire c'est de replacer les shapes restantes a leur place car elles ont forcement été decalées
    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
    Sub test()
        Dim i&, tabloshap(), rng As Range
        For Each shap In ActiveSheet.Shapes
            If ActiveSheet.Cells(shap.TopLeftCell.Row, 40).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)
            End If
        Next
        ActiveSheet.Shapes.Range(tabloshap).Group.Name = "toto"
        ActiveSheet.Shapes("toto").Delete
        rng.EntireRow.Delete
        'IMPORTANT!!!!!
        ' on remet a leur place les shapes restantes qui ont forcement été decalées
        For Each shap In ActiveSheet.Shapes
            shap.Top = shap.Top + shap.TopLeftCell.Height
        Next
    End Sub
    voila tu suprimes tes shapes et cellules en une seule fois
    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

  15. #55
    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...
    ---------------

  16. #56
    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

  17. #57
    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

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

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, 12h58
  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, 16h20
  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, 23h42
  4. Activation des macros sous Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2005, 12h44
  5. macro sous excel
    Par julien13200 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2005, 16h49

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