Copie d'une ligne dans un autre onglet si une colonne est complété

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 !

association

XLDnaute Nouveau
Bonjour à tous,

Mon problème n'est pas très compliqué, mais c'est surtout que j'ai du mal à le formuler et donc savoir ou chercher pour trouver une réponse (en gros, je patauge).

Pour faire simple, j'ai un onglet 'BASE' et j'aimerai :
- que lorsque la colonne 'D' contient une information, la ligne ce copie dans l'onglet 1,
- que lorsque la colonne 'E' contient une information, la ligne ce copie dans l'onglet 2,
- .... quelque soit le nombre de colonnes

Je sais que c'est un truc tout simple mais j'aurai besoin d'un peu d'aide.
Ci-joint un fichier exemple.

Merci d'avance
 

Pièces jointes

Re : Copie d'une ligne dans un autre onglet si une colonne est complété

Re,

Ah mais avec un test supplémentaire dans la boucle For j c'est bien plus rapide :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim col As Variant, P As Range, tablo, ub&, i&, dat, x$, j&
With Sheets("BASE")
  col = Application.Match(Sh.Name, .Rows(3), 0)
  If IsError(col) Then Exit Sub
  On Error Resume Next: .ShowAllData: On Error GoTo 0
  Set P = .Rows("3:" & .Range("A" & Rows.Count).End(xlUp).Row)
End With
Application.ScreenUpdating = False
P.Sort P(1), xlAscending, Header:=xlYes 'tri sur les dates
tablo = P.Resize(, col) 'matrice, plus rapide
ub = UBound(tablo)
Set P = Sh.Range("A3:E" & Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row)
P.Sort P(1), xlAscending, Header:=xlYes 'tri sur les dates
For i = P.Rows.Count To 2 Step -1
  dat = P(i, 1): x = P(i, 2) & P(i, 3) & P(i, 4)
  For j = ub To 2 Step -1
    If tablo(j, 1) < dat Then Exit For
    If tablo(j, 1) = dat Then If x = tablo(j, 2) & tablo(j, 3) & tablo(j, col) Then GoTo 1
  Next j
  P.Rows(i).Delete xlUp 'suppression de la ligne non trouvée
1 Next i
End Sub
Fichier (5).

Activation de "MADAME 2" avec 1000 lignes en feuille "BASE" => 0,26 seconde.

Activation de "MADAME 2" avec 5000 lignes en feuille "BASE" => 5,9 secondes.

A+
 

Pièces jointes

Re : Copie d'une ligne dans un autre onglet si une colonne est complétée

Salut à tous,

Je ne reprend le temps que maintenant de me repencher sur ce sujet. J'ai fait quelques tests grandeur nature du fichier de Modeste, et il y a un petit bug (que j'ai peut etre provoqué par méconnaissance). J'ai les lignes 2,3,4 de l'onglet BASE qui n’apparaissent pas dans les résultats des onglets. J'ai fait plusieurs bidouillages mais vue que c'est de pire en pire, je me permet de vous renvoyer le fichier pour qu'un "expert" puisse solutionner 😉. Je me contenterai de finir la mise en page et de remplir (chacun son niveau 😉

Merci d'avance
 

Pièces jointes

Re : Copie d'une ligne dans un autre onglet si une colonne est complété

Bonsoir,

Dans les feuilles 'A', 'B', etc. tu as, en ligne 11 (cellules bleues et mauves, même combat!), en fin de formule, LIGNES($5:5) (tu obtiens bien, de cette manière, le plus petit n° de ligne, au rang 1).
À la ligne suivante, ce bout de formule est devenu: LIGNES($5:9) 😱

Recopie chaque fois les formules de la première ligne vers le bas, ça devrait rouler!
 
- 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

  • Question Question
Microsoft 365 MFC dans tableau
Réponses
2
Affichages
224
Réponses
4
Affichages
163
Retour