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 :

Insertion auto de lignes en fonction d'un critère


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut Insertion auto de lignes en fonction d'un critère
    Bonjour à toutes et à tous,

    Je vous contacte parce que je galère un peu.

    j'ai une liste de produits référencés par les groupes de lettre comme: "AN" , "CD" etc
    donc dans la colonne A, il y a ces codes produit. Lorsque le trouve, dans cette colonne deux fois de suite (l'un sous l'autre) le produit "AN", je dois insérer une ligne au dessus du premier. il faut savoir que cette liste comporte 19857 lignes!...
    est-il possible de faire une macro en ce sens?
    je joins un exemple de la liste où j'ai mis en gras les cellules consernées et une fonction que j'ai créé en colonne "K" qui m'ndique où je dois insérer une ligne vide !....
    Merci par avance.
    lucky32
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Une solution
    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
    Option Explicit
    Sub Test()
    Dim LigneDebut As Byte
    Dim DerLigne As Long, i As Long
    Dim Flag As Boolean
        Application.ScreenUpdating = False
        With Worksheets("StatMoisIP201207")
            LigneDebut = 5
            DerLigne = .Range("A" & .Rows.Count).End(xlUp).Row
            For i = DerLigne To LigneDebut Step -1
                If .Range("A" & i) = "AN" Then
                    If Flag = True Then
                        .Range("A" & i).EntireRow.Insert Shift:=xlShiftDown
                        Flag = False
                    Else
                        Flag = True
                    End If
                Else
                    Flag = False
                End If
            Next i
        End With
        Application.ScreenUpdating = True
    End Sub
    Cordialement.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Merci gFZT82, le code est parfait
    amicalement
    lucky32

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Si tu veux insérer une ligne en dessus de chaque bloc de plus de 2 "AN" en colonne A (et pas seulement 2)
    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
    Sub Test()
    Dim DerLigne As Long, i As Long
    Dim LigneDebut As Byte
    Dim k As Integer
     
    Application.ScreenUpdating = False
    With Worksheets("StatMoisIP201207")
        LigneDebut = 4
        DerLigne = .Range("A" & .Rows.Count).End(xlUp).Row
        For i = DerLigne To LigneDebut Step -1
            If .Range("A" & i) = "AN" Then
                k = k + 1
            Else
                If k > 1 Then .Rows(i + 1).Insert Shift:=xlShiftDown
                k = 0
            End If
        Next i
    End With
    Application.ScreenUpdating = True
    End Sub

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Bonsoir,
    Merci aussi à mercatorg pour cette macro qui fonctionne aussi super bien
    Trés amicalement.
    Lucky32

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

Discussions similaires

  1. Insertion auto des lignes avec formule
    Par maximob dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 30/01/2015, 09h10
  2. [XL-2010] Macro insertion de nouvelles lignes en fonction des modalités
    Par Rageo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2014, 20h07
  3. [Toutes versions] Insertion d'une ligne en fonction de deux critères
    Par Oliiv dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/10/2012, 23h55
  4. Insertion auto de lignes / Excel
    Par tekpaf dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2012, 21h21
  5. Recopier des lignes en fonction d'un critère
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/09/2009, 08h17

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