! Copier ligne dans une autre feuille sous condition !

  • Initiateur de la discussion Initiateur de la discussion rkan
  • 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 !

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)
 
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:
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 😉
 
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+
 
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 🙂
 
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 🙂
 
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

- 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
215
Réponses
4
Affichages
102
Réponses
5
Affichages
180
Réponses
9
Affichages
166
Retour