Bonjour le fil, bonjour le forum,
Oui Pedro, c'est ce que je disais ici....
Re,
Je crains que cette autre méthode ne sois pas compatible avec autant de lignes. Peut-être y arriveras-tu en découpant ton tableau en plusieurs ou alors avec la première méthode qui ne souffre pas de limite mais qui est très lente. Je ne sais pas quoi te dire d'autre...
J'attendais un retour de Marjow pour lui proposer un code avec une découpe du tableau mais il reste muet comme un président de la république face à un gilet jaune...
Pourquoi pas ça :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Long 'déclare la variable I (Incrément)
Dim LI As Long 'déclare la variable LI (LIgne)
Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row
TV = OS.Range("A1:H" & 50000) 'définit le tableau des valeurs TV
OD.Range("A1").Resize(1, 7).Value = Application.Index(TV, 1) 'renvoie dans A1 redimensionnée la première ligne du tableau des valeurs TV
LI = 2 'initialise la variable LI
For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs TV
'si la valeur de la donnée ligne I colonne 7 (=> colonne G) est supérieure à 480, renvoie dans la cellule ligne LI, colonne 1 la ligne I du tableau des valeurs TV
If CDbl(TV(I, 7)) > 480 Then OD.Cells(LI, 1).Resize(1, 7) = Application.Index(TV, I): LI = LI + 1
Next I 'prochaine ligne de la boucle
TV = OS.Range("A50001:H" & DL)
For I = 1 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs TV
'si la valeur de la donnée ligne I colonne 7 (=> colonne G) est supérieure à 480, renvoie dans la cellule ligne LI, colonne 1 la ligne I du tableau des valeurs TV
If CDbl(TV(I, 7)) > 480 Then OD.Cells(LI, 1).Resize(1, 7) = Application.Index(TV, I): LI = LI + 1
Next I 'prochaine ligne de la boucle
End Sub