Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Couper/coller d'un tableau à un autre via une valeur

  • Initiateur de la discussion Initiateur de la discussion glm
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

glm

XLDnaute Occasionnel
Bonjour à tous et toutes
Je recherche à couper une plage du tableau2 du fait de la valeur de la colonne C = "F" (dans feuille "liste complète") puis insérer dans le tableau9 sur la dernière ligne (dans la feuille "Fait")
Merci
voici le code:
For i = [A5000].End(xlUp).Row To 10 Step -1
If Left(Cells(i, 3), 3) = "F" Then
Set PLgL1 = Rows(i).Copy
Sheets("Fait").Select
Set PLgL2 = ActiveSheet.ListObjects("Tableau9").ListRows.Add.Range
PLgL1.Paste
PLgL1.Delete
End If
Next i
 

Pièces jointes

Re : Couper/coller d'un tableau à un autre via une valeur

Bonjour, je n'ai pas regardé l'intégralité du code, le début m'intrigue..

If Left(Cells(i, 3), 3) = "F" Then
cette expression ne sera jamais vrai (3 caractères > 1 caractère)
il faudrait plutôt essayer left(cells(i,3),1) = "F"
 
Dernière modification par un modérateur:
Re : Couper/coller d'un tableau à un autre via une valeur

Bonsoir glm, CPK,

Une remarque préliminaire : la ligne 232 en 1ère feuille et la ligne 594 en 3ème feuille sont vides.

Elles appartiennent aux tableaux Excel, supprimez-les pour être cohérent.

Ensuite vous pouvez utiliser cette macro :

Code:
Sub Sup_Lig()
'Feuil1 et Feuil3 sont les CodeNames des feuilles
Dim i As Long, P As Range
Application.ScreenUpdating = False
Feuil1.Unprotect 'est-ce bien nécessaire ?
With Feuil1.ListObjects(1).Range
  For i = .Rows.Count To 2 Step -1
    If .Cells(i, 3) = "F" Then
      Set P = .Rows(i)
      With Feuil3.ListObjects(1).Range
        .Rows(.Rows.Count + 1) = P.Value 'copie les valeurs
      End With
      P.Delete
    End If
  Next
End With
Feuil1.Protect 'est-ce bien nécessaire ?
Feuil3.Activate 'facultatif
End Sub
Edit : s'il y a un grand nombre de "F", le couper-coller n'est pas une bonne méthode car c'est très lent.

Il faudrait utiliser des tableaux VBA, beaucoup plus rapides.

Bonne soirée.
 
Dernière édition:
Re : Couper/coller d'un tableau à un autre via une valeur

Bonjour,

On aura remarqué que les lignes se créent en Feuil3 dans l'ordre inverse de celles en Feuil1, c'est normal.

Si l'on veut qu'elles se créent dans le même ordre utiliser :

Code:
Sub Sup_Lig()
'Feuil1 et Feuil3 sont les CodeNames des feuilles
Dim lig As Long, i As Long, P As Range
Application.ScreenUpdating = False
Feuil1.Unprotect 'est-ce bien nécessaire ?
lig = Feuil3.ListObjects(1).Range.Rows.Count + 1 'mémorisation
With Feuil1.ListObjects(1).Range
  For i = .Rows.Count To 2 Step -1
    If .Cells(i, 3) = "F" Then
      Set P = .Rows(i)
      With Feuil3.ListObjects(1).Range
        .Rows(lig).Insert 'insertion de ligne
        .Rows(lig) = P.Value 'copie les valeurs
      End With
      P.Delete
    End If
  Next
End With
Feuil1.Protect 'est-ce bien nécessaire ?
Feuil3.Activate 'facultatif
End Sub
C'est encore moins rapide puisqu'on insère des lignes.

A+
 
Dernière édition:
Re : Couper/coller d'un tableau à un autre via une valeur

Re,

Notez qu'on peut toujours utiliser la macro du post #5 si à la fin on ajoute un tri de Feuil3 :

Code:
Sub Sup_Lig()
'Feuil1 et Feuil3 sont les CodeNames des feuilles
Dim i As Long, P As Range
Application.ScreenUpdating = False
Feuil1.Unprotect 'est-ce bien nécessaire ?
With Feuil1.ListObjects(1).Range
  For i = .Rows.Count To 2 Step -1
    If .Cells(i, 3) = "F" Then
      Set P = .Rows(i)
      With Feuil3.ListObjects(1).Range
        .Rows(.Rows.Count + 1) = P.Value 'copie les valeurs
      End With
      P.Delete
    End If
  Next
End With
Feuil1.Protect 'est-ce bien nécessaire ?
With Feuil3.ListObjects(1).Range
  .Sort .Columns(2), xlAscending, Header:=xlYes 'tri croissant sur les dates
End With
Feuil3.Activate 'facultatif
End Sub
Cela dit dans votre fichier en colonne B il n'y a pas toujours des dates...

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
832
Réponses
15
Affichages
638
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…