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 :

Programmation macro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut Programmation macro
    Bonjour à toutes et à tous

    J'espère que des esprits lumineux vont pouvoir m'aider.
    J'ai un souci sur un fichier Excel utilisé pour suivre des avancements de dossiers administratifs. Je vais donc tâcher d'être la plus claire possible dans mes explications et surtout je mets en PJ le fichier en question.
    Je précise que je ne suis pas une experte en macro du tout.

    Un 1er onglet sert de Base de données : chaque dossier/affaire y est saisi avec ses différents éléments d'informations.
    Une 1ère macro permet, via un double-clic de souris, de cocher les cases des colonnes A et B.
    L'idée est, par ce système de coche, d'identifier les affaires qui sont à archiver et celles qui sont à inscrire au prochain Ordre du Jour pour le Comité de Direction.

    Un 2nd feuillet est destiné à recueillir les dossiers archivés et un 3ème sert d'Ordre du Jour pour le Comité de Direction.

    L'objectif est d'avoir :
    - 1 bouton sur le feuillet SUIVI AFFAIRES qui coupera les lignes de la Base de données qui sont cochées "à archiver" et de les insérer les unes après les autres dans l'onglet "Archives".
    - 1 autre bouton tojours sur le feuillet SUIVI AFFAIRES qui effacera les lignes de l'onglet ODJ pour ensuite y recopier les colonnes C à G de chaque ligne cochée "ODJ" vers l'onglet ODJ. (actualisation des affaires à présenter)


    La 1ère macro fonctionne (les X pour cocher les cases). Par contre j'ai testé la 2nde pour copier les lignes sélectionnées vers l'ODJ et là ça coince. Je crois bien que j'ai même tout "défoncé" le code que j'avais repiqué sur un autre fichier.

    Je suis donc perdue de chez perdue. Y aurait-il une âme bienveillante pour me guider/m'aider ?
    si je n'ai pas été assez claire dans mes explications, n'hésitez pas à me questionner.
    merci par avance pour votre aide.

    POPPY74
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Comme pas mal de personne ici, je n'ouvre pas les PJ, est ce que tu peux mettre le code que tu as utilisé ? ainsi qu'une image qui récapitule ce que tu veux faire ?

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    euh... j'arive pas à insérer un "imprime écran", est-ce qu'il y a une méthode particulière ??
    sinon voici déjà le 1er code : (celui-ci fonctionne)
    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
    Option Explicit
        Public Flag As Boolean '(dans Module si autres macros)
     
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Flag Then Exit Sub
            If Not Application.Intersect(Target, Range("a4:b25" & [a65536].End(xlUp).Row)) Is Nothing Then
                Flag = True
                If Target = "X" Or Target = "x" Then
                    Target = ""
                Else
                    Target = "X"
                End If
                Flag = False
                Cancel = True
            End If
        End Sub
    le second est sur un module et non la feuille elle-même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub extract()
    Dim DerLig As Long
    With Sheets("ODJ")
        DerLig = [A65000].End(xlUp).Row
        Range("B5:G7500" & DerLig).Name = "base"
        [M5] = [B5]: [M6] = "Co Dir"
        Range("B5:G7500").Copy .[B5]
        Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("M5:M7501"), CopyToRange:=.Range("B5:I7500"), Unique:=False
        Range("M5:M7501").Clear
    End With
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Accroche cette macro à un bouton :

    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
    Sub extract()
    Dim DerLig As Long, C As Range
    With Sheets("ODJ")
        .Range("B5", .Cells(.Rows.Count, 2).End(xlUp)).EntireRow.ClearContents
        If Application.CountIf([B:B], "X") > 0 Then
            DerLig = [B65000].End(xlUp).Row
            For Each C In Range([B3], Cells(Rows.Count, 2).End(xlUp))
                If C.Value = "X" Then
                    DerLig = DerLig + 1
                    .Cells(DerLig, 2).Resize(, 5).Value = C.Offset(, 1).Resize(, 5).Value
                End If
            Next C
        End If
    End With
    End Sub

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    @ Daniel :
    alors j'ai supprimé mes anciens boutons par mesure de précaution, remis 2 nouveaux, accroché cette macro à l'un des 2 .... et rien ne se passe
    est-ce que j'ai loupé une étape ?

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Il y avait une erreur, mais ça n'empêchait pas la recopie. Je mets le classeur après exécution de la macro en PJ :

    POPPY74 Suivi d'affaires- V3.xls

  7. #7
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    tout dépend de la façon dont tu gère les "coche"

    Dans le code de Daniel, il récupère les X dans la colonne B. Si la valeurs est différente, par exemple TRUE ou quelque chose du genre, le code ne vas pas détecter de X, et il ne va rien se passer.

    Il faut que tu change cette ligne là par une condition respectant ta façon de procéder.
    Sinon dans cette ligne là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLig = [B65000].End(xlUp).Row
    La limitation de ligne de 65000 (et quelques) correspond à Excel 2003, si tu as plus de donnée, tu peux augmenter.

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour Nico Chg,

    En fait, il n'y a pas de case à cocher, il y a un "X" ou rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLig = [B65000].End(xlUp).Row
    Là, c'était une erreur, j'ai rectifié :


  9. #9
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    ça marche, je n'ai pas ouvert le fichier, donc ce n'était que supposition

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Oui, c'est plus dur quand on a pas le fichier sous les yeux.

  11. #11
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Par défaut
    Bonjour,

    Erf que de monde qui intervient pendant qu'on test dans son coin


    Un essai (malgré tout) en pièce jointe.
    Fichiers attachés Fichiers attachés

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Erf que de monde qui intervient pendant qu'on test dans son coin
    C'est le propre d'un forum, non ?

    10 qui bavardent pour un qui travaille, c'est le bon ratio...

  13. #13
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    merci à tous pour vos messages de réponse. C'est vraiment cool.

    J'ai donc testé le fichier de Ziriak et de celui de Daniel. On est proche du résultat recherché.
    C'est incroyable ce que Excel peut faire quand même !

    @ Ziriak : Pour le fichier donc, l'inscription à l'ODJ fonctionne bien. Seulement il faudrait en fait que cela recopie les lignes et ne supprime pas.
    C'est uniquement le bouton Archivage qui doit les copier dans l'onglet Archives et ensuite supprimer les lignes du tableau.
    Par contre, chez moi, le bouton d'archivage ne fonctionne pas du tout.


    @ Daniel : c'est pile ce que je cherche pour l'ODJ. En plus, il se réactualise bien à chaque fois c'est top ! merci bcp.
    C'est trop cool.

    Et sinon est-ce ce que j'abuse si je vous demande de l'aide pour l'archivage ? Est-ce qu'il n'y a pas un risque que les macros se "téléscopent" s'il y en a trop sur un seul document ?

  14. #14
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Et sinon est-ce ce que j'abuse si je vous demande de l'aide pour l'archivage ? Est-ce qu'il n'y a pas un risque que les macros se "téléscopent" s'il y en a trop sur un seul document ?
    Les macros se télescoperont si tu archives avant de recopier dans ODJ. Si tu fais les deux opérations conjointement, regroupe les deux macros en une seule. Sinon, tu peux effacer le "X" de la colonne B une fois que la recopie ODJ est faite et n'archiver que les lignes n'ayant pas ce "X".

  15. #15
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    De ce côté là, pas de problème car cela sera l'un ou l'autre. Les 2 opérations ne se feront jamais en simultanée car l'archivage aura lieu uniquement si le dossier est clos. Il n'aura donc plus lieu d'être inscrit à l'ODJ.

    Là je ne maîtrise que peu le sujet donc je pose peut-être une question bête mais vu qu'il y a 2 boutons, est-ce qu'il ne serait pas plus "sûr" de prévoir 2 macros ?

  16. #16
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Tout dépend de ce que tu veux faire, mais si une grosse partie du code est similaire, il est plus "propre" de ne faire qu'une seule macro, ou plutôt une seule fonction.

    Et puis en programmation tout est "sûr", vu que ton ordinateur feras exactement ce que tu lui demande, à la lettre près.

  17. #17
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Par défaut
    Je reprendrais mon fichier cet après-midi (pas le temps avant) pour vérifier mais l'archivage fonctionnait chez moi.

    Après oui, on peut réunir les deux dans une seule macro avec un seul bouton, à la limite pour éviter le télescopage, on peut même aider un peu via ta procédure double-click pour mettre tes "X", par exemple, si on détecte que tu click sur la colonne archivage, cela enlève le "X" de la colonne ODJ et inversement, comme ça, tu ne peux pas avoir de "X" dans les deux en même temps, et quand la boucle passe, c'est forcément, l'un ou l'autre des traitements.

    A re-tester, pour l'instant, j'ai laissé sur 2 boutons séparés, par contre l'archivage fonctionnait bien chez moi (par contre j'ai effectivement repris la procédure sur le double-click qui ne démarrait que ligne 4 et pas ligne 3).

    Et j'ai modifié la procédure ODJ pour ne plus effacer la ligne comme demandé, et une fois la ligne mise dans l'ODJ, je supprime le "X" de la colonne B dans l'onglet SUIVI AFFAIRES.

    Pour l'archivage, je vérifie qu'il n'y a bien qu'un "X" dans la colonne archivage et que la colonne ODJ n'est pas remplie.


    Suivi d'affaires- V5.xls

  18. #18
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    Bonjour

    Tout d'abord désolée de ne pas avoir répondu plus tôt : les premiers frimas d'automne ont déjà eu raison de moi.
    J'ai regardé la proposition faite par Ziriak. Cela me semble être parfait.
    Je vais le tester sur une petite période pour voir si à l'utilisation je vois des peites choses qui pourraient coincer mais cela me semble d'ores-et-déjà être au top.
    Merci beaucoup Ziriak et aussi les autres contributeurs.
    Je vous tiens au courant d'ici peu pour vous confirmer si c'est tout bon.

    bonne journée à vous tous.

  19. #19
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Par défaut
    Bonjour,

    pas de soucis pour le retour tardif, c'est mieux que pas de retour du tout, et si cela fonctionne tant mieux.


    Ne pas oublier de passer le sujet en résolu à l'occasion.

  20. #20
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    Bonjour à tous les contributeurs.

    je reviens pour vous donner des nouvelles après plusieurs jours d'utilisation. Le fichier fonctionne parfaitement.
    Vous êtes des magiciens !
    un grand merci donc pour votre aide et vos contributions.
    bonne journée à vous
    Poppy74

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] généralité programmation macro/VBA
    Par membreComplexe12 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/05/2011, 20h55
  2. documentation pour programmation macro
    Par tubaas dans le forum Programmation (La)TeX avancée
    Réponses: 18
    Dernier message: 01/09/2010, 07h25
  3. compréhension programme macro
    Par petit-ours dans le forum Macro
    Réponses: 2
    Dernier message: 28/07/2010, 11h07
  4. Réponses: 4
    Dernier message: 01/04/2010, 15h20
  5. VBA Erreur programmation Macro
    Par jorisphi dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/11/2009, 14h29

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