XL 2010 Ajout ligne si condition

Kael_88

XLDnaute Occasionnel
Le forum,

Mon problème aujourd'hui, serait qu' après l' importation de mes données dans la colonne E,
il recherche la valeur se terminant par "ZZ" ou "TT" et que sous cette valeur, il m'insert une copie de cette dernière sans ces terminaison, et mette une "*" dans la colonne A.

Cordialement
 

Pièces jointes

  • ligne sans.xlsm
    8.6 KB · Affichages: 28

job75

XLDnaute Barbatruc
Bonjour Kael_88,

Voyez cette macro dans le fichier joint :
Code:
Sub ZZ_TT()
Dim ncol%, t, rest(), i&, n&, j%
With [A2].CurrentRegion 'adapter éventuellement
    ncol = IIf(.Columns.Count < 5, 5, .Columns.Count)
    t = .Resize(, ncol) 'matrice, plus rapide
    ReDim rest(1 To UBound(t) - Application.CountIf([A:A], "~*") + Application.CountIf([E:E], "*ZZ") + Application.CountIf([E:E], "*TT"), 1 To ncol)
    For i = 2 To UBound(t)
        If t(i, 1) <> "*" Then 'la ligne avec "*" est ignorée
            n = n + 1
            For j = 1 To ncol: rest(n, j) = t(i, j): Next j
            If Right(t(i, 5), 2) = "ZZ" Or Right(t(i, 5), 2) = "TT" Then
                n = n + 1
                For j = 2 To ncol: rest(n, j) = t(i, j): Next j
                rest(n, 1) = "*"
                rest(n, 5) = Left(t(i, 5), Len(t(i, 5)) - 2)
            End If
        End If
    Next i
    '---restitution---
    If .Parent.FilterMode Then .Parent.ShowAllData 'si la feuille est filtrée
    If n Then .Offset(1).Resize(n, ncol) = rest
    .Offset(n + 1).Resize(Rows.Count - n - .Row, ncol).ClearContents 'RAZ sous le tableau
    With .Parent.UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
A+
 

Pièces jointes

  • ligne sans(1).xlsm
    24.1 KB · Affichages: 24

Kael_88

XLDnaute Occasionnel
Le forum, @job75

Désolé du retard, déplacement oblige.
Comme toujours, merci Job75 pour ton efficacité, c'est exactement ce qui était demandé.

Comme une solution appelle un nouveau problème, lorsque la ligne est créer avec l'asterix mis en colonne A,
si je reclic sur le bouton il recréer une ligne, d'ou ma question, peut on l'éviter ?

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87