MACRO VBA : Comptage lignes + valeur différente + copie

Bonjour à tous,

Tout d'abord ce forum est une vraie mine d'information merci beaucoup.

Je coinces sur une macro.

J'ai un tableau.

Je souhaiterai parcourir la première colonne qui est triée.

Je souhaiterai copier les lignes; qui ont une même valeur dans la première colonne; dans l'onglet suivant.

Ensuite ajouter, à la suite de ce block, X ligne avec en valeur dans la première case, la valeur commune.

X étant le nombre permettant d'avoir un multiple de 24 lignes commençant par cette valeur commune.

Idem pour le block d'après etc.

Je ne vois trop par qu'elle bout prendre le problème si vous avez des conseils.

Ma première approche était de ne pas procédé par copie et de venir insérer; a la suite du changement de valeur de cellule dans la colonne 1; des lignes vides; pour atteindre un multiple de 24; puis de mettre dans les cellules de la colonne 1; la valeur commune.

Je ne sais pas si je suis très clair, je vous prie de m'excuser.

Je vous joins un fichier qui explique plus visuellement ce que je cherche à faire.

Merci de votre aide, tout conseil, me sera d'une grande aide !

8modulo24.xlsm (20.69 Ko)

Bonsoir,

J'espère avoir bien compris ta demande.

Je te propose la solution par Macro en annexe.

Ce type de situation ne peut valablement être traité que par VBA

Il y a un petit Mode d'emploi dans le classeur.

Si question complémentaire n'hésites pas à me revenir

Merci de confirmer si cela répond à tes attentes.

Bon courage

Chris

Bonjour,

Une méthode simpliste !

Private Sub CommandButton1_Click()
    Dim v$, n%, i%, j%, k%
    n = Me.Cells(Rows.Count, 1).End(xlUp).Row
    Me.Range("A1:D" & n).Sort key1:=Me.Range("A1"), order1:=xlAscending, Header:=xlYes
    With Worksheets("Copie")
        .Range("A1").CurrentRegion.ClearContents
        .Range("A1").Resize(n, 4).Value = Me.Range("A1:D" & n).Value
        For i = n To 2 Step -1
            v = .Cells(i, 1): j = i
            Do While .Cells(j - 1, 1) = v
                j = j - 1
            Loop
            k = 24 - ((i - j + 1) Mod 24)
            .Rows(i + 1 & ":" & i + k).Insert
            .Range("A" & i + 1).Resize(k).Value = v
            i = j
        Next i
    End With
End Sub

mais efficace !

Cordialement.

22cad-modulo24.xlsm (23.79 Ko)

Top merci beaucoup, les 2 approches fonctionnent et merci pour les explications !

Encore merci !

Rechercher des sujets similaires à "macro vba comptage lignes valeur differente copie"