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

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

  • Exemple 2014.xlsx
    16.3 KB · Affichages: 49

job75

XLDnaute Barbatruc
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

  • Exemple 2014(5).xls
    72.5 KB · Affichages: 43

association

XLDnaute Nouveau
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

  • Frais bénévoles Fichier Base Bug.xlsx
    50.5 KB · Affichages: 30

Modeste

XLDnaute Barbatruc
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) :eek:

Recopie chaque fois les formules de la première ligne vers le bas, ça devrait rouler!
 

association

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

Hé oui... Evidemment
:eek:

Encore merci à tous pour votre aide et j’espère que ce fichier sera aussi utile à d'autres!!!

Bonne journée à tous

ps je le reposte sans la boulette
 

Pièces jointes

  • Frais bénévoles Fichier Base.xlsx
    50.5 KB · Affichages: 22

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson