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 :

Appliquer une macro uniquement aux lignes visibles


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Appliquer une macro uniquement aux lignes visibles
    Bonjour je suis étudiante en thèse et je tente vainement d'utiliser exel pour travailler sur mes données, pas t(oujours évident quand on va au delà du copier coller...
    Je suis complètement perdue avec la programmation, j'ai donc utilisé une macro en ligne qui me permette d'insérer une ligne vierge entre chaque ligne existante.
    Mais je voudrais appliquer cela uniquement pour les lignes visibles après avoir effectué un filtre ! Or la macro se fait sur toutes les lignes....

    Si quelqu'un peut lire ce message et m'éclairer je serais ravie de ne pas avoir perdue toutes ces heures de recherche...
    merci beaucoup à tous !

    voici ma macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub InsérerUneLigneSurDeux()
    Const lideb = 2
    Const NF = "Feuil1"
    Dim li As Long, lifin As Long
    With Sheets(NF)
    If Rows(lideb).Hidden = False Then
    lifin = .Range("A65536").End(xlUp).Row
    For li = lifin To lideb Step -1
    Rows(li).Insert
    Next li
    End If
    End With
    End Sub

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    à tester et adapter, sans filtre
    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 InsérerUneLigneSurDeux()
    Const lideb = 2
    Const NF = "Feuil1"
    Dim li As Long, lifin As Long
    With Sheets(NF) 'si on With le point doit être utilisé ci-dessous
      lifin = .Range("A" & .Rows.Count).End(xlUp).Row
      If lifin >= 2 Then
        For li = lifin To lideb Step -1
          If .Range("A" & li) = 2 Then 'remplace le critère, à adapter
            .Rows(li).Insert
          End If
        Next li
      End If
    End With
    End Sub

  3. #3
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour Dom,

    Tout d'abord un grand merci pour votre réponse !
    C'est vraiment très gentil de votre part de prendre le temps de réfléchir à mon problème...
    Alors j'ai essayé la macro que vous m'avez envoyé, mais rien ne se passe...
    Mais peut être n'est je pas été assez précise dans mon précédemment mail.

    J'ai un grand nombre de lignes de commandes, et j'effectue de nombreux filtres sur ces lignes.
    J'aimerai avec cette macro pouvoir insérer une ligne blanche après certaines lignes que j'ai préalblement filtrées.
    Ex : L1 L2 L3 fichier de base
    je filtre L1 et L2, et je veux insérer des lignes blanches après L1 et L2, mais pas après L3 qui n'est pas visible quand je lance la macro.

    Est ce possible ?
    Aurais fait une mauvaise manipulation ?

    Encore merci !!

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    si j'ai compris, le filtre est déjà appliqué
    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 InsérerUneLigneSurDeux()
    Const lideb = 2
    Const NF = "Feuil1"
    Dim li As Long, lifin As Long
    With Sheets(NF) 'si on With le point doit être utilisé ci-dessous
      lifin = .Range("A" & .Rows.Count).End(xlUp).Row
      If lifin >= 2 Then
        For li = lifin To lideb Step -1
          If .Rows(li).EntireRow.Hidden = True Then
            .Rows(li + 1).Insert
          End If
        Next li
      End If
    End With
    End Sub

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je rectifie cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    If .Rows(li).EntireRow.Hidden = False Then
    ...

  6. #6
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Cette fois ci ça tourne ! Mais j'ai encore une fois des lignes vierges ajoutées sous TOUTES les lignes de ma feuille, et non pas les quelques lignes visibles après filtre et lorsque je souhaite appliquer le filtre.
    En effet le filtre est déjà présent et je voudrais ne toucher que ces lignes filtrées avec la macro...Puis pouvoir retirer le filtre

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Mais j'ai encore une fois des lignes vierges ajoutées sous TOUTES les lignes
    enlèves le filtre, supprimes les (par macro, éventuellement), refiltres et réessayes :
    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
    Sub InsérerUneLigneSurDeux()
    Const lideb = 2
    Const NF = "Feuil1"
    Dim li As Long, lifin As Long
    With Sheets(NF) 'si on With le point doit être utilisé ci-dessous
     
      lifin = .Range("A" & .Rows.Count).End(xlUp).Row
      If lifin >= 2 Then
        For li = lifin To lideb Step -1
          If .Rows(li).EntireRow.Hidden = False Then
            .Rows(li + 1).Insert
          End If
        Next li
      End If
      .AutoFilterMode = False
    End With
    End Sub

  8. #8
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut MERCI !!!
    Un très très grand merci !!!
    C'est parfait !!!!! Ca marche du tonnerre, je suis ravie !!

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

Discussions similaires

  1. Appliquer une macro uniquement aux lignes visibles
    Par Mickrey dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/10/2007, 14h26
  2. appliquer une macro a une plage de cellule variable
    Par johndeuf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/11/2006, 16h18
  3. [VBA-E] Imprimer uniquement les lignes visibles
    Par Sebastien_INR59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/06/2006, 16h23
  4. Appliquer une macro à une image
    Par erwan99 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/04/2006, 14h50
  5. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/2006, 16h20

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