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 :

macro vba avec liste de choix


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    demande de renseignement
    Inscrit en
    Décembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : demande de renseignement
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2017
    Messages : 11
    Par défaut macro vba avec liste de choix
    Bonsoir,
    j'ai fait un fichier de suivi pour mon travail qui comprend entre autre :

    - une feuille 1 qui contiendra le détail du travail de la journée
    - une feuille 2 qui contient les taches type à effectuer

    la feuille 2 est composée d'un filtre qui me sert à sélectionner le type de tache à faire
    je sélectionne manuellement les lignes puis les insert dans la feuille 1 avant la ligne qui contient le texte "ajouter avant"

    j'ai déjà un début de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro6()
    '
    ' Macro6 Macro
    '
    '
        Sheets("Feuil2").Select
        ActiveSheet.Range("$A$1:$A$8").AutoFilter Field:=1, Criteria1:="liasse ECN"
        Range("A2:BZ" & Range("A65536").End(xlUp).Row).Copy
        Sheets("Feuil1").Select
        Cells.Find(What:="ajouter avant").Activate
        Rows(ActiveCell.Row).Select
        Selection.Insert Shift:=xlDown
        'Range("R1:BZ60000").ClearContents
    End Sub
    je joints le fichier test

    ce que j'aimerais, c'est lancer soit une input box pour rentrer le ou les critères de choix moi-même ; soit déclencher la liste déroulante pour sélection moi-même le filtre à appliquer

    car pour le moment, je suis obligé de créer autant de macro que j'ai de tache

    merci d'avance pour votre aide (pour info je suis débutant en vba, j'ai créé ce morceaux de codes en cumulant ifférente action par enregistrement de macro)
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Exemple
    le fichier, sélectionnez la liaisse dans la liste déroulante, puis cliquez sur le bouton pour importer la zone filtrée.
    Pièce jointe 528671

    Le code utilisé
    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
    Sub Importation_Liste_Filtrée()
        'Initialisation des variables
        Dim f1 As Worksheet, f2 As Worksheet
        Dim DerLig As Long, NewLig As Long, NbCol As Long
        Dim Fam As String
     
        Application.ScreenUpdating = False 'Accélère le processus
        Set f1 = Sheets("Feuil1")
        Set f2 = Sheets("Feuil2")
        Fam = f1.Cells(f1.[A5], "S") 'récupération de la sélection faite en feuille 1
     
        'd'après la sélection de la liste, on récupère les données filtrées de la feuille 2
        f2.Select 'sur la feuille 2
        ActiveSheet.AutoFilterMode = False 'on supprime les filtres existants
        DerLig = Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la feuille 2
        [A1].AutoFilter 'on met le filtre sur ligne 1
        NbCol = ActiveSheet.[IV2].End(xlToLeft).Column 'nombre de colonnes de la feuille 2
        ActiveSheet.Range(Cells(1, "A"), Cells(DerLig, NbCol)).AutoFilter Field:=1, Criteria1:=Fam 'on applique le filtre
        ActiveSheet.Range("_FilterDataBase").Resize(, NbCol).SpecialCells(xlCellTypeVisible).Copy 'on copie la zone filtrée
     
        f1.Select 'sur la feuille 1
        NewLig = Range("A" & Rows.Count).End(xlUp).Row + 1 'trouve la première ligne vide
        Cells(NewLig, "A").Select 'on se positionne sur la première cellule vide
        ActiveSheet.Paste 'on colle la zone filtrée de la feuille 2
        Rows(NewLig).Delete 'on efface la première ligne contenant le titre
    End Sub
    Cdlt

  3. #3
    Membre habitué
    Homme Profil pro
    demande de renseignement
    Inscrit en
    Décembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : demande de renseignement
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2017
    Messages : 11
    Par défaut macro vba avec liste de choix
    Bonjour,

    merci pour ta réponse rapide et très bien commenté

    j'ai pu adapter mon code avec les informations qu'il me manquait

    maintenant je dois adapter dans le vrai fichier et je te tiens au courant si ça fonctionne bien comme je le souhaite

    j'aurais surement de nouvelles demandes car j'utilise aussi de la mise en forme conditionnel et j'aurai peut-être besoin de pouvoir sélectionner plusieurs critère dans le filtre

    mais ton code me fait déjà beaucoup avancer merci beaucoup

  4. #4
    Membre habitué
    Homme Profil pro
    demande de renseignement
    Inscrit en
    Décembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : demande de renseignement
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2017
    Messages : 11
    Par défaut macro vba avec liste de choix
    Rebonjour,

    dans ton code la liste de choix est sur la même page
    dans mon fichier final la liste de choix est sur une autre feuille qui est différente des deux autres donc feuill3

    il faudrait donc adapter la formule Fam = f1.Cells(f1.[A5], "S") en indiquant que la colonne S est feuill 3

    j'ai ajouté dans le code la définition de la variable f3 pour feuill3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Fam As String
    Dim f1 As Worksheet, f2 As Worksheet, f3 As Worksheet
    Dim DerLig As Long, NewLig As Long, NbCol As Long
    Set f1 = Sheets("FEUILL1")
    Set f2 = Sheets("FEUILL2")
    Set f3 = Sheets("FEUILL3")
    Fam = f1.Cells(f1.[A5], "S")
    comment je peux modifier la dernière ligne pour lui dire que la colonne S et dans f3?

    j'ai essayé bêtement "f3.S" ma ça aurait été trop simple ; j'ai essayé de chercher de mon côté mais je n'ai pas trouvé

    merci d'avance encore pour ton aide

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Pour bien comprendre, dans mon exemple, la plage d'entrée de la liste déroulante est liée à la cellule A5 de la feuille 1, que cela signifie-t-l?
    Tout d'abord, la liste est constituée dans la plage S1 à S9 de la feuille1, la cellule liée de la liste déroulante est en A5 de la même feuille. Cette cellule A5, donne le N° de ligne de la liste en colonne "S" correspondant à la sélection de la liste déroulante.
    Donc en sachant cela, où se trouve la liste des "Fam", quelle plage de cellules de la feuille 3?
    Si vous avez conservé le même emplacement en ne changeant que la feuille, la ligne devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fam = f3.Cells(f1.[A5], "S")
    Mais il faut auparavant modifier la référence de zone de noms "Liste" en procédant comme ceci
    Pièce jointe 528700

    Cdlt

  6. #6
    Membre habitué
    Homme Profil pro
    demande de renseignement
    Inscrit en
    Décembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : demande de renseignement
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2017
    Messages : 11
    Par défaut macro vba avec liste de choix
    ok j'ai bien compris la fonction maintenant
    pour que ça fonctionne il faut que la liste commence à la 1ère ligne de la colonne sinon quand on exécute la macro, si on choisi dans la liste il traite avec un décalage, exemple :

    si dans ma liste j'ai test, test1, test2 par exemple et que ma liste commence en s2 dans mon cas, si je choisi test1, la macro va filtrer avec test 2 (décalage d'une ligne)

    est-il possible dans la formule, de supprimer ce décalage? (au pire j'ai modifié mon fichier pour commencer en ligne 1)



    autre question après je penses que ça ira pour la fonction souhaité : quand j’exécute la macro, il ne conserve pas la mise en forme de la feuill2 vers la feuill1 ; est-il possible de conserver cette mise en forme? (comme quand on fait un copier d'une cellule avec un clique droit dans une autre où on copie la mise en forme?

    après ces 2 points je pourrais mettre en résolu (sauf si pour le dernier point je dois créer un autre topic?)

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

Discussions similaires

  1. [XL-2003] Problème avec liste de choix sous VBA‏
    Par robinicol dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/03/2011, 10h07
  2. Réponses: 0
    Dernier message: 30/06/2010, 16h27
  3. Faire un submit avec liste de choix
    Par mcdelay dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/09/2006, 16h31
  4. [vba-e] Liste de choix dans ComboBox
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/07/2006, 15h53
  5. [VBA-E]Liste de choix
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/03/2006, 15h04

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