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

VBA Discussion :

Insérer des lignes figées sous condition


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Insérer des lignes figées sous condition
    Bonjour,
    N'étant pas expert vba, j'ai besoin d'aide.
    Je souhaite sur ma feuille 1 copier les lignes 9 à 12 et les coller à chaque fois qu'au sein de la colonne B à partir de la ligne 13 j'ai une valeur différente à celle du dessous.
    Sachant que mon résultat à partir de la ligne 13 n'est pas figé (seul les lignes 1 à 12 reste fixent).

    J'ai cherché sur les forums je n'ai pas trouvé la solution.
    La macro ci-dessous permet d'insérer des lignes. Mais pas les lignes 9 à 12.
    L'autre problème c'est qu'elle démarre en au de la colonne au lieu de la ligne 13.

    1.For Each elm In ActiveWorkbook.ActiveSheet.UsedRange.Columns("B").Cells
    2. If elm.Value <> "" And elm.Value <> elm.Offset(1).Value Then
    3. elm.Offset(1).EntireRow.Insert xlDown
    4. End If
    5. Next elm
    6. Rows("13:13").Select
    7. Selection.Delete Shift:=xlUp

    J'ai intégré une fichier PJ afin d'illustrer mon besoin. En feuille 1 la présentation des données de départ et en feuil2 le résultat attendu.
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    ce code copie ce que vous voulez dans la feuil3

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub test()
     
        With Sheets("Feuil3").Cells
            .ClearContents
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlNone
            .Borders(xlEdgeTop).LineStyle = xlNone
            .Borders(xlEdgeBottom).LineStyle = xlNone
            .Borders(xlEdgeRight).LineStyle = xlNone
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
            Range("A1").Select
        End With
     
        k = 12
     
        With Sheets("Feuil1")
            .Range("A9:N12").Copy Destination:=Sheets("Feuil3").Range("A9")
     
            For i = 13 To .Range("A" & .Rows.Count).End(xlUp).Row
                k = k + 1
                If .Cells(i, 2).Value <> .Cells(i + 1, 2).Value Then
                    .Range("A" & i & ":N" & i).Copy Destination:=Sheets("Feuil3").Range("A" & k)
                    k = k + 1
                    .Range("A9:N12").Copy Destination:=Sheets("Feuil3").Range("A" & k)
     
                    k = k + 3
     
                Else
                    .Range("A" & i & ":N" & i).Copy Destination:=Sheets("Feuil3").Range("A" & k)
                End If
     
            Next
        End With
     
    MsgBox "fin"
     
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci pour ce retour.
    Est-ce qu'il est possible que tout s'exécute sur le feuil1 sans qu'à la fin on est une dernière copie des lignes 9 à 12 qui n'a pas lieu d’être puisqu'il n'y a plus de donnée à présenter ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    quand la feuil3 est fini d'être généré
    il suffit de copier la feuil3 dans feuil1
    puis supprimé le contenu de la feuil3

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub test()
     
        With Sheets("Feuil3").Cells
            .ClearContents
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlNone
            .Borders(xlEdgeTop).LineStyle = xlNone
            .Borders(xlEdgeBottom).LineStyle = xlNone
            .Borders(xlEdgeRight).LineStyle = xlNone
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
            Range("A1").Select
        End With
     
        k = 12
     
        With Sheets("Feuil1")
            .Range("A9:N12").Copy Destination:=Sheets("Feuil3").Range("A9")
     
            For i = 13 To .Range("A" & .Rows.Count).End(xlUp).Row
                k = k + 1
                If .Cells(i, 2).Value <> .Cells(i + 1, 2).Value Then
                    .Range("A" & i & ":N" & i).Copy Destination:=Sheets("Feuil3").Range("A" & k)
                    k = k + 1
                    If i <> .Range("A" & .Rows.Count).End(xlUp).Row Then
                        .Range("A9:N12").Copy Destination:=Sheets("Feuil3").Range("A" & k)
     
                        k = k + 3
                    End If
     
                Else
                    .Range("A" & i & ":N" & i).Copy Destination:=Sheets("Feuil3").Range("A" & k)
                End If
     
            Next
        End With
     
        With Sheets("Feuil1").Cells
            .ClearContents
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlNone
            .Borders(xlEdgeTop).LineStyle = xlNone
            .Borders(xlEdgeBottom).LineStyle = xlNone
            .Borders(xlEdgeRight).LineStyle = xlNone
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
            Range("A1").Select
        End With
     
        Sheets("Feuil3").Cells.Copy Destination:=Sheets("Feuil1").Range("A1")
        Sheets("Feuil3").Cells.Delete
     
    MsgBox "fin"
     
    End Sub

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Ok merci

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 18/02/2015, 16h48
  2. Insérer des lignes dans une table efficacement
    Par newbie82 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/07/2007, 17h01
  3. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  4. enregistrer lignes fichier sous condition
    Par makohsarah dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2006, 15h46
  5. Insérer des lignes dans une StringGrid
    Par da_latifa dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2005, 12h45

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