XL 2010 Copier coller ligne contenant texte

marlene65

XLDnaute Nouveau
Bonjour,

Je souhaiterais copier les lignes de la feuille "Export" contenant en colonne AB "RETARD" et les coller dans la feuille "Feuil2".
Sachant que les lignes de la feuille "Export" peuvent varier suivant le nombre de lignes de l'export.

Pour l'instant mon code:
Sub CopierColler()
Sheets("Export").Columns("A:AC").Copy Sheets("Feuil2").Range("A1") 'Sélection de la feuille et des cellules à copier dans la Feuil2 et à ranger dans la première cellule
End Sub

Seulement ce code ne fait que copier l'ensemble des cellules...

Merci de votre aide.
 

Pièces jointes

  • CARNET test v4.xlsm
    45.2 KB · Affichages: 38

DoubleZero

XLDnaute Barbatruc
Re : Copier coller ligne contenant texte

Bonjour, marlene65, le Forum,

Comme ceci ?

Code:
Sub Retard_lister()
    With Sheets("Feuil2")
        .Columns("a:ac").Clear
        .Columns("a:c").Insert
        .Range("a1") = "Mois": .Range("a2") = "RETARD"
        Sheets("Export").Columns("a:ac").AdvancedFilter Action:=xlFilterCopy, _
                     CriteriaRange:=.Range("a1:a2"), CopyToRange:=.Range("d1"), Unique:=False
        .Columns("a:c").Delete
        .Cells.EntireColumn.AutoFit
    End With
End Sub

A bientôt :)
 

Hieu

XLDnaute Impliqué
Re : Copier coller ligne contenant texte

Salut,

Voilà le codé modifié :
Code vba:
Sub CopierColler()
Sheets("Export").Range("A1:AC1").Copy Sheets("Feuil2").Range("A1")
i = 2
Do
If Range("ab" & i) = "RETARD" Then
Sheets("Export").Range("A" & i & ":AC" & i).Copy Sheets("Feuil2").Range("A" & i)
End If
i = i + 1
Loop Until IsEmpty(Range("a" & i))
End Sub





++
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier coller ligne contenant texte

Bonjour Marlene, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
Dim E As Worksheet 'déclare la variable E (onglet Export)
Dim F As Worksheet 'déclare la variable F (onglet Feuil2)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes) [type Long si tableau de plus de 32 000 lignes]
Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes)
Dim I As Integer 'déclare la variable I (Incrément) [type Long si tableau de plus de 32 000 lignes]
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément) [type  Long si tableau de plus de 32 000 lignes]
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set E = Worksheets("Export") 'définit l'onglet E
Set F = Worksheets("Feuil2") 'définit l'onglet F
TV = E.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV
NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs TV
F.Range("A1").CurrentRegion.ClearContents 'efface d'éventuelles anciennes données dans l'onglet F
F.Range("A1").Resize(1, NC).Value = Application.Index(TV, 1) 'renvoie dans A1 redimensionnée la première ligne du tableau des valeurs TV
K = 1 'initialise K
For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 28) = "RETARD" Then 'condition : si la donnée ligne I colonne 28 (=> colonne AB) est égale à "RETARD"
        ReDim Preserve TL(1 To NC, 1 To K) 'redimensionne le tableau des lignes TL (autant de lignes que TV a de colonnes, K colonnes)
        For J = 1 To NC 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
            TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la valeur en colonne J de TV (= transposition)
        Next J 'prochaine colonne de la boucle 2
        K = K + 1 'incrémente K (ajoute une nouvelle colonne au tableau des lignes TL)
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
'si K est supérieure à un (=> au moin sune iccurrence trouvée), renvoie dans A2 redimensionnée le tableau TL transposé
If K > 1 Then F.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End Sub

[Édition]
Ooops ! 'ach'ment en r'tard sur ce coup... Bonjour 00, Hieu...
 
Dernière édition:

marlene65

XLDnaute Nouveau
Re : Copier coller ligne contenant texte

Bonjour à vous deux et merci de vos réponse,

Doublezero, ton code marche parfaitement, merci beaucoup, seul problème je ne le comprend pas du tout :confused: Peux-tu me l'expliquer stp ?

Hieu, je comprend mieux ton code, par contre seulement la ligne d'entête se copie-colle, je n'ai pas les cellules "retard" peut-être ai-je oublier quelque chose ?

Merci à vous deux pour votre aide.
 

Hieu

XLDnaute Impliqué
Re : Copier coller ligne contenant texte

Yop Marlene,

C'est ma faute, j'lançais la macro depuis la feuille Export, du coup, pas vu le problème :

Code:
Sub CopierColler()
Sheets("Export").Range("A1:AC1").Copy Sheets("Feuil2").Range("A1")
i = 2
Do
If Sheets("Export").Range("ab" & i) = "RETARD" Then
Sheets("Export").Range("A" & i & ":AC" & i).Copy Sheets("Feuil2").Range("A" & i)
End If
i = i + 1
Loop Until IsEmpty(Sheets("Export").Range("a" & i))
End Sub
++
 

Discussions similaires

Réponses
7
Affichages
405

Statistiques des forums

Discussions
312 489
Messages
2 088 851
Membres
103 974
dernier inscrit
chmikha