Copier une ligne vers un autre onglet sous condition

pj18

XLDnaute Nouveau
Bonjour,

Mon problème est similaire à celui-ci https://www.excel-downloads.com/threads/copier-ligne-dans-une-autre-feuille-sous-condition.165936/

Mais il demande un peu d'adptation :

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 évoluera.
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'ai pas mal essayé de bidouiller le code proposé sur l'autre post, sans succès.

j'espère que quelqu'un saura m'aider,
Je vous joins un fichier
Merci
 

Pièces jointes

  • test.xlsx
    10.8 KB · Affichages: 77
  • test.xlsx
    10.8 KB · Affichages: 50
  • test.xlsx
    10.8 KB · Affichages: 49

Modeste

XLDnaute Barbatruc
Re : Copier une ligne vers un autre onglet sous condition

Bonjour pj18,

Pourquoi pas avec de bonnes vieilles formules?
Une colonne supplémentaire en Feuil1 (je l'ai mise en A, parce qu'elle était vide, mais on peut la placer ailleurs et la masquer). Cette formule affiche simplement le n° de ligne si une des conditions est réalisée.
En Feuil2, une autre formule permet de récupérer les données ... à recopier à droite et vers le bas, autant que souhaité!

Si tu travailles uniquement sous XL 2010, on peut encore simifier un chouïa la seconde formule

... Le tout, si j'ai bien compris!?

[Edit:] Salut Gérard :)
 

Pièces jointes

  • test recopie (pj18).xlsx
    11.6 KB · Affichages: 149
Dernière édition:

natorp

XLDnaute Barbatruc
Re : Copier une ligne vers un autre onglet sous condition

Bjr pj18

En récupérant le code du fil cité :

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


En modifiant cette ligne :
Code:
  If tablo1(i, 9) Like "Paul" Or tablo1(i, 10) Like "Paul" Or tablo1(i, 9) Like "Pierre" Or tablo1(i, 10) Like "Pierre" Then
cela répond à cette question :
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.

Par contre, je ne sais pas comment adapter pour que la macro copie toutes les colonnes...

Cordialement, Gérard
 

pj18

XLDnaute Nouveau
Re : Copier une ligne vers un autre onglet sous condition

Merci pour vos réponses rapide.
J'ai choisi l'option sans macro car de base il n'y en avait pas dans mon fichier.
Un petit truc pour l'adapter :
=SI(LIGNES($1:1)<=NB(Feuil1!$BF$3:$BF$20);INDEX(Feuil1!B$3:B$20;PETITE.VALEUR(Feuil1!$BF$3:$BF$20;LIGNES($1:1))-2);"")

A la place du -2, mettre ligne(B1:BY) avec Y ligne d'entête ce qui évite des erreur si on insère une ligne au dessus.

Bonne journée !
 

Nemi

XLDnaute Nouveau
macro excel copie de la ligne si 1 dans colonne A

Bonjour,
J'ai un problème un peu similaire, dans mon fichier, j'aimerais dupliquer les lignes contenant 1 dans la colonne A. C'est à dire copier la ligne et l'insérer juste en dessous mais seulement pour les valeurs qui sont contenues dans les colonnes B C D E F G H I J K L M N; Ci-joint le fichier, les 442 ièmes premières lignes ont déjà été traitées manuellement
Merci d'avance si vous pouvez faire quelque chose pour moi.
Bonne journée
 

Pièces jointes

  • InventaireCoton_revEmilie.xlsx
    254.3 KB · Affichages: 57

Modeste

XLDnaute Barbatruc
Re : Copier une ligne vers un autre onglet sous condition

Bonjour/Bonsoir Nemi et bienvenue parmi nous, :)

De ce que j'ai cru comprendre, ta demande n'est pas vraiment similaire, puisque toi, tu dupliquerais certaines lignes dans la même feuille??
D'autre part, si on ne décale vers le bas que les données des colonnes de B à N ... qu'advient-il des données des colonnes suivantes?? Ou alors, il faut insérer une ligne entière et ne copier que les données de ces 13 colonnes?

Ce que tu veux faire (si j'ai bien compris!) ne peut l'être que par macro ... et tu ne mentionnes pas laquelle des deux solutions te "tirait l'œil"

Si tu repasses par ici, merci d'ajouter quelques infos complémentaires ...
 

Groshulk

XLDnaute Nouveau
Re : Copier une ligne vers un autre onglet sous condition

Merci pour vos réponses rapide.
J'ai choisi l'option sans macro car de base il n'y en avait pas dans mon fichier.
Un petit truc pour l'adapter :
=SI(LIGNES($1:1)<=NB(Feuil1!$BF$3:$BF$20);INDEX(Feuil1!B$3:B$20;PETITE.VALEUR(Feuil1!$BF$3:$BF$20;LIGNES($1:1))-2);"")

A la place du -2, mettre ligne(B1:BY) avec Y ligne d'entête ce qui évite des erreur si on insère une ligne au dessus.

Bonne journée !
Bonjour
Merci pour ce code qui des années plus tard marche encore et permet de ne pas avoir à coder du VBA
Petite question complémentaire: quand la ligne est reprise, Excel semble "traduire" les cellules vides en 0, y'a t'il moyen de bien garder des cellules vides pour la lisibilité
Merci de vos retours

G
 

Discussions similaires

Statistiques des forums

Discussions
314 626
Messages
2 111 297
Membres
111 093
dernier inscrit
Yvounet