! Copier ligne dans une autre feuille sous condition !

rkan

XLDnaute Nouveau
Bonjour,

contexte : j'ai un tableau en feuille 1 avec 2 colonnes et X lignes (lignes qui augmenteront avec le temps).

le problème : A chaque fois que je trouve "BDC" dans la colonne B de mon tableau en Feuille 1 je voudrais copier la ligne correspondante sur la feuille 2 à partir de la ligne 2.

j'ai bien essayé avec les fonction SI, ESTNUM, et TROUVE mais je galère,

Si quelqu'un a une idée de code je suis preneur,

Merci d'avance.

(ps : niveau en code pas très bon)
 

job75

XLDnaute Barbatruc
Re : ! Copier ligne dans une autre feuille sous condition !

Bonjour rkan,

Vous pouvez utiliser cette macro :

Code:
Sub Transfert()
Dim tablo1, i&, tablo2(), n&
tablo1 = Sheets("Feuil1").Range("A1:B" & Sheets("Feuil1").[A65536].End(xlUp).Row)
For i = 1 To UBound(tablo1)
  If tablo1(i, 2) Like "*BDC*" Then
    ReDim Preserve tablo2(1, n)
    tablo2(0, n) = tablo1(i, 1)
    tablo2(1, n) = tablo1(i, 2)
    n = n + 1
  End If
Next
If n Then
  Sheets("Feuil2").[A2:B65536].ClearContents
  Sheets("Feuil2").[A2].Resize(n, 2) = Application.Transpose(tablo2)
End If
End Sub
L'utilisation de tableaux réduit beaucoup la durée d'exécution.

Edit : si vous souhaitez activer Feuil2, écrivez plutôt à la fin :

Code:
If n Then
  With Sheets("Feuil2")
    .[A2:B65536].ClearContents
    .[A2].Resize(n, 2) = Application.Transpose(tablo2)
    .Activate
  End With
End If
A+
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : ! Copier ligne dans une autre feuille sous condition !

Bonjour rkan,

Comment le ferais-tu manuellement ?
Moi je ferais comme ça :
1) J'effacerais tout le contenu de la feuille2
2) Je ferais un filtre automatique sur la feuille1 pour n'afficher que les lignes avec BCD de la feuille1
3) Je copierais tous les résultats de la feuille1 à la feuille 2
4) j'enlèverais le filtre automatique de la feuille1

Si tu enregistres une macro qui fait ça, tu auras déjà le plus gros du code, il ne restera plus que quelques modifications à faire pour tenir compte des X lignes
Essaye d'enregistrer la macro, postes nous le code généré et on pourra te guider pour les dernières modifications

Edit : Bing, bonjour job ;)
 

job75

XLDnaute Barbatruc
Re : ! Copier ligne dans une autre feuille sous condition !

Re, salut tototiti :)

Puisque tototiti parle de filtre automatique, voici une macro qui l'utilise :

Code:
Sub TransfertFiltre()
Dim plage As Range
Application.ScreenUpdating = False
With Sheets("Feuil1")
  .AutoFilterMode = False
  .[1:1].Insert 'nécessaire si pas de titres
  Set plage = .Range("A1:B" & .[A65536].End(xlUp).Row)
  plage.AutoFilter 2, "*BDC*"
  With Sheets("Feuil2")
    .[A2:B65536].Clear
    plage.SpecialCells(xlCellTypeVisible).Copy .[A2]
    .[A2:B2].Delete xlUp
    .Activate 'facultatif
  End With
  .[1:1].Delete
End With
End Sub
C'est sans doute plus rapide, mais il faudrait comparer les 2 méthodes sur de grands tableaux.

A+
 

pj18

XLDnaute Nouveau
Re : ! Copier ligne dans une autre feuille sous condition !

Bonjour,

Désolé de ré-ouvrir ce vieux post mais mon problème étant très proche c'est le plus simple.
J'ai essayé de me plonger dans la code mais je ne connais pas assez bien la syntaxe pour le comprendre.

Je voudrais adapter le premier code, sachant que mon tableau de base contient 46 colonnes et que mon critère est en colonne 10
Il faudrait que les lignes soient copiées à partir de la ligne 3 sur la nouvelle feuille.

J'espère que quelqu'un pourra m'aider,
Merci :)
 

pj18

XLDnaute Nouveau
Re : ! Copier ligne dans une autre feuille sous condition !

Je sais bien, mais je ne veux pas vous embêter à changer ce que je sais changer car ce n'est pas exactement la même configuration. Je sais que le premier code posté par job75 devrait fonctionner en adaptant (2-> 46 colonnes, critère en colonne 10)
Mais je poste un petit fichier demain matin si c'est plus pratique :)
 

pj18

XLDnaute Nouveau
Re : ! Copier ligne dans une autre feuille sous condition !

Je vous joins donc un fichier simplifié.
En feuil1 mon tableau de base et en feuil2 le résultat voulu, en sachant que mon tableau de base a en réalité beaucoup plus de lignes et évolue.
En gros la macro doit copier la ligne dès qu'il y a Pierre ou Paul en colonne I ou J mais il ne faut pas qu'elle copie deux fois si il y a une valeur sur les deux colonnes.

j'espère que quelqu'un saura m'aider,
Merci :)
 

Pièces jointes

  • test.xlsx
    10.8 KB · Affichages: 334
  • test.xlsx
    10.8 KB · Affichages: 270
  • test.xlsx
    10.8 KB · Affichages: 369

Discussions similaires

Réponses
5
Affichages
148

Statistiques des forums

Discussions
312 329
Messages
2 087 332
Membres
103 519
dernier inscrit
Thomas_grc11