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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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