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 :

Filtre automatique sur ouverture classeur Excel [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Administration
    Inscrit en
    Février 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Administration
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2022
    Messages : 11
    Par défaut Filtre automatique sur ouverture classeur Excel
    Bonjour,

    j'aimerais exécuter en VBA Excel ceci lorsque le fichier s'ouvre.

    sur ouverture du classeur
    sur feuille ("sheet2")
    si cellule E2 contient "x" supprimer la ligne
    si cellule E3 contient "x" supprimer la ligne
    si cellule E4 contient "x" supprimer la ligne
    ...jusqu'à E250
    tri ordre A-Z les données colonne B
    sur fermeture du classeur, sauvegarder

    quelqu'un peut m'aider ?

    Merci.

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    dans ton classeur , çà se passe ici :

    Nom : Capture d’écran 2022-02-17 113634.png
Affichages : 229
Taille : 81,3 Ko

    voila un début de code

    ouverture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Workbook_Open()
        'boucle
        For n = 2 To 250
            If Sheets(2).Range("E" & n).Value = "x" Then
                'supprimer la ligne
                '(en fait tu effaces les cellules et quand tu trie les lignes ne seront plus là)
     
            End If
        Next n
    End Sub

    fermeture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        'ici tu sauvegarde
    End Sub
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    voila un code que j'utilise souvent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'enregistrement de sauvegarde à la fermeture du fichier
    '
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        If Right(ActiveWorkbook.Name, 5) = "MJPxl" Then Exit Sub
        FolderPath = Application.ActiveWorkbook.Path & "\XL Save\"
        Set fs = CreateObject("Scripting.FileSystemObject")
        If Not fs.FolderExists(FolderPath) Then fs.CreateFolder (FolderPath)
        FichierName = ActiveWorkbook.Name & "_SavWork_" & Replace(CStr(Left(Now, 10)), "/", "") & "_" & Replace(CStr(Right(Now, 8)), ":", "") & ".MJPxl"
        ActiveWorkbook.SaveCopyAs (FolderPath & FichierName)
    End Sub
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    ouverture
    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
    28
    29
     
    Private Sub Workbook_Open()
        'boucle
        For n = 2 To 250
            If ActiveWorkbook.Worksheets("Sheet2").Range("E" & n).Value = "x" Then
                'supprimer la ligne
                '(en fait tu effaces les cellules et quand tu trie les lignes ne seront plus là)
                '-------------
                'effacer la ligne
                ActiveWorkbook.Worksheets("Sheet2").Range("A" & n & ":F" & n).Select
                Selection.ClearContents
            End If
        Next n
        'supprime les ligne vide (trier AZ) sur B
        Columns("A:F").Select
        Selection.AutoFilter
        ActiveWorkbook.Worksheets("Sheet2").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet2").AutoFilter.Sort.SortFields.Add2 Key:= _
            Range("B1:B10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet2").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Selection.AutoFilter
    End Sub
    @+JP
    Fichiers attachés Fichiers attachés
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre habitué
    Femme Profil pro
    Administration
    Inscrit en
    Février 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Administration
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2022
    Messages : 11
    Par défaut
    bonjour JP,

    sur ce code j'obtiens une erreur 1004 ??
    je suis débutante en VBA, pourrais-tu m'expliquer svp.

    le nom de ma feuille SHEET2 c'est TRIAGE finalement.

    Merci.

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    en fait tu changes le nom de l'onglet en faisant attention à la casse ... maj/min

    If ActiveWorkbook.Worksheets("Sheet2").Range("E" & n).Value = "x" Then

    If ActiveWorkbook.Worksheets("TRIAGE").Range("E" & n).Value = "x" Then

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  7. #7
    Membre habitué
    Femme Profil pro
    Administration
    Inscrit en
    Février 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Administration
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2022
    Messages : 11
    Par défaut
    Maintenant j’ai une erreur d’exécution «*9*» sur la ligne sous la boucle FOR n = 2 to 250.(if activeworkbook…)

  8. #8
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    tu copies ton code et tu clique sur # pour poster ton code entre le 2 balises code

    comme çà je pourrais t'aider
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  9. #9
    Membre habitué
    Femme Profil pro
    Administration
    Inscrit en
    Février 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Administration
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2022
    Messages : 11
    Par défaut
    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
    28
    Private Sub Workbook_Open()
        'boucle
        For n = 2 To 250
            If ActiveWorkbook.Worksheets("*TRIAGE*").Range("E" & n).Value = "x" Then
                'supprimer la ligne
                '(en fait tu effaces les cellules et quand tu trie les lignes ne seront plus là)
                '-------------
                'effacer la ligne
                ActiveWorkbook.Worksheets("*TRIAGE*").Range("A" & n & ":F" & n).Select
                Selection.ClearContents
            End If
        Next n
        'supprime les ligne vide (trier AZ) sur B
        Columns("A:F").Select
        Selection.AutoFilter
        ActiveWorkbook.Worksheets("*TRIAGE*").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("*TRIAGE*").AutoFilter.Sort.SortFields.Add2 Key:= _
            Range("B1:B10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("triage").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Selection.AutoFilter
    End Sub

  10. #10
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    dans la ligne 20 "triage" et non "*TRIAGE*"

    évite les caractères "bizare" style "*"

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  11. #11
    Membre habitué
    Femme Profil pro
    Administration
    Inscrit en
    Février 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Administration
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2022
    Messages : 11
    Par défaut
    maintenant c'est erreur 1004 avec Selection.AutoFilter

    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
    28
    Private Sub Workbook_Open()
        'boucle
        For n = 2 To 250
            If ActiveWorkbook.Worksheets("triage").Range("E" & n).Value = "x" Then
                'supprimer la ligne
                '(en fait tu effaces les cellules et quand tu trie les lignes ne seront plus là)
                '-------------
                'effacer la ligne
                ActiveWorkbook.Worksheets("triage").Range("A" & n & ":F" & n).Select
                Selection.ClearContents
            End If
        Next n
        'supprime les ligne vide (trier AZ) sur B
        Columns("A:F").Select
        Selection.AutoFilter
        ActiveWorkbook.Worksheets("triage").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("triage").AutoFilter.Sort.SortFields.Add2 Key:= _
            Range("B1:B10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("triage").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Selection.AutoFilter
    End Sub

  12. #12
    Membre habitué
    Femme Profil pro
    Administration
    Inscrit en
    Février 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : Canada

    Informations professionnelles :
    Activité : Administration
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2022
    Messages : 11
    Par défaut
    Sur quelle ligne je peux insérer un Application.DisplayAlerts pour ne pas avoir de message d’erreur

  13. #13
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    pour quelle erreur ?
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

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

Discussions similaires

  1. Ouverture classeur excell
    Par lejujudu59 dans le forum Visual C++
    Réponses: 2
    Dernier message: 04/09/2007, 12h18
  2. levée d'exception sur ouverture fichier excel
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/10/2006, 14h30
  3. [VBA-E]travail sur deux classeurs excel
    Par richou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 10h59
  4. Ouverture classeur excel en VBSCRIPT
    Par coeur74 dans le forum ASP
    Réponses: 6
    Dernier message: 20/01/2005, 15h53
  5. Ouverture classeur excel en VBSCRIPT
    Par coeur74 dans le forum ASP
    Réponses: 2
    Dernier message: 20/01/2005, 09h11

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