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 :

Trier une feuille à partir d'une Macro d'une autre feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Juillet 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 16
    Par défaut Trier une feuille à partir d'une Macro d'une autre feuille
    Bonjour à tous,

    J'ai un soucis sur Excel que j'essaye de résoudre depuis ce matin.
    J'ai deux feuilles nommées "Feuill1" et "Feuill2" sur lesquelles j'ai exactement les mêmes données.

    En A2 : Nom du fruit B2: Couleur du fruit

    A3: Banane B3: Jaune

    A4: Fraise B4: Rouge

    A5: Framboise B5: Rouge

    A6: Pomme B6: Vert

    Il y a alors un filtrage sur les cellules en A2 et B2 afin de trier et filtrer les noms et couleurs de fruit.
    J'ai créer une macro avec un code permettant de réinitialiser les tris et filtres dans leur position de départ (ordre alphabétique). Le problème de ce code est qu'il s'effectue que sur sa feuille.

    Voici le 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
    15
    16
    17
    18
    19
    20
    21
    22
    Sub Bouton1_Clic()
     
     
      On Error Resume Next
        Worksheets("Feuill1").ShowAllData
        Range("A3").Select
     
        Set plage = ActiveSheet.Range("A3:P" & Range("A" & Rows.Count).End(xlUp).Row)
    plage.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, Orientation:=xlTopToBottom
     
     
      On Error Resume Next
        Worksheets("Feuill2").ShowAllData
        Range("A3").Select
     
          Set plage = ActiveSheet.Range("A3:P" & Range("A" & Rows.Count).End(xlUp).Row)
    plage.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, Orientation:=xlTopToBottom
     
     
    End Sub

    Question :
    Comment fait-on pour réinitialiser les tris et filtres à partir d'une macro d'une autre feuille ?

    Merci de votre réponse,
    Cordialement

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Voici le coupable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set plage = ActiveSheet.Range("A3" & Range("A" & Rows.Count).End(xlUp).Row)
     plage.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
     OrderCustom:=1, Orientation:=xlTopToBottom
    Il faut préciser sur quelle feuille tu veuc faire l'action avec Sheets(xxx).
    De façon générale, évite de travailler avec Select/Activate/ActuveShet etc... tu vas vite t'emmêler les pattes.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Juillet 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 16
    Par défaut
    Merci de ta réactivité Riaolle,

    Dans ce cas, le code ressemblerai à ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    On Error Resume Next
     Worksheets("Feuill1").ShowAllData
     Range("A3").Select
     
     On Error Resume Next
     Worksheets("Feuill2").ShowAllData
     Range("A3").Select
     
     
     Set plage = Sheets("Feuill1","Feuill2").Range("A3" & Range("A" & Rows.Count).End(xlUp).Row)
     plage.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
     OrderCustom:=1, Orientation:=xlTopToBottom
    Cordialement,

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Euh non, tu ne peux pas effectuer d'un coup les 2 filtres. Il faut d'abord que tu filtres sur la première feuille, puis sur l'autre.
    2 petites remarques :
    1. N'utilise pas On Error Resume Next surtout si tu n'es pas sûr de ton code !!! Cette commande se traduis par : "si tu tombes sur une erreur, fais la prochaine action". Or ceci t'empêche de détecter les erreurs : de savoir déjà SI il y a une erreur, ensuite de savoir où se situe l'erreur et de savoir de laquelle il s'agit. Bref, tu te rends bien compte qu'il y a un problème, mais tu tâtonnes sans infos. De façon générale : il y a quelques cas où le On Error est intéressant, mais ce sont des cas où l'on maîtrise la gestion d'erreur. Si tu écris cela juste pour éviter d'avoir une erreur ... tu ne résous pas le problème.
    2. Tes 2 Range("A3").Select ne servent à rien. Est-ce que tu le vois ?


    Attention à bien indiquer à chaque fois sur quelle feuille tu travailles (notamment quand tu écris Range("A3") comme Key).Si tu ne l'indiques pas, Excel considère que tu travailles sur la feuille active.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Worksheets("Feuill1").ShowAllData
     Worksheets("Feuill2").ShowAllData
     Set plage = Sheets("Feuill1").Range("A3" & Range("A" & Rows.Count).End(xlUp).Row)
     plage.Sort Key1:=Sheets("Feuill1").Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
     OrderCustom:=1, Orientation:=xlTopToBottom
    Set plage = Sheets("Feuill2").Range("A3" & Range("A" & Rows.Count).End(xlUp).Row)
     plage.Sort Key1:=Sheets("Feuill2").Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
     OrderCustom:=1, Orientation:=xlTopToBottom

  5. #5
    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
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Worksheets("Feuill1").ShowAllData
    Provoque une erreur si les filtres sont vides, pour contourner le problème sans utiliser "on error":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Worksheets("Feuill1").AutoFilterMode And Worksheets("Feuill1").FilterMode Then Worksheets("Feuill1").ShowAllData

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur en Amélioration Continue
    Inscrit en
    Juillet 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur en Amélioration Continue
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2017
    Messages : 16
    Par défaut
    Parfait !

    Merci beaucoup, ça marche enfin !

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/03/2015, 12h04
  2. [XL-2010] Incrémenter un liste sur une autre feuille à partir d'un Userform
    Par prog-amateur dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/12/2014, 10h50
  3. Réponses: 5
    Dernier message: 25/09/2014, 08h16
  4. [XL-2010] Calculer moyenne mobile d'une série à partir d'un macro
    Par jinane13 dans le forum Excel
    Réponses: 5
    Dernier message: 18/03/2013, 10h48
  5. [Toutes versions] Syntaxe pour atteindre une feuille à partir d'un bouton d'une userform
    Par abdel792 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/01/2011, 22h34

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